@veloceapps/sdk 7.0.2-5 → 7.0.2-6
Sign up to get free protection for your applications and to get access to all the features.
- package/cms/vendor-map.d.ts +2 -0
- package/core/utils/line-item.utils.d.ts +2 -0
- package/esm2020/core/utils/line-item.utils.mjs +22 -10
- package/esm2020/src/components/header/header.component.mjs +11 -3
- package/fesm2015/veloceapps-sdk-core.mjs +24 -10
- package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
- package/fesm2015/veloceapps-sdk.mjs +11 -2
- package/fesm2015/veloceapps-sdk.mjs.map +1 -1
- package/fesm2020/veloceapps-sdk-core.mjs +24 -10
- package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
- package/fesm2020/veloceapps-sdk.mjs +10 -2
- package/fesm2020/veloceapps-sdk.mjs.map +1 -1
- package/package.json +1 -1
package/cms/vendor-map.d.ts
CHANGED
@@ -68,6 +68,8 @@ export declare const vendorMap: {
|
|
68
68
|
list: number;
|
69
69
|
};
|
70
70
|
generateModifiedAssetsMap: (lineItems: import("@veloceapps/core").LineItem[]) => Record<string, boolean>;
|
71
|
+
getOriginParent: (lineItems: import("@veloceapps/core").LineItem[], currentLineItem: import("@veloceapps/core").LineItem) => import("@veloceapps/core").LineItem | undefined;
|
72
|
+
isLineItemModified: (lineItem: import("@veloceapps/core").LineItem) => boolean;
|
71
73
|
multiplyLineItems: (lineItem: import("@veloceapps/core").LineItem, qty: number, split: boolean) => import("@veloceapps/core").LineItem[];
|
72
74
|
ConfigurationService: typeof ConfigurationService;
|
73
75
|
QuoteDraftService: typeof QuoteDraftService;
|
@@ -27,4 +27,6 @@ export declare const getRecommendedPrices: (portDomain: PortDomain, type: string
|
|
27
27
|
list: number;
|
28
28
|
};
|
29
29
|
export declare const generateModifiedAssetsMap: (lineItems: LineItem[]) => Record<string, boolean>;
|
30
|
+
export declare const getOriginParent: (lineItems: LineItem[], currentLineItem: LineItem) => LineItem | undefined;
|
31
|
+
export declare const isLineItemModified: (lineItem: LineItem) => boolean;
|
30
32
|
export declare const multiplyLineItems: (lineItem: LineItem, qty: number, split: boolean) => LineItem[];
|
@@ -127,19 +127,31 @@ export const getRecommendedPrices = (portDomain, type) => {
|
|
127
127
|
};
|
128
128
|
export const generateModifiedAssetsMap = (lineItems) => {
|
129
129
|
return lineItems.reduce((acc, li) => {
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
}
|
130
|
+
const isModified = isLineItemModified(li);
|
131
|
+
if (!isModified) {
|
132
|
+
return acc;
|
133
|
+
}
|
134
|
+
const target = getOriginParent(lineItems, li);
|
135
|
+
const id = target?.assetId ?? target?.openOrderLineItemId;
|
136
|
+
if (id) {
|
137
|
+
acc[id] = true;
|
139
138
|
}
|
140
139
|
return acc;
|
141
140
|
}, {});
|
142
141
|
};
|
142
|
+
export const getOriginParent = (lineItems, currentLineItem) => {
|
143
|
+
let target = currentLineItem;
|
144
|
+
while (target && target.rampInstanceId) {
|
145
|
+
target = lineItems.find(sub => sub.id === currentLineItem.rampInstanceId);
|
146
|
+
}
|
147
|
+
return target;
|
148
|
+
};
|
149
|
+
export const isLineItemModified = (lineItem) => {
|
150
|
+
if (lineItem.status === 'PENDING' && lineItem.actionCode === 'EXIST') {
|
151
|
+
return false;
|
152
|
+
}
|
153
|
+
return lineItem.status !== 'EXIST';
|
154
|
+
};
|
143
155
|
export const multiplyLineItems = (lineItem, qty, split) => {
|
144
156
|
if (split) {
|
145
157
|
const unifyIds = (lineItem) => ({
|
@@ -158,4 +170,4 @@ export const multiplyLineItems = (lineItem, qty, split) => {
|
|
158
170
|
];
|
159
171
|
}
|
160
172
|
};
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1pdGVtLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS91dGlscy9saW5lLWl0ZW0udXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE4QyxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRixPQUFPLEVBQWMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFMUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsRUFBVSxFQUFFLFNBQXFCLEVBQXdCLEVBQUU7SUFDdEYsT0FBTywwQkFBMEIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFZLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDL0UsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FDeEMsU0FBcUIsRUFDckIsVUFBcUMsRUFDZixFQUFFO0lBQ3hCLElBQUksWUFBWSxHQUFHLFNBQVMsQ0FBQztJQUU3QixPQUFPLFlBQVksQ0FBQyxNQUFNLEVBQUU7UUFDMUIsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU1QyxJQUFJLEtBQUssRUFBRTtZQUNULE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztLQUN0RTtJQUVELE9BQU87QUFDVCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxRQUFrQixFQUFFLFFBQWdCLEVBQUUsUUFBa0IsRUFBWSxFQUFFO0lBQ25HLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxFQUFFLEtBQUssUUFB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QUM7WUFDbEQsR0FBRyxRQUFRO1lBQ1gsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDZixTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1NBQzVDLENBQUMsQ0FBQztRQUVILE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0tBQ3REO1NBQU07UUFDTCxPQUFPO1lBQ0w7Z0JBQ0UsR0FBRyxRQUFRO2dCQUNYLEdBQUcsRUFBRSxHQUFHO2FBQ1Q7U0FDRixDQUFDO0tBQ0g7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIENmZ1N0YXR1cywgTGluZUl0ZW0sIFBvcnREb21haW4sIFVVSUQgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IERpY3Rpb25hcnksIGZsYXR0ZW4sIG1hcCwgc29ydEJ5IH0gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGNvbnN0IGZpbmRMaW5lSXRlbSA9IChpZDogc3RyaW5nLCBsaW5lSXRlbXM6IExpbmVJdGVtW10pOiBMaW5lSXRlbSB8IHVuZGVmaW5lZCA9PiB7XG4gIHJldHVybiBmaW5kTGluZUl0ZW1XaXRoQ29tcGFyYXRvcihsaW5lSXRlbXMsIChsaTogTGluZUl0ZW0pID0+IGxpLmlkID09PSBpZCk7XG59O1xuXG5leHBvcnQgY29uc3QgZmluZExpbmVJdGVtV2l0aENvbXBhcmF0b3IgPSAoXG4gIGxpbmVJdGVtczogTGluZUl0ZW1bXSxcbiAgY29tcGFyYXRvcjogKGxpOiBMaW5lSXRlbSkgPT4gYm9vbGVhbixcbik6IExpbmVJdGVtIHwgdW5kZWZpbmVkID0+IHtcbiAgbGV0IGN1cnJlbnRMZXZlbCA9IGxpbmVJdGVtcztcblxuICB3aGlsZSAoY3VycmVudExldmVsLmxlbmd0aCkge1xuICAgIGNvbnN0IGZvdW5kID0gY3VycmVudExldmVsLmZpbmQoY29tcGFyYXRvcik7XG5cbiAgICBpZiAoZm91bmQpIHtcbiAgICAgIHJldHVybiBmb3VuZDtcbiAgICB9XG5cbiAgICBjdXJyZW50TGV2ZWwgPSBmbGF0dGVuKGN1cnJlbnRMZXZlbC5tYXAocGFyZW50ID0+IHBhcmVudC5saW5lSXRlbXMpKTtcbiAgfVxuXG4gIHJldHVybjtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRMaW5lSXRlbSA9IChsaW5lSXRlbTogTGluZUl0ZW0sIHBhcmVudElkOiBzdHJpbmcsIHRvSW5zZXJ0OiBMaW5lSXRlbSk6IExpbmVJdGVtID0+IHtcbiAgY29uc3QgaW5zZXJ0RGF0YSA9IGxpbmVJdGVtLmlkID09PSBwYXJlbnRJZCA/IFt0b0luc2VydF0gOiBbXTtcbiAgcmV0dXJuIHtcbiAgICAuLi5saW5lSXRlbSxcbiAgICBsaW5lSXRlbXM6IFtcbiAgICAgIC4uLmluc2VydERhdGEsXG4gICAgICAuLi5saW5lSXRlbS5saW5lSXRlbXMubWFwKGxpID0+IHtcbiAgICAgICAgcmV0dXJuIGluc2VydExpbmVJdGVtKGxpLCBwYXJlbnRJZCwgdG9JbnNlcnQpO1xuICAgICAgfSksXG4gICAgXSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMaW5lSXRlbSA9IChsaW5lSXRlbTogTGluZUl0ZW0sIGlkVG9SZW1vdmU6IHN0cmluZyk6IExpbmVJdGVtID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5saW5lSXRlbSxcbiAgICBsaW5lSXRlbXM6IGxpbmVJdGVtLmxpbmVJdGVtc1xuICAgICAgLm1hcChsaSA9PiB7XG4gICAgICAgIGlmIChsaS5pZCA9PT0gaWRUb1JlbW92ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChsaS5saW5lSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIHJlbW92ZUxpbmVJdGVtKGxpLCBpZFRvUmVtb3ZlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGk7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihyID0+ICEhcikgYXMgTGluZUl0ZW1bXSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXBsYWNlTGluZUl0ZW0gPSAobGluZUl0ZW06IExpbmVJdGVtLCByZXBsYWNlVG86IExpbmVJdGVtKTogTGluZUl0ZW0gPT4ge1xuICBpZiAobGluZUl0ZW0uaWQgPT09IHJlcGxhY2VUby5pZCkge1xuICAgIHJldHVybiB7IC4uLnJlY2FsY3VsYXRlQ2FyZGluYWxpdHlWYXJpYWJsZXMobGluZUl0ZW0sIHJlcGxhY2VUbykgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4ubGluZUl0ZW0sXG4gICAgbGluZUl0ZW1zOiBsaW5lSXRlbS5saW5lSXRlbXMubWFwKGxpID0+IHJlcGxhY2VMaW5lSXRlbShsaSwgcmVwbGFjZVRvKSksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlQ2FyZGluYWxpdHlWYXJpYWJsZXMgPSAobGluZUl0ZW1zOiBMaW5lSXRlbVtdKTogTWFwPHN0cmluZywgbnVtYmVyPiA9PiB7XG4gIGNvbnN0IGNhcmRWYXJzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgbGluZUl0ZW1zLmZvckVhY2gobGkgPT4ge1xuICAgIGNvbnN0IGNhcmRpbmFsaXR5VmFyaWFibGVOYW1lID0gYCNDVi0ke2xpLnR5cGV9QCR7bGkucG9ydH1gO1xuICAgIGNhcmRWYXJzLnNldChjYXJkaW5hbGl0eVZhcmlhYmxlTmFtZSwgKGNhcmRWYXJzLmdldChjYXJkaW5hbGl0eVZhcmlhYmxlTmFtZSkgPz8gMCkgKyBsaS5xdHkpO1xuICB9KTtcbiAgcmV0dXJuIGNhcmRWYXJzO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlY2FsY3VsYXRlQ2FyZGluYWxpdHlWYXJpYWJsZXMgPSAob3JpZ2luYWw6IExpbmVJdGVtLCB1cGRhdGVkOiBMaW5lSXRlbSk6IExpbmVJdGVtID0+IHtcbiAgY29uc3QgY2FyZGluYWxpdHlWYXJpYWJsZXMgPSBjYWxjdWxhdGVDYXJkaW5hbGl0eVZhcmlhYmxlcyh1cGRhdGVkLmxpbmVJdGVtcyk7XG4gIGNvbnN0IG9yaWdpbmFsQ2FyZGluYWxpdHlWYXJpYWJsZXMgPSBjYWxjdWxhdGVDYXJkaW5hbGl0eVZhcmlhYmxlcyhvcmlnaW5hbC5saW5lSXRlbXMpO1xuXG4gIG9yaWdpbmFsQ2FyZGluYWxpdHlWYXJpYWJsZXMuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgIGlmIChjYXJkaW5hbGl0eVZhcmlhYmxlcy5nZXQoa2V5KSA9PT0gdmFsdWUpIHtcbiAgICAgIC8vIG5vIG5lZWQgdG8gdXBkYXRlIGNhcmRpbmFsaXR5IGlmIG5vIGNoYW5nZXNcbiAgICAgIGNhcmRpbmFsaXR5VmFyaWFibGVzLmRlbGV0ZShrZXkpO1xuICAgIH0gZWxzZSBpZiAoIWNhcmRpbmFsaXR5VmFyaWFibGVzLmhhcyhrZXkpKSB7XG4gICAgICAvLyByZW1vdmUgbGFzdCBpdGVtIGZyb20gcG9ydFxuICAgICAgY2FyZGluYWxpdHlWYXJpYWJsZXMuc2V0KGtleSwgMCk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge1xuICAgIC4uLnVwZGF0ZWQsXG4gICAgYXR0cmlidXRlczogdXBzZXJ0QXR0cmlidXRlcyhcbiAgICAgIHVwZGF0ZWQuYXR0cmlidXRlcyxcbiAgICAgIFsuLi5jYXJkaW5hbGl0eVZhcmlhYmxlc10ubWFwKChbbmFtZSwgdmFsdWVdKSA9PiAoeyBuYW1lLCB2YWx1ZSB9KSksXG4gICAgKSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBtYXBBdHRyaWJ1dGVzID0gKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZVtdKTogRGljdGlvbmFyeTxhbnk+ID0+IHtcbiAgcmV0dXJuIGF0dHJpYnV0ZXMucmVkdWNlKChhY2MsIHsgbmFtZSwgdmFsdWUgfSkgPT4gKHsgLi4uYWNjLCBbbmFtZV06IHZhbHVlIH0pLCB7fSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXR0cmlidXRlcyA9IChhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVbXSwgbmFtZXM6IHN0cmluZ1tdID0gW10pOiBBdHRyaWJ1dGVbXSA9PiB7XG4gIGNvbnN0IGZpbHRlcmVkID0gYXR0cmlidXRlcy5maWx0ZXIoKHsgbmFtZSB9KSA9PiBuYW1lcy5pbmNsdWRlcyhuYW1lKSk7XG4gIHJldHVybiBzb3J0QnkoZmlsdGVyZWQsIFsoeyBuYW1lIH0pOiBudW1iZXIgPT4gbmFtZXMuaW5kZXhPZihuYW1lKV0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwc2VydEF0dHJpYnV0ZXMgPSAoXG4gIG9yaWdpbmFsQXR0cmlidXRlczogQXR0cmlidXRlW10sXG4gIGF0dHJpYnV0ZXNUb1Vwc2VydDogeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBhbnkgfVtdLFxuKTogQXR0cmlidXRlW10gPT4ge1xuICByZXR1cm4gYXR0cmlidXRlc1RvVXBzZXJ0LnJlZHVjZSgoYWNjLCB7IG5hbWUsIHZhbHVlIH0pID0+IHtcbiAgICBjb25zdCBbb3JpZ0F0dHJdID0gZ2V0QXR0cmlidXRlcyhhY2MsIFtuYW1lXSk7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLmFjYy5maWx0ZXIoYXR0ciA9PiBhdHRyLm5hbWUgIT09IG5hbWUpLFxuICAgICAgeyAuLi4ob3JpZ0F0dHIgPz8geyBuYW1lIH0pLCBjZmdTdGF0dXM6ICdVc2VyJyBhcyBDZmdTdGF0dXMsIHZhbHVlIH0sXG4gICAgXTtcbiAgfSwgb3JpZ2luYWxBdHRyaWJ1dGVzKTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXRjaEF0dHJpYnV0ZXMgPSAoXG4gIHJvb3RMaW5lSXRlbTogTGluZUl0ZW0sXG4gIGlkOiBzdHJpbmcsXG4gIGF0dHJzOiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IGFueSB9W10sXG4pOiBMaW5lSXRlbSA9PiB7XG4gIGNvbnN0IGxpbmVJdGVtID0gZmluZExpbmVJdGVtKGlkLCBbcm9vdExpbmVJdGVtXSk7XG5cbiAgaWYgKCFsaW5lSXRlbSkge1xuICAgIHJldHVybiByb290TGluZUl0ZW07XG4gIH1cblxuICBjb25zdCBhdHRyaWJ1dGVzID0gdXBzZXJ0QXR0cmlidXRlcyhsaW5lSXRlbS5hdHRyaWJ1dGVzLCBhdHRycyk7XG4gIHJldHVybiByZXBsYWNlTGluZUl0ZW0ocm9vdExpbmVJdGVtLCB7IC4uLmxpbmVJdGVtLCBhdHRyaWJ1dGVzIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEF0dHJpYnV0ZVZhbHVlID0gKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZVtdLCBuYW1lOiBzdHJpbmcpOiBhbnkgPT5cbiAgYXR0cmlidXRlcy5maW5kKGF0dHIgPT4gYXR0ci5uYW1lID09PSBuYW1lKT8udmFsdWU7XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUxpbmVJdGVtID0gKFxuICBwb3J0OiBzdHJpbmcsXG4gIHR5cGU6IHN0cmluZyxcbiAgcGFyZW50SWQ6IHN0cmluZyxcbiAgYXR0cmlidXRlczogeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBhbnkgfVtdID0gW10sXG4gIGxpbmVJdGVtczogTGluZUl0ZW1bXSA9IFtdLFxuKTogTGluZUl0ZW0gPT4ge1xuICByZXR1cm4ge1xuICAgIGlkOiBVVUlELlVVSUQoKSxcbiAgICBwb3J0LFxuICAgIHR5cGUsXG4gICAgYWN0aW9uQ29kZTogJ0FERCcsXG4gICAgY2ZnU3RhdHVzOiAnTmV3JyxcbiAgICBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzLm1hcCgoeyBuYW1lLCB2YWx1ZSB9KSA9PiAoeyBjZmdTdGF0dXM6ICdVc2VyJywgbmFtZSwgdmFsdWUgfSkpLFxuICAgIGxpbmVJdGVtcyxcbiAgICBwYXJlbnRJZCxcbiAgICBxdHk6IDEsXG4gIH0gYXMgTGluZUl0ZW07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVjb21tZW5kZWRQcmljZXMgPSAocG9ydERvbWFpbjogUG9ydERvbWFpbiwgdHlwZTogc3RyaW5nKTogeyBuZXQ6IG51bWJlcjsgbGlzdDogbnVtYmVyIH0gPT4ge1xuICBjb25zdCBkb21haW5UeXBlID0gcG9ydERvbWFpbi5kb21haW5UeXBlcy5maW5kKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gdHlwZSk7XG5cbiAgY29uc3QgW25ldCwgbGlzdF0gPSBkb21haW5UeXBlPy5yZWNvbW1lbmRlZFByaWNlc1xuICAgID8uZmlsdGVyKCh7IGNoYXJnZU1ldGhvZCB9KSA9PiBjaGFyZ2VNZXRob2QgPT09ICdPTkVfVElNRScpXG4gICAgLnJlZHVjZShcbiAgICAgIChhY2MsIHJwKSA9PiB7XG4gICAgICAgIGNvbnN0IFtuZXRQcmljZSwgbGlzdFByaWNlXSA9IGFjYztcbiAgICAgICAgcmV0dXJuIFtuZXRQcmljZSArIHJwLm5ldFByaWNlLCBsaXN0UHJpY2UgKyBycC5saXN0UHJpY2VdO1xuICAgICAgfSxcbiAgICAgIFswLCAwXSxcbiAgICApID8/IFswLCAwXTtcblxuICByZXR1cm4geyBuZXQsIGxpc3QgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZU1vZGlmaWVkQXNzZXRzTWFwID0gKGxpbmVJdGVtczogTGluZUl0ZW1bXSk6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0+IHtcbiAgcmV0dXJuIGxpbmVJdGVtcy5yZWR1Y2UoKGFjYzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4sIGxpKSA9PiB7XG4gICAgaWYgKGxpLnJhbXBJbnN0YW5jZUlkICYmIGxpLnN0YXR1cyAhPT0gJ0VYSVNUJykge1xuICAgICAgbGV0IHRhcmdldDogTGluZUl0ZW0gfCB1bmRlZmluZWQgPSBsaTtcbiAgICAgIHdoaWxlICh0YXJnZXQgJiYgdGFyZ2V0LnJhbXBJbnN0YW5jZUlkKSB7XG4gICAgICAgIHRhcmdldCA9IGxpbmVJdGVtcy5maW5kKHN1YiA9PiBzdWIuaWQgPT09IGxpLnJhbXBJbnN0YW5jZUlkKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaWQgPSB0YXJnZXQ/LmFzc2V0SWQgPz8gdGFyZ2V0Py5vcGVuT3JkZXJMaW5lSXRlbUlkO1xuICAgICAgaWYgKGlkKSB7XG4gICAgICAgIGFjY1tpZF0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBtdWx0aXBseUxpbmVJdGVtcyA9IChsaW5lSXRlbTogTGluZUl0ZW0sIHF0eTogbnVtYmVyLCBzcGxpdDogYm9vbGVhbik6IExpbmVJdGVtW10gPT4ge1xuICBpZiAoc3BsaXQpIHtcbiAgICBjb25zdCB1bmlmeUlkcyA9IChsaW5lSXRlbTogTGluZUl0ZW0pOiBMaW5lSXRlbSA9PiAoe1xuICAgICAgLi4ubGluZUl0ZW0sXG4gICAgICBpZDogVVVJRC5VVUlEKCksXG4gICAgICBsaW5lSXRlbXM6IGxpbmVJdGVtLmxpbmVJdGVtcy5tYXAodW5pZnlJZHMpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1hcChuZXcgQXJyYXkocXR5KSwgKCkgPT4gdW5pZnlJZHMobGluZUl0ZW0pKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICAuLi5saW5lSXRlbSxcbiAgICAgICAgcXR5OiBxdHksXG4gICAgICB9LFxuICAgIF07XG4gIH1cbn07XG4iXX0=
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1pdGVtLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS91dGlscy9saW5lLWl0ZW0udXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE4QyxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRixPQUFPLEVBQWMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFMUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsRUFBVSxFQUFFLFNBQXFCLEVBQXdCLEVBQUU7SUFDdEYsT0FBTywwQkFBMEIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFZLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDL0UsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FDeEMsU0FBcUIsRUFDckIsVUFBcUMsRUFDZixFQUFFO0lBQ3hCLElBQUksWUFBWSxHQUFHLFNBQVMsQ0FBQztJQUU3QixPQUFPLFlBQVksQ0FBQyxNQUFNLEVBQUU7UUFDMUIsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU1QyxJQUFJLEtBQUssRUFBRTtZQUNULE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztLQUN0RTtJQUVELE9BQU87QUFDVCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxRQUFrQixFQUFFLFFBQWdCLEVBQUUsUUFBa0IsRUFBWSxFQUFFO0lBQ25HLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxFQUFFLEtBQUssUUFB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QztLQUMzRTtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQUMsUUFBa0IsRUFBVyxFQUFFO0lBQ2hFLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxPQUFPLEVBQUU7UUFDcEUsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELE9BQU8sUUFBUSxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUM7QUFDckMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxRQUFrQixFQUFFLEdBQVcsRUFBRSxLQUFjLEVBQWMsRUFBRTtJQUMvRixJQUFJLEtBQUssRUFBRTtRQUNULE1BQU0sUUFBUSxHQUFHLENBQUMsUUFBa0IsRUFBWSxFQUFFLENBQUMsQ0FBQztZQUNsRCxHQUFHLFFBQVE7WUFDWCxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNmLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7U0FDNUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7S0FDdEQ7U0FBTTtRQUNMLE9BQU87WUFDTDtnQkFDRSxHQUFHLFFBQVE7Z0JBQ1gsR0FBRyxFQUFFLEdBQUc7YUFDVDtTQUNGLENBQUM7S0FDSDtBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dHJpYnV0ZSwgQ2ZnU3RhdHVzLCBMaW5lSXRlbSwgUG9ydERvbWFpbiwgVVVJRCB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSwgZmxhdHRlbiwgbWFwLCBzb3J0QnkgfSBmcm9tICdsb2Rhc2gnO1xuXG5leHBvcnQgY29uc3QgZmluZExpbmVJdGVtID0gKGlkOiBzdHJpbmcsIGxpbmVJdGVtczogTGluZUl0ZW1bXSk6IExpbmVJdGVtIHwgdW5kZWZpbmVkID0+IHtcbiAgcmV0dXJuIGZpbmRMaW5lSXRlbVdpdGhDb21wYXJhdG9yKGxpbmVJdGVtcywgKGxpOiBMaW5lSXRlbSkgPT4gbGkuaWQgPT09IGlkKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kTGluZUl0ZW1XaXRoQ29tcGFyYXRvciA9IChcbiAgbGluZUl0ZW1zOiBMaW5lSXRlbVtdLFxuICBjb21wYXJhdG9yOiAobGk6IExpbmVJdGVtKSA9PiBib29sZWFuLFxuKTogTGluZUl0ZW0gfCB1bmRlZmluZWQgPT4ge1xuICBsZXQgY3VycmVudExldmVsID0gbGluZUl0ZW1zO1xuXG4gIHdoaWxlIChjdXJyZW50TGV2ZWwubGVuZ3RoKSB7XG4gICAgY29uc3QgZm91bmQgPSBjdXJyZW50TGV2ZWwuZmluZChjb21wYXJhdG9yKTtcblxuICAgIGlmIChmb3VuZCkge1xuICAgICAgcmV0dXJuIGZvdW5kO1xuICAgIH1cblxuICAgIGN1cnJlbnRMZXZlbCA9IGZsYXR0ZW4oY3VycmVudExldmVsLm1hcChwYXJlbnQgPT4gcGFyZW50LmxpbmVJdGVtcykpO1xuICB9XG5cbiAgcmV0dXJuO1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydExpbmVJdGVtID0gKGxpbmVJdGVtOiBMaW5lSXRlbSwgcGFyZW50SWQ6IHN0cmluZywgdG9JbnNlcnQ6IExpbmVJdGVtKTogTGluZUl0ZW0gPT4ge1xuICBjb25zdCBpbnNlcnREYXRhID0gbGluZUl0ZW0uaWQgPT09IHBhcmVudElkID8gW3RvSW5zZXJ0XSA6IFtdO1xuICByZXR1cm4ge1xuICAgIC4uLmxpbmVJdGVtLFxuICAgIGxpbmVJdGVtczogW1xuICAgICAgLi4uaW5zZXJ0RGF0YSxcbiAgICAgIC4uLmxpbmVJdGVtLmxpbmVJdGVtcy5tYXAobGkgPT4ge1xuICAgICAgICByZXR1cm4gaW5zZXJ0TGluZUl0ZW0obGksIHBhcmVudElkLCB0b0luc2VydCk7XG4gICAgICB9KSxcbiAgICBdLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUxpbmVJdGVtID0gKGxpbmVJdGVtOiBMaW5lSXRlbSwgaWRUb1JlbW92ZTogc3RyaW5nKTogTGluZUl0ZW0gPT4ge1xuICByZXR1cm4ge1xuICAgIC4uLmxpbmVJdGVtLFxuICAgIGxpbmVJdGVtczogbGluZUl0ZW0ubGluZUl0ZW1zXG4gICAgICAubWFwKGxpID0+IHtcbiAgICAgICAgaWYgKGxpLmlkID09PSBpZFRvUmVtb3ZlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKGxpLmxpbmVJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gcmVtb3ZlTGluZUl0ZW0obGksIGlkVG9SZW1vdmUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsaTtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKHIgPT4gISFyKSBhcyBMaW5lSXRlbVtdLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHJlcGxhY2VMaW5lSXRlbSA9IChsaW5lSXRlbTogTGluZUl0ZW0sIHJlcGxhY2VUbzogTGluZUl0ZW0pOiBMaW5lSXRlbSA9PiB7XG4gIGlmIChsaW5lSXRlbS5pZCA9PT0gcmVwbGFjZVRvLmlkKSB7XG4gICAgcmV0dXJuIHsgLi4ucmVjYWxjdWxhdGVDYXJkaW5hbGl0eVZhcmlhYmxlcyhsaW5lSXRlbSwgcmVwbGFjZVRvKSB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5saW5lSXRlbSxcbiAgICBsaW5lSXRlbXM6IGxpbmVJdGVtLmxpbmVJdGVtcy5tYXAobGkgPT4gcmVwbGFjZUxpbmVJdGVtKGxpLCByZXBsYWNlVG8pKSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVDYXJkaW5hbGl0eVZhcmlhYmxlcyA9IChsaW5lSXRlbXM6IExpbmVJdGVtW10pOiBNYXA8c3RyaW5nLCBudW1iZXI+ID0+IHtcbiAgY29uc3QgY2FyZFZhcnMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBsaW5lSXRlbXMuZm9yRWFjaChsaSA9PiB7XG4gICAgY29uc3QgY2FyZGluYWxpdHlWYXJpYWJsZU5hbWUgPSBgI0NWLSR7bGkudHlwZX1AJHtsaS5wb3J0fWA7XG4gICAgY2FyZFZhcnMuc2V0KGNhcmRpbmFsaXR5VmFyaWFibGVOYW1lLCAoY2FyZFZhcnMuZ2V0KGNhcmRpbmFsaXR5VmFyaWFibGVOYW1lKSA/PyAwKSArIGxpLnF0eSk7XG4gIH0pO1xuICByZXR1cm4gY2FyZFZhcnM7XG59O1xuXG5leHBvcnQgY29uc3QgcmVjYWxjdWxhdGVDYXJkaW5hbGl0eVZhcmlhYmxlcyA9IChvcmlnaW5hbDogTGluZUl0ZW0sIHVwZGF0ZWQ6IExpbmVJdGVtKTogTGluZUl0ZW0gPT4ge1xuICBjb25zdCBjYXJkaW5hbGl0eVZhcmlhYmxlcyA9IGNhbGN1bGF0ZUNhcmRpbmFsaXR5VmFyaWFibGVzKHVwZGF0ZWQubGluZUl0ZW1zKTtcbiAgY29uc3Qgb3JpZ2luYWxDYXJkaW5hbGl0eVZhcmlhYmxlcyA9IGNhbGN1bGF0ZUNhcmRpbmFsaXR5VmFyaWFibGVzKG9yaWdpbmFsLmxpbmVJdGVtcyk7XG5cbiAgb3JpZ2luYWxDYXJkaW5hbGl0eVZhcmlhYmxlcy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgaWYgKGNhcmRpbmFsaXR5VmFyaWFibGVzLmdldChrZXkpID09PSB2YWx1ZSkge1xuICAgICAgLy8gbm8gbmVlZCB0byB1cGRhdGUgY2FyZGluYWxpdHkgaWYgbm8gY2hhbmdlc1xuICAgICAgY2FyZGluYWxpdHlWYXJpYWJsZXMuZGVsZXRlKGtleSk7XG4gICAgfSBlbHNlIGlmICghY2FyZGluYWxpdHlWYXJpYWJsZXMuaGFzKGtleSkpIHtcbiAgICAgIC8vIHJlbW92ZSBsYXN0IGl0ZW0gZnJvbSBwb3J0XG4gICAgICBjYXJkaW5hbGl0eVZhcmlhYmxlcy5zZXQoa2V5LCAwKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgLi4udXBkYXRlZCxcbiAgICBhdHRyaWJ1dGVzOiB1cHNlcnRBdHRyaWJ1dGVzKFxuICAgICAgdXBkYXRlZC5hdHRyaWJ1dGVzLFxuICAgICAgWy4uLmNhcmRpbmFsaXR5VmFyaWFibGVzXS5tYXAoKFtuYW1lLCB2YWx1ZV0pID0+ICh7IG5hbWUsIHZhbHVlIH0pKSxcbiAgICApLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcEF0dHJpYnV0ZXMgPSAoYXR0cmlidXRlczogQXR0cmlidXRlW10pOiBEaWN0aW9uYXJ5PGFueT4gPT4ge1xuICByZXR1cm4gYXR0cmlidXRlcy5yZWR1Y2UoKGFjYywgeyBuYW1lLCB2YWx1ZSB9KSA9PiAoeyAuLi5hY2MsIFtuYW1lXTogdmFsdWUgfSksIHt9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBdHRyaWJ1dGVzID0gKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZVtdLCBuYW1lczogc3RyaW5nW10gPSBbXSk6IEF0dHJpYnV0ZVtdID0+IHtcbiAgY29uc3QgZmlsdGVyZWQgPSBhdHRyaWJ1dGVzLmZpbHRlcigoeyBuYW1lIH0pID0+IG5hbWVzLmluY2x1ZGVzKG5hbWUpKTtcbiAgcmV0dXJuIHNvcnRCeShmaWx0ZXJlZCwgWyh7IG5hbWUgfSk6IG51bWJlciA9PiBuYW1lcy5pbmRleE9mKG5hbWUpXSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBzZXJ0QXR0cmlidXRlcyA9IChcbiAgb3JpZ2luYWxBdHRyaWJ1dGVzOiBBdHRyaWJ1dGVbXSxcbiAgYXR0cmlidXRlc1RvVXBzZXJ0OiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IGFueSB9W10sXG4pOiBBdHRyaWJ1dGVbXSA9PiB7XG4gIHJldHVybiBhdHRyaWJ1dGVzVG9VcHNlcnQucmVkdWNlKChhY2MsIHsgbmFtZSwgdmFsdWUgfSkgPT4ge1xuICAgIGNvbnN0IFtvcmlnQXR0cl0gPSBnZXRBdHRyaWJ1dGVzKGFjYywgW25hbWVdKTtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uYWNjLmZpbHRlcihhdHRyID0+IGF0dHIubmFtZSAhPT0gbmFtZSksXG4gICAgICB7IC4uLihvcmlnQXR0ciA/PyB7IG5hbWUgfSksIGNmZ1N0YXR1czogJ1VzZXInIGFzIENmZ1N0YXR1cywgdmFsdWUgfSxcbiAgICBdO1xuICB9LCBvcmlnaW5hbEF0dHJpYnV0ZXMpO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhdGNoQXR0cmlidXRlcyA9IChcbiAgcm9vdExpbmVJdGVtOiBMaW5lSXRlbSxcbiAgaWQ6IHN0cmluZyxcbiAgYXR0cnM6IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogYW55IH1bXSxcbik6IExpbmVJdGVtID0+IHtcbiAgY29uc3QgbGluZUl0ZW0gPSBmaW5kTGluZUl0ZW0oaWQsIFtyb290TGluZUl0ZW1dKTtcblxuICBpZiAoIWxpbmVJdGVtKSB7XG4gICAgcmV0dXJuIHJvb3RMaW5lSXRlbTtcbiAgfVxuXG4gIGNvbnN0IGF0dHJpYnV0ZXMgPSB1cHNlcnRBdHRyaWJ1dGVzKGxpbmVJdGVtLmF0dHJpYnV0ZXMsIGF0dHJzKTtcbiAgcmV0dXJuIHJlcGxhY2VMaW5lSXRlbShyb290TGluZUl0ZW0sIHsgLi4ubGluZUl0ZW0sIGF0dHJpYnV0ZXMgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXR0cmlidXRlVmFsdWUgPSAoYXR0cmlidXRlczogQXR0cmlidXRlW10sIG5hbWU6IHN0cmluZyk6IGFueSA9PlxuICBhdHRyaWJ1dGVzLmZpbmQoYXR0ciA9PiBhdHRyLm5hbWUgPT09IG5hbWUpPy52YWx1ZTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlTGluZUl0ZW0gPSAoXG4gIHBvcnQ6IHN0cmluZyxcbiAgdHlwZTogc3RyaW5nLFxuICBwYXJlbnRJZDogc3RyaW5nLFxuICBhdHRyaWJ1dGVzOiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IGFueSB9W10gPSBbXSxcbiAgbGluZUl0ZW1zOiBMaW5lSXRlbVtdID0gW10sXG4pOiBMaW5lSXRlbSA9PiB7XG4gIHJldHVybiB7XG4gICAgaWQ6IFVVSUQuVVVJRCgpLFxuICAgIHBvcnQsXG4gICAgdHlwZSxcbiAgICBhY3Rpb25Db2RlOiAnQUREJyxcbiAgICBjZmdTdGF0dXM6ICdOZXcnLFxuICAgIGF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXMubWFwKCh7IG5hbWUsIHZhbHVlIH0pID0+ICh7IGNmZ1N0YXR1czogJ1VzZXInLCBuYW1lLCB2YWx1ZSB9KSksXG4gICAgbGluZUl0ZW1zLFxuICAgIHBhcmVudElkLFxuICAgIHF0eTogMSxcbiAgfSBhcyBMaW5lSXRlbTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWNvbW1lbmRlZFByaWNlcyA9IChwb3J0RG9tYWluOiBQb3J0RG9tYWluLCB0eXBlOiBzdHJpbmcpOiB7IG5ldDogbnVtYmVyOyBsaXN0OiBudW1iZXIgfSA9PiB7XG4gIGNvbnN0IGRvbWFpblR5cGUgPSBwb3J0RG9tYWluLmRvbWFpblR5cGVzLmZpbmQoKHsgbmFtZSB9KSA9PiBuYW1lID09PSB0eXBlKTtcblxuICBjb25zdCBbbmV0LCBsaXN0XSA9IGRvbWFpblR5cGU/LnJlY29tbWVuZGVkUHJpY2VzXG4gICAgPy5maWx0ZXIoKHsgY2hhcmdlTWV0aG9kIH0pID0+IGNoYXJnZU1ldGhvZCA9PT0gJ09ORV9USU1FJylcbiAgICAucmVkdWNlKFxuICAgICAgKGFjYywgcnApID0+IHtcbiAgICAgICAgY29uc3QgW25ldFByaWNlLCBsaXN0UHJpY2VdID0gYWNjO1xuICAgICAgICByZXR1cm4gW25ldFByaWNlICsgcnAubmV0UHJpY2UsIGxpc3RQcmljZSArIHJwLmxpc3RQcmljZV07XG4gICAgICB9LFxuICAgICAgWzAsIDBdLFxuICAgICkgPz8gWzAsIDBdO1xuXG4gIHJldHVybiB7IG5ldCwgbGlzdCB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlTW9kaWZpZWRBc3NldHNNYXAgPSAobGluZUl0ZW1zOiBMaW5lSXRlbVtdKTogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPT4ge1xuICByZXR1cm4gbGluZUl0ZW1zLnJlZHVjZSgoYWNjOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiwgbGkpID0+IHtcbiAgICBjb25zdCBpc01vZGlmaWVkID0gaXNMaW5lSXRlbU1vZGlmaWVkKGxpKTtcblxuICAgIGlmICghaXNNb2RpZmllZCkge1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXQgPSBnZXRPcmlnaW5QYXJlbnQobGluZUl0ZW1zLCBsaSk7XG5cbiAgICBjb25zdCBpZCA9IHRhcmdldD8uYXNzZXRJZCA/PyB0YXJnZXQ/Lm9wZW5PcmRlckxpbmVJdGVtSWQ7XG4gICAgaWYgKGlkKSB7XG4gICAgICBhY2NbaWRdID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0T3JpZ2luUGFyZW50ID0gKGxpbmVJdGVtczogTGluZUl0ZW1bXSwgY3VycmVudExpbmVJdGVtOiBMaW5lSXRlbSk6IExpbmVJdGVtIHwgdW5kZWZpbmVkID0+IHtcbiAgbGV0IHRhcmdldDogTGluZUl0ZW0gfCB1bmRlZmluZWQgPSBjdXJyZW50TGluZUl0ZW07XG4gIHdoaWxlICh0YXJnZXQgJiYgdGFyZ2V0LnJhbXBJbnN0YW5jZUlkKSB7XG4gICAgdGFyZ2V0ID0gbGluZUl0ZW1zLmZpbmQoc3ViID0+IHN1Yi5pZCA9PT0gY3VycmVudExpbmVJdGVtLnJhbXBJbnN0YW5jZUlkKTtcbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufTtcblxuZXhwb3J0IGNvbnN0IGlzTGluZUl0ZW1Nb2RpZmllZCA9IChsaW5lSXRlbTogTGluZUl0ZW0pOiBib29sZWFuID0+IHtcbiAgaWYgKGxpbmVJdGVtLnN0YXR1cyA9PT0gJ1BFTkRJTkcnICYmIGxpbmVJdGVtLmFjdGlvbkNvZGUgPT09ICdFWElTVCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gbGluZUl0ZW0uc3RhdHVzICE9PSAnRVhJU1QnO1xufTtcblxuZXhwb3J0IGNvbnN0IG11bHRpcGx5TGluZUl0ZW1zID0gKGxpbmVJdGVtOiBMaW5lSXRlbSwgcXR5OiBudW1iZXIsIHNwbGl0OiBib29sZWFuKTogTGluZUl0ZW1bXSA9PiB7XG4gIGlmIChzcGxpdCkge1xuICAgIGNvbnN0IHVuaWZ5SWRzID0gKGxpbmVJdGVtOiBMaW5lSXRlbSk6IExpbmVJdGVtID0+ICh7XG4gICAgICAuLi5saW5lSXRlbSxcbiAgICAgIGlkOiBVVUlELlVVSUQoKSxcbiAgICAgIGxpbmVJdGVtczogbGluZUl0ZW0ubGluZUl0ZW1zLm1hcCh1bmlmeUlkcyksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWFwKG5ldyBBcnJheShxdHkpLCAoKSA9PiB1bmlmeUlkcyhsaW5lSXRlbSkpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIC4uLmxpbmVJdGVtLFxuICAgICAgICBxdHk6IHF0eSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxufTtcbiJdfQ==
|
@@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
2
|
import { QuoteApiService, SalesforceApiService, ShoppingCartSettingsApiService } from '@veloceapps/api';
|
3
3
|
import { ConfigurationContextMode, getSupportedDateFormats, } from '@veloceapps/core';
|
4
4
|
import { IntegrationState, OpenDocGenAction } from '@veloceapps/sdk/cms';
|
5
|
-
import { ContextService, FlowConfigurationService, QuoteDraftService } from '@veloceapps/sdk/core';
|
5
|
+
import { ContextService, FlowConfigurationService, getOriginParent, isLineItemModified, QuoteDraftService, } from '@veloceapps/sdk/core';
|
6
6
|
import { BehaviorSubject, combineLatest, distinctUntilChanged, filter, finalize, first, map, noop, of, Subject, switchMap, take, takeUntil, tap, } from 'rxjs';
|
7
7
|
import { FlowDialogService } from '../../services/flow-dialog.service';
|
8
8
|
import { FlowRouterService } from '../../services/flow-router.service';
|
@@ -273,7 +273,15 @@ export class FlowHeaderComponent {
|
|
273
273
|
return combineLatest([
|
274
274
|
this.flowConfiguration.get(),
|
275
275
|
this.integrationState.state$.pipe(map(state => state.modifiedAssets), distinctUntilChanged()),
|
276
|
-
]).pipe(map(([lineItems, modifiedAssets]) => lineItems.
|
276
|
+
]).pipe(map(([lineItems, modifiedAssets]) => lineItems.reduce((acc, li) => {
|
277
|
+
const assetId = li.assetId || li.openOrderLineItemId;
|
278
|
+
const isModified = isLineItemModified(li);
|
279
|
+
const currentTerm = getOriginParent(lineItems, li) ?? li;
|
280
|
+
if (isModified || (assetId && modifiedAssets?.[assetId])) {
|
281
|
+
acc.push(currentTerm);
|
282
|
+
}
|
283
|
+
return acc;
|
284
|
+
}, [])));
|
277
285
|
}
|
278
286
|
getAssets$() {
|
279
287
|
return this.flowConfiguration
|
@@ -330,4 +338,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
|
|
330
338
|
type: Component,
|
331
339
|
args: [{ selector: 'vl-flow-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"contextProperties$ | async as contextProperties\">\n <ng-container *ngIf=\"objectDetails$ | async as details\">\n <div class=\"flow-info\">\n <nav class=\"nav-item nav-back\" (click)=\"back()\">\n <i class=\"nav-icon vl-icon vl-icon-arrow-left\"></i>\n\n <span> Back to {{ objectName$ | async | titlecase }}</span>\n </nav>\n\n <ng-container *ngIf=\"isAccountMode$ | async\">\n <span class=\"dot-separator\"></span>\n\n <nav class=\"account-name\" [pTooltip]=\"contextProperties.Name ?? ''\" tooltipPosition=\"bottom\" [showDelay]=\"1000\">\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(contextProperties.Id)\">{{ contextProperties.Name }}</a>\n </nav>\n </ng-container>\n\n <ng-container *ngIf=\"isQuoteMode$ | async\">\n <span class=\"dot-separator\"></span>\n\n <span>Quote #{{ details.quoteNumber }}</span>\n\n <span class=\"dot-separator\"></span>\n\n <nav class=\"nav-item\" (click)=\"quoteDetails.toggle($event)\">\n <span>{{ status$ | async }}</span>\n\n <i *ngIf=\"!quoteDetails.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"quoteDetails.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <p-overlayPanel styleClass=\"navigation-settings-overlay flow-header-overlay center\" #quoteDetails>\n <ng-template pTemplate>\n <div class=\"flow-header-overlay__wrapper\">\n <h2 class=\"flow-header-overlay__title\">\n <span>Quote Information</span>\n <i class=\"vl-icon vl-icon-close close-icon\" (click)=\"quoteDetails.hide()\"></i>\n </h2>\n\n <ul class=\"info-list\">\n <li class=\"info-list__row\">\n <span>Account Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.accountId)\">\n <span>{{ details.accountName }}</span>\n </a>\n </li>\n <li class=\"info-list__row\">\n <span>Opportunity Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.opportunityId)\">\n <span>{{ details.opportunityName }}</span>\n </a>\n </li>\n <li class=\"info-list__row\">\n <span>Quote Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.quoteId)\">\n <span>{{ details.quoteName }}</span>\n </a>\n </li>\n <li class=\"info-list__row\">\n <span>Quote Number:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.quoteId)\">\n <span>{{ details.quoteNumber }}</span>\n </a>\n </li>\n </ul>\n </div>\n </ng-template>\n </p-overlayPanel>\n </ng-container>\n </div>\n\n <div class=\"flow-navigation\">\n <ng-container *vlLet=\"isReadonlyMode$ | async as isReadonlyMode\">\n <nav\n class=\"nav-item\"\n [ngClass]=\"{ active: (isAssetsRoute$ | async), disabled: isReadonlyMode }\"\n (click)=\"navigateToAssets()\"\n >\n Assets ({{ assetsCount$ | async }})\n </nav>\n <nav\n class=\"nav-item\"\n [ngClass]=\"{ active: (isCatalogRoute$ | async), disabled: isReadonlyMode }\"\n (click)=\"navigateToCatalog()\"\n >\n Catalog\n </nav>\n <nav class=\"nav-item disabled\" [ngClass]=\"{ active: isConfigurationRoute$ | async }\">Configurator</nav>\n <ng-container *vlLet=\"products$ | async as products\">\n <nav\n class=\"nav-item\"\n [ngClass]=\"{ active: (isCartRoute$ | async), disabled: isReadonlyMode }\"\n (click)=\"navigateToShoppingCart()\"\n >\n Shopping Cart ({{ products?.length ?? 0 }})\n </nav>\n\n <nav\n class=\"nav-popover-toggle\"\n [ngClass]=\"{ active: (isCartRoute$ | async), disabled: isReadonlyMode }\"\n (click)=\"toggleCartOverlay(cart, $event)\"\n >\n <i *ngIf=\"!cart?.overlayPanel?.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"cart?.overlayPanel?.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <vl-cart-preview #cart [products]=\"products ?? []\"></vl-cart-preview>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"flow-controls\">\n <ng-container *ngIf=\"(isReadonlyMode$ | async) === false\">\n <ng-container *vlLet=\"activePriceList$ | async as priceList\">\n <div>\n <ng-container *vlLet=\"assetPriceLists$ | async as assetPriceLists\">\n <ng-container\n *ngIf=\"(isAccountMode$ | async) && assetPriceLists && assetPriceLists.length > 1; else singlePriceList\"\n >\n <nav class=\"nav-item\" (click)=\"priceListsOverlay?.toggle($event)\">\n <span>{{ priceList?.name }}</span>\n <i\n *ngIf=\"!priceListsOverlay?.overlayVisible\"\n class=\"vl-icon vl-icon-chevron-down icon-with-margin\"\n ></i>\n <i *ngIf=\"priceListsOverlay?.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <p-overlayPanel styleClass=\"price-list-overlay\" #priceListsOverlay>\n <ng-template pTemplate>\n <span\n *ngFor=\"let option of assetPriceLists\"\n class=\"price-list-option\"\n [class.active]=\"priceList?.id === option.id\"\n (click)=\"selectPriceList(option.id); priceListsOverlay.hide()\"\n >\n {{ option.name }}\n </span>\n </ng-template>\n </p-overlayPanel>\n </ng-container>\n </ng-container>\n\n <ng-template #singlePriceList>\n <div>{{ priceList?.name }}</div>\n </ng-template>\n\n <div *ngIf=\"contextProperties.StartDate\">{{ contextProperties.StartDate | date : dateFormat }}</div>\n </div>\n </ng-container>\n </ng-container>\n\n <vl-metrics></vl-metrics>\n\n <ng-container *vlLet=\"isCartRoute$ | async as isCartRoute\">\n <ng-container *vlLet=\"isReadonlyMode$ | async as isReadonlyMode\">\n <p-button\n class=\"doc-gen-button\"\n icon=\"vl-icon vl-icon-doc-gen\"\n [disabled]=\"isReadonlyMode === true\"\n (onClick)=\"docGenButtonClickHandler(isCartRoute === true)\"\n pTooltip=\"Generate Document\"\n tooltipPosition=\"bottom\"\n tooltipStyleClass=\"vl-info-tooltip\"\n ></p-button>\n\n <ng-container *vlLet=\"isSaveInProgress$ | async as isSaveInProgress\">\n <ng-container *vlLet=\"isSubmitInProgress$ | async as isSubmitInProgress\">\n <p-splitButton\n *ngIf=\"!isSaveInProgress && !isSubmitInProgress\"\n label=\"Save to Quote\"\n (onClick)=\"saveButtonClickHandler(isCartRoute === true)\"\n [model]=\"getSplitButtonActions(isCartRoute === true)\"\n [disabled]=\"isReadonlyMode === true\"\n styleClass=\"p-button-outlined\"\n >\n </p-splitButton>\n\n <p-button\n *ngIf=\"isSaveInProgress\"\n class=\"save-button\"\n styleClass=\"p-button\"\n label=\"Saving\"\n [loading]=\"true\"\n ></p-button>\n\n <p-button\n *ngIf=\"isSubmitInProgress\"\n class=\"submit-button\"\n styleClass=\"p-button\"\n label=\"Submitting\"\n [loading]=\"true\"\n ></p-button>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;align-items:center;height:48px;width:100%;background-color:var(--vl-primary-color);color:#fff;padding:0 32px;flex-shrink:0}::ng-deep .p-overlaypanel.flow-header-overlay .p-overlaypanel-content{background-color:#fff;padding:16px}::ng-deep .p-overlaypanel.flow-header-overlay.no-padding .p-overlaypanel-content{padding:0}::ng-deep .p-overlaypanel.flow-header-overlay.left:before{left:6px!important}::ng-deep .p-overlaypanel.flow-header-overlay.right:before{right:6px!important}::ng-deep .p-overlaypanel.flow-header-overlay.left .p-overlaypanel-content{margin-left:-16px}::ng-deep .p-overlaypanel.flow-header-overlay.right .p-overlaypanel-content{margin-right:-16px}::ng-deep .p-overlaypanel.flow-header-overlay:before{background-color:#fff}::ng-deep .p-overlaypanel.price-list-overlay .p-overlaypanel-content{border-radius:5px;border-color:var(--vl-border-color);padding:0;display:flex;flex-direction:column;max-height:140px;overflow:auto}:host ::ng-deep p-splitButton{height:32px;width:146px;display:flex}:host ::ng-deep p-splitButton .p-splitbutton{display:flex;font-size:12px;border-radius:2px;height:100%;width:100%;-webkit-backface-visibility:hidden}:host ::ng-deep p-splitButton .p-splitbutton .p-button:focus{box-shadow:none}:host ::ng-deep p-splitButton .p-splitbutton .p-splitbutton-defaultbutton{padding:7px 12px 7px 10px}:host ::ng-deep p-splitButton .p-splitbutton .p-splitbutton-defaultbutton:disabled{opacity:.2}:host ::ng-deep p-splitButton .p-splitbutton .p-splitbutton-menubutton:disabled{opacity:.3}:host ::ng-deep p-splitButton .p-splitbutton.p-button-outlined .p-button{background-color:#fff;color:var(--vl-primary-color);border:1px solid #fff}:host ::ng-deep p-splitButton .p-splitbutton.p-button-outlined .p-button:enabled:hover{background-color:var(--vl-secondary-nav-bg);color:var(--vl-primary-color);border:1px solid var(--vl-secondary-nav-bg);outline:none}:host ::ng-deep p-splitButton .p-splitbutton.p-button-outlined .p-button.p-splitbutton-menubutton{background-color:var(--vl-secondary-nav-bg);border-radius:0 2px 2px 0;border:1px solid var(--vl-secondary-nav-bg);border-left:none}:host ::ng-deep p-splitButton .p-splitbutton.p-button-outlined .p-button.p-splitbutton-menubutton:hover{background-color:var(--vl-secondary-nav-bg);border:1px solid var(--vl-secondary-nav-bg);border-left:none}:host ::ng-deep p-splitButton .p-splitbutton.p-button-outlined .p-button.p-splitbutton-defaultbutton{border-radius:2px 0 0 2px}:host ::ng-deep p-splitButton .p-splitbutton.p-button-outlined .p-button.p-splitbutton-defaultbutton .p-button-label{font-size:12px;line-height:16px;letter-spacing:.3px;white-space:nowrap}:host ::ng-deep p-splitButton .p-splitbutton .p-menu{display:flex;width:auto;margin-top:2px;border-radius:4px;border:1px solid var(--vl-border-color);box-shadow:0 4px 20px #2767c11a}:host ::ng-deep p-splitButton .p-splitbutton .p-menu .p-menu-list{display:flex;flex-direction:column}:host ::ng-deep p-splitButton .p-splitbutton .p-menu .p-menu-list .p-menuitem{display:flex;width:100%;height:32px}:host ::ng-deep p-splitButton .p-splitbutton .p-menu .p-menu-list .p-menuitem .p-menuitem-link{padding:8px;width:100%;height:100%}:host ::ng-deep p-splitButton .p-splitbutton .p-menu .p-menu-list .p-menuitem .p-menuitem-link:not(.p-disabled):hover{background-color:var(--vl-secondary-nav-bg)}:host ::ng-deep p-splitButton .p-splitbutton .p-menu .p-menu-list .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text{color:var(--vl-primary-color)}:host ::ng-deep p-splitButton .p-splitbutton .p-menu .p-menu-list .p-menuitem .p-menuitem-link .p-menuitem-text{line-height:16px;font-size:12px;letter-spacing:.3px;white-space:nowrap}:host ::ng-deep .doc-gen-button{height:32px;width:32px;display:inline-flex}:host ::ng-deep .doc-gen-button .p-button{border:1px solid #fff;border-radius:2px;width:100%;height:100%}:host ::ng-deep .doc-gen-button .p-button.p-component:disabled{opacity:.3}:host ::ng-deep .save-button,:host ::ng-deep .submit-button{height:32px;width:146px;display:flex}:host ::ng-deep .save-button .p-button,:host ::ng-deep .submit-button .p-button{border-radius:3px;width:100%;height:100%;background:rgba(255,255,255,.3);opacity:1;border:none}:host ::ng-deep .save-button .p-button .p-button-label,:host ::ng-deep .submit-button .p-button .p-button-label{font-size:12px;line-height:16px;letter-spacing:.3px;white-space:nowrap}.vl-icon{display:inline-block}.flow-info{flex-shrink:0;display:flex;gap:8px;align-items:center}.flow-info .nav-popover-toggle{margin-left:-8px}.flow-info .nav-back{font-weight:700}.flow-info .nav-item:not(.disabled):hover,.flow-info .nav-popover-toggle:not(.disabled):hover{opacity:.6}nav{display:flex;align-items:center;cursor:pointer;height:14px}nav.disabled{opacity:.6;cursor:default}nav .nav-icon{margin-right:10px}nav .icon-with-margin{margin:0 4px}nav a{color:#fff}nav.account-name{margin-left:4px;display:block;max-width:200px;overflow:hidden;text-overflow:ellipsis}nav.nav-popover-toggle{width:24px;display:flex;justify-content:center}nav.nav-popover-toggle i{pointer-events:none;margin:0}nav i{pointer-events:none}.metrics__row{display:flex;justify-content:space-between;gap:2px}.dot-separator:after{content:\"\";display:block;width:4px;height:4px;border-radius:50%;background:#fff}.slash-separator:after{content:\"\";display:block;background:#fff;width:1px;height:16px}.flow-header-overlay__wrapper{width:360px}.flow-header-overlay__wrapper .close-icon{cursor:pointer}.flow-header-overlay__wrapper .info-list{list-style:none;padding:0;font-size:12px}.flow-header-overlay__wrapper .info-list__row{padding:8px 0;display:flex;justify-content:space-between}.flow-header-overlay__wrapper .info-list__row a{text-align:right}.flow-header-overlay__title{display:flex;justify-content:space-between;align-items:center;margin:0 0 24px}.flow-navigation{flex-grow:1;display:flex;gap:16px;justify-content:center;font-weight:600}.flow-navigation .cart-nav-container{display:flex}.flow-navigation .nav-popover-toggle{margin-left:-14px}.flow-navigation .nav-item,.flow-navigation .nav-popover-toggle{opacity:.6}.flow-navigation .nav-item.active,.flow-navigation .nav-item:not(.disabled):hover,.flow-navigation .nav-popover-toggle.active,.flow-navigation .nav-popover-toggle:not(.disabled):hover{opacity:1}.price-list-option{padding:8px;color:var(--vl-primary-color);cursor:pointer}.price-list-option.active,.price-list-option:hover{background:var(--vl-secondary-nav-bg)}.flow-controls{flex-shrink:0;display:flex;align-items:center;gap:16px;font-size:12px;line-height:16px}\n"] }]
|
332
340
|
}], ctorParameters: function () { return [{ type: i1.ContextService }, { type: i1.QuoteDraftService }, { type: i2.QuoteApiService }, { type: i2.SalesforceApiService }, { type: i1.FlowConfigurationService }, { type: i3.FlowRouterService }, { type: i4.FlowDialogService }, { type: i5.IntegrationState }, { type: i2.ShoppingCartSettingsApiService }]; } });
|
333
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9jb21wb25lbnRzL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL2NvbXBvbmVudHMvaGVhZGVyL2hlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLDhCQUE4QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEcsT0FBTyxFQUNMLHdCQUF3QixFQUV4Qix1QkFBdUIsR0FLeEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLHdCQUF3QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkcsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLEdBQUcsRUFDSCxJQUFJLEVBRUosRUFBRSxFQUNGLE9BQU8sRUFDUCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVl2RSxNQUFNLE9BQU8sbUJBQW1CO0lBdUI5QixZQUNVLGNBQThCLEVBQzlCLGlCQUFvQyxFQUNwQyxlQUFnQyxFQUNoQyxZQUFr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QUFLLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7UUFFOUcsT0FBTyxTQUFTLElBQUksb0JBQW9CLENBQUM7SUFDM0MsQ0FBQzs7Z0hBOVpVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHNEQzVDaEMscTFRQXdNQTsyRkQ1SmEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFF1b3RlQXBpU2VydmljZSwgU2FsZXNmb3JjZUFwaVNlcnZpY2UsIFNob3BwaW5nQ2FydFNldHRpbmdzQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2FwaSc7XG5pbXBvcnQge1xuICBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUsXG4gIENvbnRleHRQcm9wZXJ0aWVzLFxuICBnZXRTdXBwb3J0ZWREYXRlRm9ybWF0cyxcbiAgTGluZUl0ZW0sXG4gIFByaWNlTGlzdCxcbiAgU2VhcmNoUmVxdWVzdCxcbiAgVmxXaW5kb3csXG59IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgSW50ZWdyYXRpb25TdGF0ZSwgT3BlbkRvY0dlbkFjdGlvbiB9IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jbXMnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UsIEZsb3dDb25maWd1cmF0aW9uU2VydmljZSwgUXVvdGVEcmFmdFNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9zZGsvY29yZSc7XG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgZmluYWxpemUsXG4gIGZpcnN0LFxuICBtYXAsXG4gIG5vb3AsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBTdWJqZWN0LFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRha2VVbnRpbCxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZsb3dEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmxvdy1kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBGbG93Um91dGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zsb3ctcm91dGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FydFByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NhcnQtb3ZlcmxheS9jYXJ0LXByZXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IEhlYWRlck9iamVjdERldGFpbHMsIEhlYWRlclByb2R1Y3QgfSBmcm9tICcuL2hlYWRlci50eXBlcyc7XG5cbmRlY2xhcmUgY29uc3Qgd2luZG93OiBWbFdpbmRvdztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmwtZmxvdy1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGbG93SGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgb2JqZWN0TmFtZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcHVibGljIGNvbnRleHRQcm9wZXJ0aWVzJDogT2JzZXJ2YWJsZTxDb250ZXh0UHJvcGVydGllcz47XG4gIHB1YmxpYyBhY3RpdmVQcmljZUxpc3QkOiBPYnNlcnZhYmxlPFByaWNlTGlzdCB8IG51bGw+O1xuICBwdWJsaWMgaXNSZWFkb25seU1vZGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwdWJsaWMgc3RhdHVzJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBwdWJsaWMgb2JqZWN0RGV0YWlscyQ6IE9ic2VydmFibGU8SGVhZGVyT2JqZWN0RGV0YWlscz47XG4gIHB1YmxpYyBhc3NldHNDb3VudCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgcHVibGljIHByb2R1Y3RzJDogT2JzZXJ2YWJsZTxIZWFkZXJQcm9kdWN0W10+O1xuICBwdWJsaWMgaXNDb25maWd1cmF0aW9uUm91dGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwdWJsaWMgaXNDYXJ0Um91dGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwdWJsaWMgaXNDYXRhbG9nUm91dGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwdWJsaWMgaXNBc3NldHNSb3V0ZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHB1YmxpYyBpc0VkaXRNb2RlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGlzU2F2ZUluUHJvZ3Jlc3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHB1YmxpYyBpc1N1Ym1pdEluUHJvZ3Jlc3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHB1YmxpYyBkYXRlRm9ybWF0ID0gJ01NLmRkLnl5eXknO1xuXG4gIHB1YmxpYyBhc3NldFByaWNlTGlzdHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQcmljZUxpc3RbXT4oW10pO1xuXG4gIHByaXZhdGUgbW9kZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZT4oQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLlRFU1QpO1xuICBwcml2YXRlIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVEcmFmdFNlcnZpY2U6IFF1b3RlRHJhZnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVBcGlTZXJ2aWNlOiBRdW90ZUFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZkFwaVNlcnZpY2U6IFNhbGVzZm9yY2VBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0NvbmZpZ3VyYXRpb246IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlclNlcnZpY2U6IEZsb3dSb3V0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogRmxvd0RpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnRlZ3JhdGlvblN0YXRlOiBJbnRlZ3JhdGlvblN0YXRlLFxuICAgIHByaXZhdGUgc2hvcHBpbmdDYXJ0U2V0dGluZ3NBcGlTZXJ2aWNlOiBTaG9wcGluZ0NhcnRTZXR0aW5nc0FwaVNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuY29udGV4dFByb3BlcnRpZXMkID0gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlJCgpLnBpcGUobWFwKGN0eCA9PiBjdHgucHJvcGVydGllcykpO1xuICAgIHRoaXMub2JqZWN0TmFtZSQgPSB0aGlzLm1vZGUkLnBpcGUobWFwKG1vZGUgPT4gbW9kZT8udG9Mb2NhbGVMb3dlckNhc2UoKSA/PyAnJykpO1xuXG4gICAgdGhpcy5hY3RpdmVQcmljZUxpc3QkID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5hY3RpdmVQcmljZUxpc3QkO1xuICAgIHRoaXMuaXNSZWFkb25seU1vZGUkID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNQcm9kdWN0cyQucGlwZShtYXAoKCkgPT4gdGhpcy5pc1JlYWRvbmx5TW9kZSgpKSk7XG4gICAgdGhpcy5zdGF0dXMkID0gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlJCgpLnBpcGUobWFwKGNvbnRleHQgPT4gY29udGV4dC5wcm9wZXJ0aWVzLlN0YXR1cyA/PyAnJykpO1xuICAgIHRoaXMuaXNFZGl0TW9kZSQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzRWRpdE1vZGUkKCk7XG5cbiAgICB0aGlzLmFzc2V0c0NvdW50JCA9IHRoaXMuZ2V0QXNzZXRzJCgpLnBpcGUobWFwKGxpbmVJdGVtcyA9PiBsaW5lSXRlbXMubGVuZ3RoKSk7XG4gICAgdGhpcy5wcm9kdWN0cyQgPSB0aGlzLmdldERyYWZ0SXRlbXMkKCkucGlwZShtYXAobGluZUl0ZW1zID0+IHRoaXMuZ2VuZXJhdGVQcm9kdWN0cyhsaW5lSXRlbXMpKSk7XG5cbiAgICB0aGlzLmlzQ29uZmlndXJhdGlvblJvdXRlJCA9IHRoaXMucm91dGVyU2VydmljZS5pc0NvbmZpZ3VyYXRpb25Sb3V0ZSQoKTtcbiAgICB0aGlzLmlzQ2FydFJvdXRlJCA9IHRoaXMucm91dGVyU2VydmljZS5pc0NhcnRSb3V0ZSQoKTtcbiAgICB0aGlzLmlzQ2F0YWxvZ1JvdXRlJCA9IHRoaXMucm91dGVyU2VydmljZS5pc0NhdGFsb2dSb3V0ZSQoKTtcbiAgICB0aGlzLmlzQXNzZXRzUm91dGUkID0gdGhpcy5yb3V0ZXJTZXJ2aWNlLmlzQXNzZXRzUm91dGUkKCk7XG4gICAgdGhpcy5vYmplY3REZXRhaWxzJCA9IHRoaXMuZ2V0T2JqZWN0RGV0YWlscyQoKTtcblxuICAgIHRoaXMuc2hvcHBpbmdDYXJ0U2V0dGluZ3NBcGlTZXJ2aWNlXG4gICAgICAuZ2V0U2V0dGluZ3NNYXAoKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoc2V0dGluZ3MgPT4ge1xuICAgICAgICB0aGlzLmRhdGVGb3JtYXQgPSBnZXRTdXBwb3J0ZWREYXRlRm9ybWF0cyhzZXR0aW5ncy5EQVRFX0ZPUk1BVCA/PyB0aGlzLmRhdGVGb3JtYXQpLmRhdGVQaXBlRm9ybWF0O1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0U2VydmljZVxuICAgICAgLnJlc29sdmUkKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZShjdHggPT4gdGhpcy5tb2RlJC5uZXh0KGN0eC5tb2RlKSk7XG5cbiAgICAvLyB1cGRhdGUgYXNzZXRQcmljZUxpc3RzIG9uIHF1b3RlRHJhZnQgY2hhbmdlIGluIEFDQ09VTlQgbW9kZVxuICAgIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSxcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuaXNBY2NvdW50TW9kZSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuYXNzZXRQcmljZUxpc3RzJC5uZXh0KHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuYXNzZXRQcmljZUxpc3RzKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNBY2NvdW50TW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlJC52YWx1ZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLkFDQ09VTlQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzUXVvdGVNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUkLnZhbHVlID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuUVVPVEU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQWNjb3VudE1vZGUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUkLnBpcGUobWFwKG1vZGUgPT4gbW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLkFDQ09VTlQpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNRdW90ZU1vZGUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUkLnBpcGUobWFwKG1vZGUgPT4gbW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLlFVT1RFKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3BsaXRCdXR0b25BY3Rpb25zKGlzQ2FydFJvdXRlOiBib29sZWFuKTogTWVudUl0ZW1bXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICdTYXZlIHRvIFF1b3RlJyxcbiAgICAgICAgY29tbWFuZDogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuc2F2ZUJ1dHRvbkNsaWNrSGFuZGxlcihpc0NhcnRSb3V0ZSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsYWJlbDogJ1N1Ym1pdCBGb3IgQXBwcm92YWwnLFxuICAgICAgICBjb21tYW5kOiAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5zdWJtaXRCdXR0b25DbGlja0hhbmRsZXIoaXNDYXJ0Um91dGUpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgcHVibGljIGJhY2sob2JqZWN0SWQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXRJZCA9IG9iamVjdElkID8/IHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSgpLnByb3BlcnRpZXMuSWQ7XG5cbiAgICBpZiAodGFyZ2V0SWQpIHtcbiAgICAgIHdpbmRvdy5WRUxPX0JBQ0tfRk4uYXBwbHkobnVsbCwgW3RhcmdldElkXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFNhbGVzZm9yY2VPYmplY3RMaW5rKG9iamVjdElkPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIW9iamVjdElkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59LyR7b2JqZWN0SWR9YDtcbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvU2hvcHBpbmdDYXJ0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1JlYWRvbmx5TW9kZSgpKSB7XG4gICAgICB0aGlzLnJvdXRlclNlcnZpY2UubmF2aWdhdGVUb1Nob3BwaW5nQ2FydCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvQ2F0YWxvZygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNSZWFkb25seU1vZGUoKSkge1xuICAgICAgdGhpcy5yb3V0ZXJTZXJ2aWNlLm5hdmlnYXRlVG9DYXRhbG9nKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5hdmlnYXRlVG9Bc3NldHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzUmVhZG9ubHlNb2RlKCkpIHtcbiAgICAgIHRoaXMucm91dGVyU2VydmljZS5uYXZpZ2F0ZVRvQXNzZXRzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRvY0dlbkJ1dHRvbkNsaWNrSGFuZGxlcihpc0NhcnRSb3V0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzQWNjb3VudE1vZGUpIHtcbiAgICAgIGlmICghdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0FjY291bnROb0NoYW5nZXNEaWFsb2coKS5zdWJzY3JpYmUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93RG9jZ2VuQWNjb3VudFVuc2F2ZWRDaGFuZ2VzRGlhbG9nKCkuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzRWRpdE1vZGUoKSkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dEb2NnZW5SZWFkb25seURpYWxvZygpLnN1YnNjcmliZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghaXNDYXJ0Um91dGUpIHtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93RG9jZ2VuT3V0c2lkZVNob3BwaW5nQ2FydERpYWxvZygpLnN1YnNjcmliZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBzaG91bGRPcGVuJCA9IG9mKHRydWUpO1xuXG4gICAgaWYgKHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaGFzVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgIHNob3VsZE9wZW4kID0gdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dEb2NnZW5VbnNhdmVkQ2hhbmdlc0RpYWxvZygpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChjb25maXJtZWQgPT4ge1xuICAgICAgICAgIGlmICghY29uZmlybWVkKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhpcy5zYXZlUXVvdGUkKHRydWUpLnBpcGUobWFwKCgpID0+IHRydWUpKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cblxuICAgIHNob3VsZE9wZW4kXG4gICAgICAucGlwZShcbiAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgdGFwKHNob3VsZE9wZW4gPT4gc2hvdWxkT3BlbiAmJiB0aGlzLmludGVncmF0aW9uU3RhdGUuZGlzcGF0Y2goT3BlbkRvY0dlbkFjdGlvbigpKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZUJ1dHRvbkNsaWNrSGFuZGxlcihpc0NhcnRSb3V0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5xdW90ZURyYWZ0U2VydmljZS5pc0VkaXRNb2RlKCkpIHtcbiAgICAgIGlmICh0aGlzLmlzUXVvdGVNb2RlKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93UXVvdGVSZWFkb25seU1vZGVEaWFsb2coKS5zdWJzY3JpYmUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93UmVhZG9ubHlNb2RlRGlhbG9nKCkuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNVcHNlbGxRdW90ZVdpdGhvdXRDaGFuZ2VzKCkpIHtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93QWNjb3VudE5vQ2hhbmdlc0RpYWxvZygpLnN1YnNjcmliZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzQWNjb3VudE1vZGUgJiYgIXRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaGFzVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93QWNjb3VudE5vQ2hhbmdlc0RpYWxvZygpLnN1YnNjcmliZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghaXNDYXJ0Um91dGUpIHtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93UXVvdGVPdXRzaWRlU2hvcHBpbmdDYXJ0RGlhbG9nKCkuc3Vic2NyaWJlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGluZUl0ZW1zID0gdGhpcy5mbG93Q29uZmlndXJhdGlvbi5nZXRTbmFwc2hvdCgpO1xuXG4gICAgaWYgKCFsaW5lSXRlbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0VtcHR5Q2FydERpYWxvZygpLnN1YnNjcmliZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2F2ZVF1b3RlJCgpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIHN1Ym1pdEJ1dHRvbkNsaWNrSGFuZGxlcihpc0NhcnRSb3V0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzUXVvdGVNb2RlICYmICF0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzRWRpdE1vZGUoKSkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dSZWFkb25seVF1b3RlU3VibWl0RmFpbHVyZURpYWxvZygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzVXBzZWxsUXVvdGVXaXRob3V0Q2hhbmdlcygpKSB7XG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0FjY291bnROb0NoYW5nZXNEaWFsb2coKS5zdWJzY3JpYmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0FjY291bnRNb2RlKSB7XG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0FjY291bnRTdWJtaXRGYWlsdXJlRGlhbG9nKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFpc0NhcnRSb3V0ZSkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dPdXRzaWRlU2hvcHBpbmdDYXJ0UXVvdGVTdWJtaXRGYWlsdXJlRGlhbG9nKCkuc3Vic2NyaWJlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcXVvdGVEcmFmdCA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdDtcbiAgICBpZiAoIXF1b3RlRHJhZnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzU3VibWl0SW5Qcm9ncmVzcyQubmV4dCh0cnVlKTtcblxuICAgIHRoaXMucXVvdGVBcGlTZXJ2aWNlXG4gICAgICAuc3VibWl0UXVvdGUocXVvdGVEcmFmdClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKHsgcXVvdGVJZCB9KSA9PiB7XG4gICAgICAgICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuYmFjayhxdW90ZUlkKTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuaXNTdWJtaXRJblByb2dyZXNzJC5uZXh0KGZhbHNlKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdFByaWNlTGlzdChwcmljZUxpc3RJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS51cGRhdGVBY3RpdmVQcmljZUxpc3QocHJpY2VMaXN0SWQpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUNhcnRPdmVybGF5KGNhcnQ6IENhcnRQcmV2aWV3Q29tcG9uZW50LCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNSZWFkb25seU1vZGUoKSkge1xuICAgICAgY2FydD8ub3ZlcmxheVBhbmVsLnRvZ2dsZShldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzYXZlUXVvdGUkKHN0YXlPblBhZ2UgPSBmYWxzZSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnRGb3JBY3RpdmVQcmljZUxpc3Q7XG4gICAgaWYgKCFxdW90ZURyYWZ0KSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzU2F2ZUluUHJvZ3Jlc3MkLm5leHQodHJ1ZSk7XG5cbiAgICByZXR1cm4gdGhpcy5xdW90ZUFwaVNlcnZpY2UudXBzZXJ0UXVvdGUocXVvdGVEcmFmdCkucGlwZShcbiAgICAgIHRhcCgoeyBxdW90ZUlkIH0pID0+IHtcbiAgICAgICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuXG4gICAgICAgIGlmICghc3RheU9uUGFnZSkge1xuICAgICAgICAgIHRoaXMuYmFjayhxdW90ZUlkKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzU2F2ZUluUHJvZ3Jlc3MkLm5leHQoZmFsc2UpKSxcbiAgICAgIG1hcChub29wKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHF1ZXJ5TmFtZSQob2JqZWN0TmFtZTogc3RyaW5nLCBpZD86IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKCFpZCkge1xuICAgICAgcmV0dXJuIG9mKCcnKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWFyY2hSZXF1ZXN0OiBTZWFyY2hSZXF1ZXN0ID0ge1xuICAgICAgY291bnQ6IDEsXG4gICAgICByYXdDb25kaXRpb246IGBJZCA9ICcke2lkfSdgLFxuICAgICAgZmllbGRzOiBbJ05hbWUnXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuc2ZBcGlTZXJ2aWNlLnF1ZXJ5PGFueT4oc2VhcmNoUmVxdWVzdCwgb2JqZWN0TmFtZSkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gcmVzdWx0WzBdPy5OYW1lID8/ICcnKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldE9iamVjdERldGFpbHMkKCk6IE9ic2VydmFibGU8SGVhZGVyT2JqZWN0RGV0YWlscz4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUkKCkucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2Q3R4LCBjdXJyQ3R4KSA9PiBwcmV2Q3R4LnByb3BlcnRpZXMuSWQgPT09IGN1cnJDdHgucHJvcGVydGllcy5JZCksXG4gICAgICBtYXAoY3R4ID0+IHtcbiAgICAgICAgY29uc3QgaXNBY2NvdW50TW9kZSA9IGN0eC5tb2RlID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuQUNDT1VOVDtcbiAgICAgICAgY29uc3QgaXNRdW90ZU1vZGUgPSBjdHgubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLlFVT1RFO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYWNjb3VudElkOiBpc0FjY291bnRNb2RlID8gY3R4LnByb3BlcnRpZXMuSWQgOiBjdHgucHJvcGVydGllcy5BY2NvdW50SWQsXG4gICAgICAgICAgb3Bwb3J0dW5pdHlJZDogY3R4LnByb3BlcnRpZXMuT3Bwb3J0dW5pdHlJZCxcbiAgICAgICAgICBxdW90ZUlkOiBpc1F1b3RlTW9kZSA/IGN0eC5wcm9wZXJ0aWVzLklkIDogdW5kZWZpbmVkLFxuICAgICAgICAgIHF1b3RlTmFtZTogaXNRdW90ZU1vZGUgPyBjdHgucHJvcGVydGllcy5OYW1lIDogdW5kZWZpbmVkLFxuICAgICAgICAgIHF1b3RlTnVtYmVyOiBpc1F1b3RlTW9kZSA/IGN0eC5wcm9wZXJ0aWVzLlF1b3RlTnVtYmVyIDogdW5kZWZpbmVkLFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoZGV0YWlscyA9PlxuICAgICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICBvZihkZXRhaWxzKSxcbiAgICAgICAgICB0aGlzLnF1ZXJ5TmFtZSQoJ0FjY291bnQnLCBkZXRhaWxzLmFjY291bnRJZCksXG4gICAgICAgICAgdGhpcy5xdWVyeU5hbWUkKCdPcHBvcnR1bml0eScsIGRldGFpbHMub3Bwb3J0dW5pdHlJZCksXG4gICAgICAgIF0pLFxuICAgICAgKSxcbiAgICAgIG1hcCgoW2RldGFpbHMsIGFjY291bnROYW1lLCBvcHBvcnR1bml0eU5hbWVdKSA9PiAoeyAuLi5kZXRhaWxzLCBhY2NvdW50TmFtZSwgb3Bwb3J0dW5pdHlOYW1lIH0pKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRNZXRyaWModmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiAodmFsdWUgPyBOdW1iZXIodmFsdWUpIDogMCkudG9GaXhlZCgyKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREcmFmdEl0ZW1zJCgpOiBPYnNlcnZhYmxlPExpbmVJdGVtW10+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmZsb3dDb25maWd1cmF0aW9uLmdldCgpLFxuICAgICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlLnN0YXRlJC5waXBlKFxuICAgICAgICBtYXAoc3RhdGUgPT4gc3RhdGUubW9kaWZpZWRBc3NldHMpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgKSxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbbGluZUl0ZW1zLCBtb2RpZmllZEFzc2V0c10pID0+XG4gICAgICAgIGxpbmVJdGVtcy5maWx0ZXIobGkgPT4gbGkuc3RhdHVzICE9PSAnRVhJU1QnIHx8IChsaS5hc3NldElkICYmIG1vZGlmaWVkQXNzZXRzPy5bbGkuYXNzZXRJZF0pKSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBc3NldHMkKCk6IE9ic2VydmFibGU8TGluZUl0ZW1bXT4ge1xuICAgIHJldHVybiB0aGlzLmZsb3dDb25maWd1cmF0aW9uXG4gICAgICAuZ2V0KClcbiAgICAgIC5waXBlKG1hcChsaW5lSXRlbXMgPT4gbGluZUl0ZW1zLmZpbHRlcihsaSA9PiAoISFsaS5hc3NldElkIHx8ICEhbGkub3Blbk9yZGVyTGluZUl0ZW1JZCkgJiYgIWxpLnJhbXBJbnN0YW5jZUlkKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVByb2R1Y3RzKGxpbmVJdGVtczogTGluZUl0ZW1bXSk6IEhlYWRlclByb2R1Y3RbXSB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICBjb25zdCBub3cgPSBkYXRlLmdldFRpbWUoKTtcbiAgICBjb25zdCB0ZXJtUGFyZW50SWRzID0gbGluZUl0ZW1zLm1hcChsaSA9PiBsaS5yYW1wSW5zdGFuY2VJZCkuZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgcmV0dXJuIGxpbmVJdGVtcy5yZWR1Y2UoKHJlc3VsdDogSGVhZGVyUHJvZHVjdFtdLCBsaSkgPT4ge1xuICAgICAgLy8gZmluZCBtYWluIHRlcm0gbGluZSBpdGVtXG4gICAgICBpZiAobGkucmFtcEluc3RhbmNlSWQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgLy8gZmluZCBjdXJyZW50IHRlcm0gbGluZSBpdGVtXG4gICAgICBsZXQgdGFyZ2V0OiBMaW5lSXRlbSB8IHVuZGVmaW5lZCA9IGxpO1xuICAgICAgd2hpbGUgKHRhcmdldCAmJiB0YXJnZXQuZW5kRGF0ZSAmJiBuZXcgRGF0ZSh0YXJnZXQuZW5kRGF0ZSkuZ2V0VGltZSgpIDw9IG5vdykge1xuICAgICAgICB0YXJnZXQgPSBsaW5lSXRlbXMuZmluZChzdWIgPT4gc3ViLnJhbXBJbnN0YW5jZUlkID09PSBsaS5pZCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LnByb2R1Y3RJZCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogdGFyZ2V0LmlkLFxuICAgICAgICAgICAgcHJvZHVjdElkOiB0YXJnZXQucHJvZHVjdElkLFxuICAgICAgICAgICAgbmFtZTogdGFyZ2V0Lm5hbWUsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRhcmdldC5wcm9wZXJ0aWVzWycjY29uZmlndXJhYmxlJ10gPT09ICd0cnVlJyxcbiAgICAgICAgICAgIGRlbGV0ZWQ6IHRhcmdldC5hY3Rpb25Db2RlID09PSAnREVMRVRFJyxcbiAgICAgICAgICAgIGhhc1Rlcm06IHRlcm1QYXJlbnRJZHMuaW5jbHVkZXModGFyZ2V0LmlkKSxcbiAgICAgICAgICAgIHF0eTogdGFyZ2V0LnF0eSxcbiAgICAgICAgICAgIG1ycjogdGhpcy5mb3JtYXRNZXRyaWModGFyZ2V0LnByb3BlcnRpZXMuVkRNX1RvdGFsX01SUiksXG4gICAgICAgICAgICBucnI6IHRoaXMuZm9ybWF0TWV0cmljKHRhcmdldC5wcm9wZXJ0aWVzLlZETV9Ub3RhbF9OUlIpLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSwgW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1JlYWRvbmx5TW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0Py5jb250ZXh0LnByb3BlcnRpZXMubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLkFDQ09VTlQgJiZcbiAgICAgICF0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmhhc1Byb2R1Y3RzXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNVcHNlbGxRdW90ZVdpdGhvdXRDaGFuZ2VzKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vVXBkYXRlcyA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuYWN0aXZlQ3VycmVudFN0YXRlLmV2ZXJ5KGxpbmVJdGVtID0+IGxpbmVJdGVtLmFjdGlvbkNvZGUgPT09ICdFWElTVCcpO1xuICAgIGNvbnN0IHNhbWVOdW1iZXJPZlByb2R1Y3RzID1cbiAgICAgIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuZ2V0SW5pdGlhbEN1cnJlbnRTdGF0ZSgpLmxlbmd0aCA9PT0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5hY3RpdmVDdXJyZW50U3RhdGUubGVuZ3RoO1xuXG4gICAgcmV0dXJuIG5vVXBkYXRlcyAmJiBzYW1lTnVtYmVyT2ZQcm9kdWN0cztcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRleHRQcm9wZXJ0aWVzJCB8IGFzeW5jIGFzIGNvbnRleHRQcm9wZXJ0aWVzXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJvYmplY3REZXRhaWxzJCB8IGFzeW5jIGFzIGRldGFpbHNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxvdy1pbmZvXCI+XG4gICAgICA8bmF2IGNsYXNzPVwibmF2LWl0ZW0gbmF2LWJhY2tcIiAoY2xpY2spPVwiYmFjaygpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwibmF2LWljb24gdmwtaWNvbiB2bC1pY29uLWFycm93LWxlZnRcIj48L2k+XG5cbiAgICAgICAgPHNwYW4+IEJhY2sgdG8ge3sgb2JqZWN0TmFtZSQgfCBhc3luYyB8IHRpdGxlY2FzZSB9fTwvc3Bhbj5cbiAgICAgIDwvbmF2PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNBY2NvdW50TW9kZSQgfCBhc3luY1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRvdC1zZXBhcmF0b3JcIj48L3NwYW4+XG5cbiAgICAgICAgPG5hdiBjbGFzcz1cImFjY291bnQtbmFtZVwiIFtwVG9vbHRpcF09XCJjb250ZXh0UHJvcGVydGllcy5OYW1lID8/ICcnXCIgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCIgW3Nob3dEZWxheV09XCIxMDAwXCI+XG4gICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwiZ2V0U2FsZXNmb3JjZU9iamVjdExpbmsoY29udGV4dFByb3BlcnRpZXMuSWQpXCI+e3sgY29udGV4dFByb3BlcnRpZXMuTmFtZSB9fTwvYT5cbiAgICAgICAgPC9uYXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUXVvdGVNb2RlJCB8IGFzeW5jXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZG90LXNlcGFyYXRvclwiPjwvc3Bhbj5cblxuICAgICAgICA8c3Bhbj5RdW90ZSAje3sgZGV0YWlscy5xdW90ZU51bWJlciB9fTwvc3Bhbj5cblxuICAgICAgICA8c3BhbiBjbGFzcz1cImRvdC1zZXBhcmF0b3JcIj48L3NwYW4+XG5cbiAgICAgICAgPG5hdiBjbGFzcz1cIm5hdi1pdGVtXCIgKGNsaWNrKT1cInF1b3RlRGV0YWlscy50b2dnbGUoJGV2ZW50KVwiPlxuICAgICAgICAgIDxzcGFuPnt7IHN0YXR1cyQgfCBhc3luYyB9fTwvc3Bhbj5cblxuICAgICAgICAgIDxpICpuZ0lmPVwiIXF1b3RlRGV0YWlscy5vdmVybGF5VmlzaWJsZVwiIGNsYXNzPVwidmwtaWNvbiB2bC1pY29uLWNoZXZyb24tZG93biBpY29uLXdpdGgtbWFyZ2luXCI+PC9pPlxuICAgICAgICAgIDxpICpuZ0lmPVwicXVvdGVEZXRhaWxzLm92ZXJsYXlWaXNpYmxlXCIgY2xhc3M9XCJ2bC1pY29uIHZsLWljb24tY2hldnJvbi11cCBpY29uLXdpdGgtbWFyZ2luXCI+PC9pPlxuICAgICAgICA8L25hdj5cblxuICAgICAgICA8cC1vdmVybGF5UGFuZWwgc3R5bGVDbGFzcz1cIm5hdmlnYXRpb24tc2V0dGluZ3Mtb3ZlcmxheSBmbG93LWhlYWRlci1vdmVybGF5IGNlbnRlclwiICNxdW90ZURldGFpbHM+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbG93LWhlYWRlci1vdmVybGF5X193cmFwcGVyXCI+XG4gICAgICAgICAgICAgIDxoMiBjbGFzcz1cImZsb3ctaGVhZGVyLW92ZXJsYXlfX3RpdGxlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+UXVvdGUgSW5mb3JtYXRpb248L3NwYW4+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ2bC1pY29uIHZsLWljb24tY2xvc2UgY2xvc2UtaWNvblwiIChjbGljayk9XCJxdW90ZURldGFpbHMuaGlkZSgpXCI+PC9pPlxuICAgICAgICAgICAgICA8L2gyPlxuXG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImluZm8tbGlzdFwiPlxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImluZm8tbGlzdF9fcm93XCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5BY2NvdW50IE5hbWU6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwiZ2V0U2FsZXNmb3JjZU9iamVjdExpbmsoZGV0YWlscy5hY2NvdW50SWQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGRldGFpbHMuYWNjb3VudE5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJpbmZvLWxpc3RfX3Jvd1wiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+T3Bwb3J0dW5pdHkgTmFtZTo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBbaHJlZl09XCJnZXRTYWxlc2ZvcmNlT2JqZWN0TGluayhkZXRhaWxzLm9wcG9ydHVuaXR5SWQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGRldGFpbHMub3Bwb3J0dW5pdHlOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiaW5mby1saXN0X19yb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlF1b3RlIE5hbWU6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwiZ2V0U2FsZXNmb3JjZU9iamVjdExpbmsoZGV0YWlscy5xdW90ZUlkKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBkZXRhaWxzLnF1b3RlTmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImluZm8tbGlzdF9fcm93XCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5RdW90ZSBOdW1iZXI6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwiZ2V0U2FsZXNmb3JjZU9iamVjdExpbmsoZGV0YWlscy5xdW90ZUlkKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBkZXRhaWxzLnF1b3RlTnVtYmVyIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3Atb3ZlcmxheVBhbmVsPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxvdy1uYXZpZ2F0aW9uXCI+XG4gICAgICA8bmctY29udGFpbmVyICp2bExldD1cImlzUmVhZG9ubHlNb2RlJCB8IGFzeW5jIGFzIGlzUmVhZG9ubHlNb2RlXCI+XG4gICAgICAgIDxuYXZcbiAgICAgICAgICBjbGFzcz1cIm5hdi1pdGVtXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogKGlzQXNzZXRzUm91dGUkIHwgYXN5bmMpLCBkaXNhYmxlZDogaXNSZWFkb25seU1vZGUgfVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9Bc3NldHMoKVwiXG4gICAgICAgID5cbiAgICAgICAgICBBc3NldHMgKHt7IGFzc2V0c0NvdW50JCB8IGFzeW5jIH19KVxuICAgICAgICA8L25hdj5cbiAgICAgICAgPG5hdlxuICAgICAgICAgIGNsYXNzPVwibmF2LWl0ZW1cIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiAoaXNDYXRhbG9nUm91dGUkIHwgYXN5bmMpLCBkaXNhYmxlZDogaXNSZWFkb25seU1vZGUgfVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9DYXRhbG9nKClcIlxuICAgICAgICA+XG4gICAgICAgICAgQ2F0YWxvZ1xuICAgICAgICA8L25hdj5cbiAgICAgICAgPG5hdiBjbGFzcz1cIm5hdi1pdGVtIGRpc2FibGVkXCIgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGlzQ29uZmlndXJhdGlvblJvdXRlJCB8IGFzeW5jIH1cIj5Db25maWd1cmF0b3I8L25hdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqdmxMZXQ9XCJwcm9kdWN0cyQgfCBhc3luYyBhcyBwcm9kdWN0c1wiPlxuICAgICAgICAgIDxuYXZcbiAgICAgICAgICAgIGNsYXNzPVwibmF2LWl0ZW1cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IChpc0NhcnRSb3V0ZSQgfCBhc3luYyksIGRpc2FibGVkOiBpc1JlYWRvbmx5TW9kZSB9XCJcbiAgICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvU2hvcHBpbmdDYXJ0KClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIFNob3BwaW5nIENhcnQgKHt7IHByb2R1Y3RzPy5sZW5ndGggPz8gMCB9fSlcbiAgICAgICAgICA8L25hdj5cblxuICAgICAgICAgIDxuYXZcbiAgICAgICAgICAgIGNsYXNzPVwibmF2LXBvcG92ZXItdG9nZ2xlXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiAoaXNDYXJ0Um91dGUkIHwgYXN5bmMpLCBkaXNhYmxlZDogaXNSZWFkb25seU1vZGUgfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ2FydE92ZXJsYXkoY2FydCwgJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgKm5nSWY9XCIhY2FydD8ub3ZlcmxheVBhbmVsPy5vdmVybGF5VmlzaWJsZVwiIGNsYXNzPVwidmwtaWNvbiB2bC1pY29uLWNoZXZyb24tZG93biBpY29uLXdpdGgtbWFyZ2luXCI+PC9pPlxuICAgICAgICAgICAgPGkgKm5nSWY9XCJjYXJ0Py5vdmVybGF5UGFuZWw/Lm92ZXJsYXlWaXNpYmxlXCIgY2xhc3M9XCJ2bC1pY29uIHZsLWljb24tY2hldnJvbi11cCBpY29uLXdpdGgtbWFyZ2luXCI+PC9pPlxuICAgICAgICAgIDwvbmF2PlxuXG4gICAgICAgICAgPHZsLWNhcnQtcHJldmlldyAjY2FydCBbcHJvZHVjdHNdPVwicHJvZHVjdHMgPz8gW11cIj48L3ZsLWNhcnQtcHJldmlldz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmbG93LWNvbnRyb2xzXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGlzUmVhZG9ubHlNb2RlJCB8IGFzeW5jKSA9PT0gZmFsc2VcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqdmxMZXQ9XCJhY3RpdmVQcmljZUxpc3QkIHwgYXN5bmMgYXMgcHJpY2VMaXN0XCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnZsTGV0PVwiYXNzZXRQcmljZUxpc3RzJCB8IGFzeW5jIGFzIGFzc2V0UHJpY2VMaXN0c1wiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIoaXNBY2NvdW50TW9kZSQgfCBhc3luYykgJiYgYXNzZXRQcmljZUxpc3RzICYmIGFzc2V0UHJpY2VMaXN0cy5sZW5ndGggPiAxOyBlbHNlIHNpbmdsZVByaWNlTGlzdFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmF2IGNsYXNzPVwibmF2LWl0ZW1cIiAoY2xpY2spPVwicHJpY2VMaXN0c092ZXJsYXk/LnRvZ2dsZSgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyBwcmljZUxpc3Q/Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFwcmljZUxpc3RzT3ZlcmxheT8ub3ZlcmxheVZpc2libGVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZsLWljb24gdmwtaWNvbi1jaGV2cm9uLWRvd24gaWNvbi13aXRoLW1hcmdpblwiXG4gICAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJwcmljZUxpc3RzT3ZlcmxheT8ub3ZlcmxheVZpc2libGVcIiBjbGFzcz1cInZsLWljb24gdmwtaWNvbi1jaGV2cm9uLXVwIGljb24td2l0aC1tYXJnaW5cIj48L2k+XG4gICAgICAgICAgICAgICAgPC9uYXY+XG5cbiAgICAgICAgICAgICAgICA8cC1vdmVybGF5UGFuZWwgc3R5bGVDbGFzcz1cInByaWNlLWxpc3Qtb3ZlcmxheVwiICNwcmljZUxpc3RzT3ZlcmxheT5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBhc3NldFByaWNlTGlzdHNcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHJpY2UtbGlzdC1vcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwicHJpY2VMaXN0Py5pZCA9PT0gb3B0aW9uLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0UHJpY2VMaXN0KG9wdGlvbi5pZCk7IHByaWNlTGlzdHNPdmVybGF5LmhpZGUoKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvcC1vdmVybGF5UGFuZWw+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlUHJpY2VMaXN0PlxuICAgICAgICAgICAgICA8ZGl2Pnt7IHByaWNlTGlzdD8ubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRleHRQcm9wZXJ0aWVzLlN0YXJ0RGF0ZVwiPnt7IGNvbnRleHRQcm9wZXJ0aWVzLlN0YXJ0RGF0ZSB8IGRhdGUgOiBkYXRlRm9ybWF0IH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDx2bC1tZXRyaWNzPjwvdmwtbWV0cmljcz5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqdmxMZXQ9XCJpc0NhcnRSb3V0ZSQgfCBhc3luYyBhcyBpc0NhcnRSb3V0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICp2bExldD1cImlzUmVhZG9ubHlNb2RlJCB8IGFzeW5jIGFzIGlzUmVhZG9ubHlNb2RlXCI+XG4gICAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImRvYy1nZW4tYnV0dG9uXCJcbiAgICAgICAgICAgIGljb249XCJ2bC1pY29uIHZsLWljb24tZG9jLWdlblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNSZWFkb25seU1vZGUgPT09IHRydWVcIlxuICAgICAgICAgICAgKG9uQ2xpY2spPVwiZG9jR2VuQnV0dG9uQ2xpY2tIYW5kbGVyKGlzQ2FydFJvdXRlID09PSB0cnVlKVwiXG4gICAgICAgICAgICBwVG9vbHRpcD1cIkdlbmVyYXRlIERvY3VtZW50XCJcbiAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgICAgICAgICB0b29sdGlwU3R5bGVDbGFzcz1cInZsLWluZm8tdG9vbHRpcFwiXG4gICAgICAgICAgPjwvcC1idXR0b24+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICp2bExldD1cImlzU2F2ZUluUHJvZ3Jlc3MkIHwgYXN5bmMgYXMgaXNTYXZlSW5Qcm9ncmVzc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqdmxMZXQ9XCJpc1N1Ym1pdEluUHJvZ3Jlc3MkIHwgYXN5bmMgYXMgaXNTdWJtaXRJblByb2dyZXNzXCI+XG4gICAgICAgICAgICAgIDxwLXNwbGl0QnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNTYXZlSW5Qcm9ncmVzcyAmJiAhaXNTdWJtaXRJblByb2dyZXNzXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlNhdmUgdG8gUXVvdGVcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInNhdmVCdXR0b25DbGlja0hhbmRsZXIoaXNDYXJ0Um91dGUgPT09IHRydWUpXCJcbiAgICAgICAgICAgICAgICBbbW9kZWxdPVwiZ2V0U3BsaXRCdXR0b25BY3Rpb25zKGlzQ2FydFJvdXRlID09PSB0cnVlKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzUmVhZG9ubHlNb2RlID09PSB0cnVlXCJcbiAgICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tb3V0bGluZWRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvcC1zcGxpdEJ1dHRvbj5cblxuICAgICAgICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cImlzU2F2ZUluUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2F2ZS1idXR0b25cIlxuICAgICAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJTYXZpbmdcIlxuICAgICAgICAgICAgICAgIFtsb2FkaW5nXT1cInRydWVcIlxuICAgICAgICAgICAgICA+PC9wLWJ1dHRvbj5cblxuICAgICAgICAgICAgICA8cC1idXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cImlzU3VibWl0SW5Qcm9ncmVzc1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdWJtaXQtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1idXR0b25cIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwiU3VibWl0dGluZ1wiXG4gICAgICAgICAgICAgICAgW2xvYWRpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID48L3AtYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
341
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9jb21wb25lbnRzL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL2NvbXBvbmVudHMvaGVhZGVyL2hlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLDhCQUE4QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEcsT0FBTyxFQUNMLHdCQUF3QixFQUV4Qix1QkFBdUIsR0FLeEIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQ0wsY0FBYyxFQUNkLHdCQUF3QixFQUN4QixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGlCQUFpQixHQUNsQixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxHQUFHLEVBQ0gsSUFBSSxFQUVKLEVBQUUsRUFDRixPQUFPLEVBQ1AsU0FBUyxFQUNULElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFZdkUsTUFBTSxPQUFPLG1CQUFtQjtJQXVCOUIsWUFDVSxjQUE4QixFQUM5QixpQkFB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QUF3QixDQUFDLE9BQU87WUFDL0YsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUNwQyxDQUFDO0lBQ0osQ0FBQztJQUVPLDJCQUEyQjtRQUNqQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsS0FBSyxPQUFPLENBQUMsQ0FBQztRQUMvRyxNQUFNLG9CQUFvQixHQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztRQUU5RyxPQUFPLFNBQVMsSUFBSSxvQkFBb0IsQ0FBQztJQUMzQyxDQUFDOztnSEF2YVUsbUJBQW1CO29HQUFuQixtQkFBbUIsc0RDbERoQyxxMVFBd01BOzJGRHRKYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsZ0JBQWdCLG1CQUdULHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUXVvdGVBcGlTZXJ2aWNlLCBTYWxlc2ZvcmNlQXBpU2VydmljZSwgU2hvcHBpbmdDYXJ0U2V0dGluZ3NBcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZWFwcHMvYXBpJztcbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZSxcbiAgQ29udGV4dFByb3BlcnRpZXMsXG4gIGdldFN1cHBvcnRlZERhdGVGb3JtYXRzLFxuICBMaW5lSXRlbSxcbiAgUHJpY2VMaXN0LFxuICBTZWFyY2hSZXF1ZXN0LFxuICBWbFdpbmRvdyxcbn0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBJbnRlZ3JhdGlvblN0YXRlLCBPcGVuRG9jR2VuQWN0aW9uIH0gZnJvbSAnQHZlbG9jZWFwcHMvc2RrL2Ntcyc7XG5pbXBvcnQge1xuICBDb250ZXh0U2VydmljZSxcbiAgRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICBnZXRPcmlnaW5QYXJlbnQsXG4gIGlzTGluZUl0ZW1Nb2RpZmllZCxcbiAgUXVvdGVEcmFmdFNlcnZpY2UsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmlsdGVyLFxuICBmaW5hbGl6ZSxcbiAgZmlyc3QsXG4gIG1hcCxcbiAgbm9vcCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIFN1YmplY3QsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFrZVVudGlsLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmxvd0RpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mbG93LWRpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dSb3V0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmxvdy1yb3V0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDYXJ0UHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4vY2FydC1vdmVybGF5L2NhcnQtcHJldmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSGVhZGVyT2JqZWN0RGV0YWlscywgSGVhZGVyUHJvZHVjdCB9IGZyb20gJy4vaGVhZGVyLnR5cGVzJztcblxuZGVjbGFyZSBjb25zdCB3aW5kb3c6IFZsV2luZG93O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2bC1mbG93LWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZsb3dIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBvYmplY3ROYW1lJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBwdWJsaWMgY29udGV4dFByb3BlcnRpZXMkOiBPYnNlcnZhYmxlPENvbnRleHRQcm9wZXJ0aWVzPjtcbiAgcHVibGljIGFjdGl2ZVByaWNlTGlzdCQ6IE9ic2VydmFibGU8UHJpY2VMaXN0IHwgbnVsbD47XG4gIHB1YmxpYyBpc1JlYWRvbmx5TW9kZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHB1YmxpYyBzdGF0dXMkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIHB1YmxpYyBvYmplY3REZXRhaWxzJDogT2JzZXJ2YWJsZTxIZWFkZXJPYmplY3REZXRhaWxzPjtcbiAgcHVibGljIGFzc2V0c0NvdW50JDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICBwdWJsaWMgcHJvZHVjdHMkOiBPYnNlcnZhYmxlPEhlYWRlclByb2R1Y3RbXT47XG4gIHB1YmxpYyBpc0NvbmZpZ3VyYXRpb25Sb3V0ZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHB1YmxpYyBpc0NhcnRSb3V0ZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHB1YmxpYyBpc0NhdGFsb2dSb3V0ZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHB1YmxpYyBpc0Fzc2V0c1JvdXRlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGlzRWRpdE1vZGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwdWJsaWMgaXNTYXZlSW5Qcm9ncmVzcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHVibGljIGlzU3VibWl0SW5Qcm9ncmVzcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHVibGljIGRhdGVGb3JtYXQgPSAnTU0uZGQueXl5eSc7XG5cbiAgcHVibGljIGFzc2V0UHJpY2VMaXN0cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFByaWNlTGlzdFtdPihbXSk7XG5cbiAgcHJpdmF0ZSBtb2RlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29uZmlndXJhdGlvbkNvbnRleHRNb2RlPihDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuVEVTVCk7XG4gIHByaXZhdGUgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdW90ZURyYWZ0U2VydmljZTogUXVvdGVEcmFmdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdW90ZUFwaVNlcnZpY2U6IFF1b3RlQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHNmQXBpU2VydmljZTogU2FsZXNmb3JjZUFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93Q29uZmlndXJhdGlvbjogRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyU2VydmljZTogRmxvd1JvdXRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBGbG93RGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIGludGVncmF0aW9uU3RhdGU6IEludGVncmF0aW9uU3RhdGUsXG4gICAgcHJpdmF0ZSBzaG9wcGluZ0NhcnRTZXR0aW5nc0FwaVNlcnZpY2U6IFNob3BwaW5nQ2FydFNldHRpbmdzQXBpU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5jb250ZXh0UHJvcGVydGllcyQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUkKCkucGlwZShtYXAoY3R4ID0+IGN0eC5wcm9wZXJ0aWVzKSk7XG4gICAgdGhpcy5vYmplY3ROYW1lJCA9IHRoaXMubW9kZSQucGlwZShtYXAobW9kZSA9PiBtb2RlPy50b0xvY2FsZUxvd2VyQ2FzZSgpID8/ICcnKSk7XG5cbiAgICB0aGlzLmFjdGl2ZVByaWNlTGlzdCQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmFjdGl2ZVByaWNlTGlzdCQ7XG4gICAgdGhpcy5pc1JlYWRvbmx5TW9kZSQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmhhc1Byb2R1Y3RzJC5waXBlKG1hcCgoKSA9PiB0aGlzLmlzUmVhZG9ubHlNb2RlKCkpKTtcbiAgICB0aGlzLnN0YXR1cyQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUkKCkucGlwZShtYXAoY29udGV4dCA9PiBjb250ZXh0LnByb3BlcnRpZXMuU3RhdHVzID8/ICcnKSk7XG4gICAgdGhpcy5pc0VkaXRNb2RlJCA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaXNFZGl0TW9kZSQoKTtcblxuICAgIHRoaXMuYXNzZXRzQ291bnQkID0gdGhpcy5nZXRBc3NldHMkKCkucGlwZShtYXAobGluZUl0ZW1zID0+IGxpbmVJdGVtcy5sZW5ndGgpKTtcbiAgICB0aGlzLnByb2R1Y3RzJCA9IHRoaXMuZ2V0RHJhZnRJdGVtcyQoKS5waXBlKG1hcChsaW5lSXRlbXMgPT4gdGhpcy5nZW5lcmF0ZVByb2R1Y3RzKGxpbmVJdGVtcykpKTtcblxuICAgIHRoaXMuaXNDb25maWd1cmF0aW9uUm91dGUkID0gdGhpcy5yb3V0ZXJTZXJ2aWNlLmlzQ29uZmlndXJhdGlvblJvdXRlJCgpO1xuICAgIHRoaXMuaXNDYXJ0Um91dGUkID0gdGhpcy5yb3V0ZXJTZXJ2aWNlLmlzQ2FydFJvdXRlJCgpO1xuICAgIHRoaXMuaXNDYXRhbG9nUm91dGUkID0gdGhpcy5yb3V0ZXJTZXJ2aWNlLmlzQ2F0YWxvZ1JvdXRlJCgpO1xuICAgIHRoaXMuaXNBc3NldHNSb3V0ZSQgPSB0aGlzLnJvdXRlclNlcnZpY2UuaXNBc3NldHNSb3V0ZSQoKTtcbiAgICB0aGlzLm9iamVjdERldGFpbHMkID0gdGhpcy5nZXRPYmplY3REZXRhaWxzJCgpO1xuXG4gICAgdGhpcy5zaG9wcGluZ0NhcnRTZXR0aW5nc0FwaVNlcnZpY2VcbiAgICAgIC5nZXRTZXR0aW5nc01hcCgpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZShzZXR0aW5ncyA9PiB7XG4gICAgICAgIHRoaXMuZGF0ZUZvcm1hdCA9IGdldFN1cHBvcnRlZERhdGVGb3JtYXRzKHNldHRpbmdzLkRBVEVfRk9STUFUID8/IHRoaXMuZGF0ZUZvcm1hdCkuZGF0ZVBpcGVGb3JtYXQ7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHRTZXJ2aWNlXG4gICAgICAucmVzb2x2ZSQoKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpXG4gICAgICAuc3Vic2NyaWJlKGN0eCA9PiB0aGlzLm1vZGUkLm5leHQoY3R4Lm1vZGUpKTtcblxuICAgIC8vIHVwZGF0ZSBhc3NldFByaWNlTGlzdHMgb24gcXVvdGVEcmFmdCBjaGFuZ2UgaW4gQUNDT1VOVCBtb2RlXG4gICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0JFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5pc0FjY291bnRNb2RlKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5hc3NldFByaWNlTGlzdHMkLm5leHQodGhpcy5xdW90ZURyYWZ0U2VydmljZS5hc3NldFByaWNlTGlzdHMpKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveWVkJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0FjY291bnRNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUkLnZhbHVlID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuQUNDT1VOVDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNRdW90ZU1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSQudmFsdWUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5RVU9URTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNBY2NvdW50TW9kZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSQucGlwZShtYXAobW9kZSA9PiBtb2RlID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuQUNDT1VOVCkpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1F1b3RlTW9kZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSQucGlwZShtYXAobW9kZSA9PiBtb2RlID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuUVVPVEUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTcGxpdEJ1dHRvbkFjdGlvbnMoaXNDYXJ0Um91dGU6IGJvb2xlYW4pOiBNZW51SXRlbVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBsYWJlbDogJ1NhdmUgdG8gUXVvdGUnLFxuICAgICAgICBjb21tYW5kOiAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5zYXZlQnV0dG9uQ2xpY2tIYW5kbGVyKGlzQ2FydFJvdXRlKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAnU3VibWl0IEZvciBBcHByb3ZhbCcsXG4gICAgICAgIGNvbW1hbmQ6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLnN1Ym1pdEJ1dHRvbkNsaWNrSGFuZGxlcihpc0NhcnRSb3V0ZSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBwdWJsaWMgYmFjayhvYmplY3RJZD86IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldElkID0gb2JqZWN0SWQgPz8gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCkucHJvcGVydGllcy5JZDtcblxuICAgIGlmICh0YXJnZXRJZCkge1xuICAgICAgd2luZG93LlZFTE9fQkFDS19GTi5hcHBseShudWxsLCBbdGFyZ2V0SWRdKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0U2FsZXNmb3JjZU9iamVjdExpbmsob2JqZWN0SWQ/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghb2JqZWN0SWQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7d2luZG93LmxvY2F0aW9uLm9yaWdpbn0vJHtvYmplY3RJZH1gO1xuICB9XG5cbiAgcHVibGljIG5hdmlnYXRlVG9TaG9wcGluZ0NhcnQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzUmVhZG9ubHlNb2RlKCkpIHtcbiAgICAgIHRoaXMucm91dGVyU2VydmljZS5uYXZpZ2F0ZVRvU2hvcHBpbmdDYXJ0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5hdmlnYXRlVG9DYXRhbG9nKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1JlYWRvbmx5TW9kZSgpKSB7XG4gICAgICB0aGlzLnJvdXRlclNlcnZpY2UubmF2aWdhdGVUb0NhdGFsb2coKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmF2aWdhdGVUb0Fzc2V0cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNSZWFkb25seU1vZGUoKSkge1xuICAgICAgdGhpcy5yb3V0ZXJTZXJ2aWNlLm5hdmlnYXRlVG9Bc3NldHMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZG9jR2VuQnV0dG9uQ2xpY2tIYW5kbGVyKGlzQ2FydFJvdXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNBY2NvdW50TW9kZSkge1xuICAgICAgaWYgKCF0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmhhc1Vuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93QWNjb3VudE5vQ2hhbmdlc0RpYWxvZygpLnN1YnNjcmliZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dEb2NnZW5BY2NvdW50VW5zYXZlZENoYW5nZXNEaWFsb2coKS5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaXNFZGl0TW9kZSgpKSB7XG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0RvY2dlblJlYWRvbmx5RGlhbG9nKCkuc3Vic2NyaWJlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFpc0NhcnRSb3V0ZSkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dEb2NnZW5PdXRzaWRlU2hvcHBpbmdDYXJ0RGlhbG9nKCkuc3Vic2NyaWJlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IHNob3VsZE9wZW4kID0gb2YodHJ1ZSk7XG5cbiAgICBpZiAodGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgc2hvdWxkT3BlbiQgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0RvY2dlblVuc2F2ZWRDaGFuZ2VzRGlhbG9nKCkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGNvbmZpcm1lZCA9PiB7XG4gICAgICAgICAgaWYgKCFjb25maXJtZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aGlzLnNhdmVRdW90ZSQodHJ1ZSkucGlwZShtYXAoKCkgPT4gdHJ1ZSkpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgc2hvdWxkT3BlbiRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaXJzdCgpLFxuICAgICAgICB0YXAoc2hvdWxkT3BlbiA9PiBzaG91bGRPcGVuICYmIHRoaXMuaW50ZWdyYXRpb25TdGF0ZS5kaXNwYXRjaChPcGVuRG9jR2VuQWN0aW9uKCkpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlQnV0dG9uQ2xpY2tIYW5kbGVyKGlzQ2FydFJvdXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzRWRpdE1vZGUoKSkge1xuICAgICAgaWYgKHRoaXMuaXNRdW90ZU1vZGUpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dRdW90ZVJlYWRvbmx5TW9kZURpYWxvZygpLnN1YnNjcmliZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dSZWFkb25seU1vZGVEaWFsb2coKS5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc1Vwc2VsbFF1b3RlV2l0aG91dENoYW5nZXMoKSkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dBY2NvdW50Tm9DaGFuZ2VzRGlhbG9nKCkuc3Vic2NyaWJlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNBY2NvdW50TW9kZSAmJiAhdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dBY2NvdW50Tm9DaGFuZ2VzRGlhbG9nKCkuc3Vic2NyaWJlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFpc0NhcnRSb3V0ZSkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dRdW90ZU91dHNpZGVTaG9wcGluZ0NhcnREaWFsb2coKS5zdWJzY3JpYmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaW5lSXRlbXMgPSB0aGlzLmZsb3dDb25maWd1cmF0aW9uLmdldFNuYXBzaG90KCk7XG5cbiAgICBpZiAoIWxpbmVJdGVtcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93RW1wdHlDYXJ0RGlhbG9nKCkuc3Vic2NyaWJlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zYXZlUXVvdGUkKCkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgc3VibWl0QnV0dG9uQ2xpY2tIYW5kbGVyKGlzQ2FydFJvdXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNRdW90ZU1vZGUgJiYgIXRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaXNFZGl0TW9kZSgpKSB7XG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd1JlYWRvbmx5UXVvdGVTdWJtaXRGYWlsdXJlRGlhbG9nKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNVcHNlbGxRdW90ZVdpdGhvdXRDaGFuZ2VzKCkpIHtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93QWNjb3VudE5vQ2hhbmdlc0RpYWxvZygpLnN1YnNjcmliZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzQWNjb3VudE1vZGUpIHtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93QWNjb3VudFN1Ym1pdEZhaWx1cmVEaWFsb2coKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWlzQ2FydFJvdXRlKSB7XG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd091dHNpZGVTaG9wcGluZ0NhcnRRdW90ZVN1Ym1pdEZhaWx1cmVEaWFsb2coKS5zdWJzY3JpYmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBxdW90ZURyYWZ0ID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0O1xuICAgIGlmICghcXVvdGVEcmFmdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNTdWJtaXRJblByb2dyZXNzJC5uZXh0KHRydWUpO1xuXG4gICAgdGhpcy5xdW90ZUFwaVNlcnZpY2VcbiAgICAgIC5zdWJtaXRRdW90ZShxdW90ZURyYWZ0KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoeyBxdW90ZUlkIH0pID0+IHtcbiAgICAgICAgICB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5iYWNrKHF1b3RlSWQpO1xuICAgICAgICB9KSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5pc1N1Ym1pdEluUHJvZ3Jlc3MkLm5leHQoZmFsc2UpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0UHJpY2VMaXN0KHByaWNlTGlzdElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnVwZGF0ZUFjdGl2ZVByaWNlTGlzdChwcmljZUxpc3RJZCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlQ2FydE92ZXJsYXkoY2FydDogQ2FydFByZXZpZXdDb21wb25lbnQsIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc1JlYWRvbmx5TW9kZSgpKSB7XG4gICAgICBjYXJ0Py5vdmVybGF5UGFuZWwudG9nZ2xlKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNhdmVRdW90ZSQoc3RheU9uUGFnZSA9IGZhbHNlKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgcXVvdGVEcmFmdCA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdEZvckFjdGl2ZVByaWNlTGlzdDtcbiAgICBpZiAoIXF1b3RlRHJhZnQpIHtcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHRoaXMuaXNTYXZlSW5Qcm9ncmVzcyQubmV4dCh0cnVlKTtcblxuICAgIHJldHVybiB0aGlzLnF1b3RlQXBpU2VydmljZS51cHNlcnRRdW90ZShxdW90ZURyYWZ0KS5waXBlKFxuICAgICAgdGFwKCh7IHF1b3RlSWQgfSkgPT4ge1xuICAgICAgICB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKCFzdGF5T25QYWdlKSB7XG4gICAgICAgICAgdGhpcy5iYWNrKHF1b3RlSWQpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuaXNTYXZlSW5Qcm9ncmVzcyQubmV4dChmYWxzZSkpLFxuICAgICAgbWFwKG5vb3ApLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcXVlcnlOYW1lJChvYmplY3ROYW1lOiBzdHJpbmcsIGlkPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBpZiAoIWlkKSB7XG4gICAgICByZXR1cm4gb2YoJycpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlYXJjaFJlcXVlc3Q6IFNlYXJjaFJlcXVlc3QgPSB7XG4gICAgICBjb3VudDogMSxcbiAgICAgIHJhd0NvbmRpdGlvbjogYElkID0gJyR7aWR9J2AsXG4gICAgICBmaWVsZHM6IFsnTmFtZSddLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5zZkFwaVNlcnZpY2UucXVlcnk8YW55PihzZWFyY2hSZXF1ZXN0LCBvYmplY3ROYW1lKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiByZXN1bHRbMF0/Lk5hbWUgPz8gJycpLFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0T2JqZWN0RGV0YWlscyQoKTogT2JzZXJ2YWJsZTxIZWFkZXJPYmplY3REZXRhaWxzPiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dFNlcnZpY2UucmVzb2x2ZSQoKS5waXBlKFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXZDdHgsIGN1cnJDdHgpID0+IHByZXZDdHgucHJvcGVydGllcy5JZCA9PT0gY3VyckN0eC5wcm9wZXJ0aWVzLklkKSxcbiAgICAgIG1hcChjdHggPT4ge1xuICAgICAgICBjb25zdCBpc0FjY291bnRNb2RlID0gY3R4Lm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UO1xuICAgICAgICBjb25zdCBpc1F1b3RlTW9kZSA9IGN0eC5tb2RlID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuUVVPVEU7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhY2NvdW50SWQ6IGlzQWNjb3VudE1vZGUgPyBjdHgucHJvcGVydGllcy5JZCA6IGN0eC5wcm9wZXJ0aWVzLkFjY291bnRJZCxcbiAgICAgICAgICBvcHBvcnR1bml0eUlkOiBjdHgucHJvcGVydGllcy5PcHBvcnR1bml0eUlkLFxuICAgICAgICAgIHF1b3RlSWQ6IGlzUXVvdGVNb2RlID8gY3R4LnByb3BlcnRpZXMuSWQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgcXVvdGVOYW1lOiBpc1F1b3RlTW9kZSA/IGN0eC5wcm9wZXJ0aWVzLk5hbWUgOiB1bmRlZmluZWQsXG4gICAgICAgICAgcXVvdGVOdW1iZXI6IGlzUXVvdGVNb2RlID8gY3R4LnByb3BlcnRpZXMuUXVvdGVOdW1iZXIgOiB1bmRlZmluZWQsXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcChkZXRhaWxzID0+XG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgIG9mKGRldGFpbHMpLFxuICAgICAgICAgIHRoaXMucXVlcnlOYW1lJCgnQWNjb3VudCcsIGRldGFpbHMuYWNjb3VudElkKSxcbiAgICAgICAgICB0aGlzLnF1ZXJ5TmFtZSQoJ09wcG9ydHVuaXR5JywgZGV0YWlscy5vcHBvcnR1bml0eUlkKSxcbiAgICAgICAgXSksXG4gICAgICApLFxuICAgICAgbWFwKChbZGV0YWlscywgYWNjb3VudE5hbWUsIG9wcG9ydHVuaXR5TmFtZV0pID0+ICh7IC4uLmRldGFpbHMsIGFjY291bnROYW1lLCBvcHBvcnR1bml0eU5hbWUgfSkpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdE1ldHJpYyh2YWx1ZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh2YWx1ZSA/IE51bWJlcih2YWx1ZSkgOiAwKS50b0ZpeGVkKDIpO1xuICB9XG5cbiAgcHVibGljIGdldERyYWZ0SXRlbXMkKCk6IE9ic2VydmFibGU8TGluZUl0ZW1bXT4ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZmxvd0NvbmZpZ3VyYXRpb24uZ2V0KCksXG4gICAgICB0aGlzLmludGVncmF0aW9uU3RhdGUuc3RhdGUkLnBpcGUoXG4gICAgICAgIG1hcChzdGF0ZSA9PiBzdGF0ZS5tb2RpZmllZEFzc2V0cyksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICApLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtsaW5lSXRlbXMsIG1vZGlmaWVkQXNzZXRzXSkgPT5cbiAgICAgICAgbGluZUl0ZW1zLnJlZHVjZSgoYWNjOiBMaW5lSXRlbVtdLCBsaSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFzc2V0SWQgPSBsaS5hc3NldElkIHx8IGxpLm9wZW5PcmRlckxpbmVJdGVtSWQ7XG4gICAgICAgICAgY29uc3QgaXNNb2RpZmllZCA9IGlzTGluZUl0ZW1Nb2RpZmllZChsaSk7XG4gICAgICAgICAgY29uc3QgY3VycmVudFRlcm0gPSBnZXRPcmlnaW5QYXJlbnQobGluZUl0ZW1zLCBsaSkgPz8gbGk7XG5cbiAgICAgICAgICBpZiAoaXNNb2RpZmllZCB8fCAoYXNzZXRJZCAmJiBtb2RpZmllZEFzc2V0cz8uW2Fzc2V0SWRdKSkge1xuICAgICAgICAgICAgYWNjLnB1c2goY3VycmVudFRlcm0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCBbXSksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXNzZXRzJCgpOiBPYnNlcnZhYmxlPExpbmVJdGVtW10+IHtcbiAgICByZXR1cm4gdGhpcy5mbG93Q29uZmlndXJhdGlvblxuICAgICAgLmdldCgpXG4gICAgICAucGlwZShtYXAobGluZUl0ZW1zID0+IGxpbmVJdGVtcy5maWx0ZXIobGkgPT4gKCEhbGkuYXNzZXRJZCB8fCAhIWxpLm9wZW5PcmRlckxpbmVJdGVtSWQpICYmICFsaS5yYW1wSW5zdGFuY2VJZCkpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVQcm9kdWN0cyhsaW5lSXRlbXM6IExpbmVJdGVtW10pOiBIZWFkZXJQcm9kdWN0W10ge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgY29uc3Qgbm93ID0gZGF0ZS5nZXRUaW1lKCk7XG4gICAgY29uc3QgdGVybVBhcmVudElkcyA9IGxpbmVJdGVtcy5tYXAobGkgPT4gbGkucmFtcEluc3RhbmNlSWQpLmZpbHRlcihCb29sZWFuKTtcblxuICAgIHJldHVybiBsaW5lSXRlbXMucmVkdWNlKChyZXN1bHQ6IEhlYWRlclByb2R1Y3RbXSwgbGkpID0+IHtcbiAgICAgIC8vIGZpbmQgbWFpbiB0ZXJtIGxpbmUgaXRlbVxuICAgICAgaWYgKGxpLnJhbXBJbnN0YW5jZUlkKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIC8vIGZpbmQgY3VycmVudCB0ZXJtIGxpbmUgaXRlbVxuICAgICAgbGV0IHRhcmdldDogTGluZUl0ZW0gfCB1bmRlZmluZWQgPSBsaTtcbiAgICAgIHdoaWxlICh0YXJnZXQgJiYgdGFyZ2V0LmVuZERhdGUgJiYgbmV3IERhdGUodGFyZ2V0LmVuZERhdGUpLmdldFRpbWUoKSA8PSBub3cpIHtcbiAgICAgICAgdGFyZ2V0ID0gbGluZUl0ZW1zLmZpbmQoc3ViID0+IHN1Yi5yYW1wSW5zdGFuY2VJZCA9PT0gbGkuaWQpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGFyZ2V0ICYmIHRhcmdldC5wcm9kdWN0SWQpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IHRhcmdldC5pZCxcbiAgICAgICAgICAgIHByb2R1Y3RJZDogdGFyZ2V0LnByb2R1Y3RJZCxcbiAgICAgICAgICAgIG5hbWU6IHRhcmdldC5uYW1lLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0YXJnZXQucHJvcGVydGllc1snI2NvbmZpZ3VyYWJsZSddID09PSAndHJ1ZScsXG4gICAgICAgICAgICBkZWxldGVkOiB0YXJnZXQuYWN0aW9uQ29kZSA9PT0gJ0RFTEVURScsXG4gICAgICAgICAgICBoYXNUZXJtOiB0ZXJtUGFyZW50SWRzLmluY2x1ZGVzKHRhcmdldC5pZCksXG4gICAgICAgICAgICBxdHk6IHRhcmdldC5xdHksXG4gICAgICAgICAgICBtcnI6IHRoaXMuZm9ybWF0TWV0cmljKHRhcmdldC5wcm9wZXJ0aWVzLlZETV9Ub3RhbF9NUlIpLFxuICAgICAgICAgICAgbnJyOiB0aGlzLmZvcm1hdE1ldHJpYyh0YXJnZXQucHJvcGVydGllcy5WRE1fVG90YWxfTlJSKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNSZWFkb25seU1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdD8uY29udGV4dC5wcm9wZXJ0aWVzLm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UICYmXG4gICAgICAhdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNQcm9kdWN0c1xuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzVXBzZWxsUXVvdGVXaXRob3V0Q2hhbmdlcygpOiBib29sZWFuIHtcbiAgICBjb25zdCBub1VwZGF0ZXMgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmFjdGl2ZUN1cnJlbnRTdGF0ZS5ldmVyeShsaW5lSXRlbSA9PiBsaW5lSXRlbS5hY3Rpb25Db2RlID09PSAnRVhJU1QnKTtcbiAgICBjb25zdCBzYW1lTnVtYmVyT2ZQcm9kdWN0cyA9XG4gICAgICB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmdldEluaXRpYWxDdXJyZW50U3RhdGUoKS5sZW5ndGggPT09IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UuYWN0aXZlQ3VycmVudFN0YXRlLmxlbmd0aDtcblxuICAgIHJldHVybiBub1VwZGF0ZXMgJiYgc2FtZU51bWJlck9mUHJvZHVjdHM7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJjb250ZXh0UHJvcGVydGllcyQgfCBhc3luYyBhcyBjb250ZXh0UHJvcGVydGllc1wiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JqZWN0RGV0YWlscyQgfCBhc3luYyBhcyBkZXRhaWxzXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsb3ctaW5mb1wiPlxuICAgICAgPG5hdiBjbGFzcz1cIm5hdi1pdGVtIG5hdi1iYWNrXCIgKGNsaWNrKT1cImJhY2soKVwiPlxuICAgICAgICA8aSBjbGFzcz1cIm5hdi1pY29uIHZsLWljb24gdmwtaWNvbi1hcnJvdy1sZWZ0XCI+PC9pPlxuXG4gICAgICAgIDxzcGFuPiBCYWNrIHRvIHt7IG9iamVjdE5hbWUkIHwgYXN5bmMgfCB0aXRsZWNhc2UgfX08L3NwYW4+XG4gICAgICA8L25hdj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQWNjb3VudE1vZGUkIHwgYXN5bmNcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3Qtc2VwYXJhdG9yXCI+PC9zcGFuPlxuXG4gICAgICAgIDxuYXYgY2xhc3M9XCJhY2NvdW50LW5hbWVcIiBbcFRvb2x0aXBdPVwiY29udGV4dFByb3BlcnRpZXMuTmFtZSA/PyAnJ1wiIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiIFtzaG93RGVsYXldPVwiMTAwMFwiPlxuICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIFtocmVmXT1cImdldFNhbGVzZm9yY2VPYmplY3RMaW5rKGNvbnRleHRQcm9wZXJ0aWVzLklkKVwiPnt7IGNvbnRleHRQcm9wZXJ0aWVzLk5hbWUgfX08L2E+XG4gICAgICAgIDwvbmF2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1F1b3RlTW9kZSQgfCBhc3luY1wiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRvdC1zZXBhcmF0b3JcIj48L3NwYW4+XG5cbiAgICAgICAgPHNwYW4+UXVvdGUgI3t7IGRldGFpbHMucXVvdGVOdW1iZXIgfX08L3NwYW4+XG5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkb3Qtc2VwYXJhdG9yXCI+PC9zcGFuPlxuXG4gICAgICAgIDxuYXYgY2xhc3M9XCJuYXYtaXRlbVwiIChjbGljayk9XCJxdW90ZURldGFpbHMudG9nZ2xlKCRldmVudClcIj5cbiAgICAgICAgICA8c3Bhbj57eyBzdGF0dXMkIHwgYXN5bmMgfX08L3NwYW4+XG5cbiAgICAgICAgICA8aSAqbmdJZj1cIiFxdW90ZURldGFpbHMub3ZlcmxheVZpc2libGVcIiBjbGFzcz1cInZsLWljb24gdmwtaWNvbi1jaGV2cm9uLWRvd24gaWNvbi13aXRoLW1hcmdpblwiPjwvaT5cbiAgICAgICAgICA8aSAqbmdJZj1cInF1b3RlRGV0YWlscy5vdmVybGF5VmlzaWJsZVwiIGNsYXNzPVwidmwtaWNvbiB2bC1pY29uLWNoZXZyb24tdXAgaWNvbi13aXRoLW1hcmdpblwiPjwvaT5cbiAgICAgICAgPC9uYXY+XG5cbiAgICAgICAgPHAtb3ZlcmxheVBhbmVsIHN0eWxlQ2xhc3M9XCJuYXZpZ2F0aW9uLXNldHRpbmdzLW92ZXJsYXkgZmxvdy1oZWFkZXItb3ZlcmxheSBjZW50ZXJcIiAjcXVvdGVEZXRhaWxzPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxvdy1oZWFkZXItb3ZlcmxheV9fd3JhcHBlclwiPlxuICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJmbG93LWhlYWRlci1vdmVybGF5X190aXRsZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPlF1b3RlIEluZm9ybWF0aW9uPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwidmwtaWNvbiB2bC1pY29uLWNsb3NlIGNsb3NlLWljb25cIiAoY2xpY2spPVwicXVvdGVEZXRhaWxzLmhpZGUoKVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9oMj5cblxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJpbmZvLWxpc3RcIj5cbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJpbmZvLWxpc3RfX3Jvd1wiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+QWNjb3VudCBOYW1lOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIFtocmVmXT1cImdldFNhbGVzZm9yY2VPYmplY3RMaW5rKGRldGFpbHMuYWNjb3VudElkKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBkZXRhaWxzLmFjY291bnROYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiaW5mby1saXN0X19yb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPk9wcG9ydHVuaXR5IE5hbWU6PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwiZ2V0U2FsZXNmb3JjZU9iamVjdExpbmsoZGV0YWlscy5vcHBvcnR1bml0eUlkKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBkZXRhaWxzLm9wcG9ydHVuaXR5TmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImluZm8tbGlzdF9fcm93XCI+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5RdW90ZSBOYW1lOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIFtocmVmXT1cImdldFNhbGVzZm9yY2VPYmplY3RMaW5rKGRldGFpbHMucXVvdGVJZClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZGV0YWlscy5xdW90ZU5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJpbmZvLWxpc3RfX3Jvd1wiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+UXVvdGUgTnVtYmVyOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIFtocmVmXT1cImdldFNhbGVzZm9yY2VPYmplY3RMaW5rKGRldGFpbHMucXVvdGVJZClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZGV0YWlscy5xdW90ZU51bWJlciB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9wLW92ZXJsYXlQYW5lbD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZsb3ctbmF2aWdhdGlvblwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqdmxMZXQ9XCJpc1JlYWRvbmx5TW9kZSQgfCBhc3luYyBhcyBpc1JlYWRvbmx5TW9kZVwiPlxuICAgICAgICA8bmF2XG4gICAgICAgICAgY2xhc3M9XCJuYXYtaXRlbVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IChpc0Fzc2V0c1JvdXRlJCB8IGFzeW5jKSwgZGlzYWJsZWQ6IGlzUmVhZG9ubHlNb2RlIH1cIlxuICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvQXNzZXRzKClcIlxuICAgICAgICA+XG4gICAgICAgICAgQXNzZXRzICh7eyBhc3NldHNDb3VudCQgfCBhc3luYyB9fSlcbiAgICAgICAgPC9uYXY+XG4gICAgICAgIDxuYXZcbiAgICAgICAgICBjbGFzcz1cIm5hdi1pdGVtXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogKGlzQ2F0YWxvZ1JvdXRlJCB8IGFzeW5jKSwgZGlzYWJsZWQ6IGlzUmVhZG9ubHlNb2RlIH1cIlxuICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvQ2F0YWxvZygpXCJcbiAgICAgICAgPlxuICAgICAgICAgIENhdGFsb2dcbiAgICAgICAgPC9uYXY+XG4gICAgICAgIDxuYXYgY2xhc3M9XCJuYXYtaXRlbSBkaXNhYmxlZFwiIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBpc0NvbmZpZ3VyYXRpb25Sb3V0ZSQgfCBhc3luYyB9XCI+Q29uZmlndXJhdG9yPC9uYXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKnZsTGV0PVwicHJvZHVjdHMkIHwgYXN5bmMgYXMgcHJvZHVjdHNcIj5cbiAgICAgICAgICA8bmF2XG4gICAgICAgICAgICBjbGFzcz1cIm5hdi1pdGVtXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiAoaXNDYXJ0Um91dGUkIHwgYXN5bmMpLCBkaXNhYmxlZDogaXNSZWFkb25seU1vZGUgfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVUb1Nob3BwaW5nQ2FydCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBTaG9wcGluZyBDYXJ0ICh7eyBwcm9kdWN0cz8ubGVuZ3RoID8/IDAgfX0pXG4gICAgICAgICAgPC9uYXY+XG5cbiAgICAgICAgICA8bmF2XG4gICAgICAgICAgICBjbGFzcz1cIm5hdi1wb3BvdmVyLXRvZ2dsZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogKGlzQ2FydFJvdXRlJCB8IGFzeW5jKSwgZGlzYWJsZWQ6IGlzUmVhZG9ubHlNb2RlIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNhcnRPdmVybGF5KGNhcnQsICRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpICpuZ0lmPVwiIWNhcnQ/Lm92ZXJsYXlQYW5lbD8ub3ZlcmxheVZpc2libGVcIiBjbGFzcz1cInZsLWljb24gdmwtaWNvbi1jaGV2cm9uLWRvd24gaWNvbi13aXRoLW1hcmdpblwiPjwvaT5cbiAgICAgICAgICAgIDxpICpuZ0lmPVwiY2FydD8ub3ZlcmxheVBhbmVsPy5vdmVybGF5VmlzaWJsZVwiIGNsYXNzPVwidmwtaWNvbiB2bC1pY29uLWNoZXZyb24tdXAgaWNvbi13aXRoLW1hcmdpblwiPjwvaT5cbiAgICAgICAgICA8L25hdj5cblxuICAgICAgICAgIDx2bC1jYXJ0LXByZXZpZXcgI2NhcnQgW3Byb2R1Y3RzXT1cInByb2R1Y3RzID8/IFtdXCI+PC92bC1jYXJ0LXByZXZpZXc+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxvdy1jb250cm9sc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihpc1JlYWRvbmx5TW9kZSQgfCBhc3luYykgPT09IGZhbHNlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKnZsTGV0PVwiYWN0aXZlUHJpY2VMaXN0JCB8IGFzeW5jIGFzIHByaWNlTGlzdFwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICp2bExldD1cImFzc2V0UHJpY2VMaXN0cyQgfCBhc3luYyBhcyBhc3NldFByaWNlTGlzdHNcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiKGlzQWNjb3VudE1vZGUkIHwgYXN5bmMpICYmIGFzc2V0UHJpY2VMaXN0cyAmJiBhc3NldFByaWNlTGlzdHMubGVuZ3RoID4gMTsgZWxzZSBzaW5nbGVQcmljZUxpc3RcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5hdiBjbGFzcz1cIm5hdi1pdGVtXCIgKGNsaWNrKT1cInByaWNlTGlzdHNPdmVybGF5Py50b2dnbGUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgcHJpY2VMaXN0Py5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhcHJpY2VMaXN0c092ZXJsYXk/Lm92ZXJsYXlWaXNpYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2bC1pY29uIHZsLWljb24tY2hldnJvbi1kb3duIGljb24td2l0aC1tYXJnaW5cIlxuICAgICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwicHJpY2VMaXN0c092ZXJsYXk/Lm92ZXJsYXlWaXNpYmxlXCIgY2xhc3M9XCJ2bC1pY29uIHZsLWljb24tY2hldnJvbi11cCBpY29uLXdpdGgtbWFyZ2luXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvbmF2PlxuXG4gICAgICAgICAgICAgICAgPHAtb3ZlcmxheVBhbmVsIHN0eWxlQ2xhc3M9XCJwcmljZS1saXN0LW92ZXJsYXlcIiAjcHJpY2VMaXN0c092ZXJsYXk+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgYXNzZXRQcmljZUxpc3RzXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInByaWNlLWxpc3Qtb3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInByaWNlTGlzdD8uaWQgPT09IG9wdGlvbi5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFByaWNlTGlzdChvcHRpb24uaWQpOyBwcmljZUxpc3RzT3ZlcmxheS5oaWRlKClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3Atb3ZlcmxheVBhbmVsPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZVByaWNlTGlzdD5cbiAgICAgICAgICAgICAgPGRpdj57eyBwcmljZUxpc3Q/Lm5hbWUgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb250ZXh0UHJvcGVydGllcy5TdGFydERhdGVcIj57eyBjb250ZXh0UHJvcGVydGllcy5TdGFydERhdGUgfCBkYXRlIDogZGF0ZUZvcm1hdCB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8dmwtbWV0cmljcz48L3ZsLW1ldHJpY3M+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKnZsTGV0PVwiaXNDYXJ0Um91dGUkIHwgYXN5bmMgYXMgaXNDYXJ0Um91dGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqdmxMZXQ9XCJpc1JlYWRvbmx5TW9kZSQgfCBhc3luYyBhcyBpc1JlYWRvbmx5TW9kZVwiPlxuICAgICAgICAgIDxwLWJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJkb2MtZ2VuLWJ1dHRvblwiXG4gICAgICAgICAgICBpY29uPVwidmwtaWNvbiB2bC1pY29uLWRvYy1nZW5cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzUmVhZG9ubHlNb2RlID09PSB0cnVlXCJcbiAgICAgICAgICAgIChvbkNsaWNrKT1cImRvY0dlbkJ1dHRvbkNsaWNrSGFuZGxlcihpc0NhcnRSb3V0ZSA9PT0gdHJ1ZSlcIlxuICAgICAgICAgICAgcFRvb2x0aXA9XCJHZW5lcmF0ZSBEb2N1bWVudFwiXG4gICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgdG9vbHRpcFN0eWxlQ2xhc3M9XCJ2bC1pbmZvLXRvb2x0aXBcIlxuICAgICAgICAgID48L3AtYnV0dG9uPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqdmxMZXQ9XCJpc1NhdmVJblByb2dyZXNzJCB8IGFzeW5jIGFzIGlzU2F2ZUluUHJvZ3Jlc3NcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnZsTGV0PVwiaXNTdWJtaXRJblByb2dyZXNzJCB8IGFzeW5jIGFzIGlzU3VibWl0SW5Qcm9ncmVzc1wiPlxuICAgICAgICAgICAgICA8cC1zcGxpdEJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzU2F2ZUluUHJvZ3Jlc3MgJiYgIWlzU3VibWl0SW5Qcm9ncmVzc1wiXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJTYXZlIHRvIFF1b3RlXCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJzYXZlQnV0dG9uQ2xpY2tIYW5kbGVyKGlzQ2FydFJvdXRlID09PSB0cnVlKVwiXG4gICAgICAgICAgICAgICAgW21vZGVsXT1cImdldFNwbGl0QnV0dG9uQWN0aW9ucyhpc0NhcnRSb3V0ZSA9PT0gdHJ1ZSlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc1JlYWRvbmx5TW9kZSA9PT0gdHJ1ZVwiXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLW91dGxpbmVkXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3Atc3BsaXRCdXR0b24+XG5cbiAgICAgICAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc1NhdmVJblByb2dyZXNzXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNhdmUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwicC1idXR0b25cIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwiU2F2aW5nXCJcbiAgICAgICAgICAgICAgICBbbG9hZGluZ109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgPjwvcC1idXR0b24+XG5cbiAgICAgICAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc1N1Ym1pdEluUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3VibWl0LWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIlN1Ym1pdHRpbmdcIlxuICAgICAgICAgICAgICAgIFtsb2FkaW5nXT1cInRydWVcIlxuICAgICAgICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
@@ -323,19 +323,31 @@ const getRecommendedPrices = (portDomain, type) => {
|
|
323
323
|
const generateModifiedAssetsMap = (lineItems) => {
|
324
324
|
return lineItems.reduce((acc, li) => {
|
325
325
|
var _a;
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
}
|
326
|
+
const isModified = isLineItemModified(li);
|
327
|
+
if (!isModified) {
|
328
|
+
return acc;
|
329
|
+
}
|
330
|
+
const target = getOriginParent(lineItems, li);
|
331
|
+
const id = (_a = target === null || target === void 0 ? void 0 : target.assetId) !== null && _a !== void 0 ? _a : target === null || target === void 0 ? void 0 : target.openOrderLineItemId;
|
332
|
+
if (id) {
|
333
|
+
acc[id] = true;
|
335
334
|
}
|
336
335
|
return acc;
|
337
336
|
}, {});
|
338
337
|
};
|
338
|
+
const getOriginParent = (lineItems, currentLineItem) => {
|
339
|
+
let target = currentLineItem;
|
340
|
+
while (target && target.rampInstanceId) {
|
341
|
+
target = lineItems.find(sub => sub.id === currentLineItem.rampInstanceId);
|
342
|
+
}
|
343
|
+
return target;
|
344
|
+
};
|
345
|
+
const isLineItemModified = (lineItem) => {
|
346
|
+
if (lineItem.status === 'PENDING' && lineItem.actionCode === 'EXIST') {
|
347
|
+
return false;
|
348
|
+
}
|
349
|
+
return lineItem.status !== 'EXIST';
|
350
|
+
};
|
339
351
|
const multiplyLineItems = (lineItem, qty, split) => {
|
340
352
|
if (split) {
|
341
353
|
const unifyIds = (lineItem) => (Object.assign(Object.assign({}, lineItem), { id: UUID.UUID(), lineItems: lineItem.lineItems.map(unifyIds) }));
|
@@ -357,8 +369,10 @@ var lineItem_utils = /*#__PURE__*/Object.freeze({
|
|
357
369
|
generateModifiedAssetsMap: generateModifiedAssetsMap,
|
358
370
|
getAttributeValue: getAttributeValue,
|
359
371
|
getAttributes: getAttributes,
|
372
|
+
getOriginParent: getOriginParent,
|
360
373
|
getRecommendedPrices: getRecommendedPrices,
|
361
374
|
insertLineItem: insertLineItem,
|
375
|
+
isLineItemModified: isLineItemModified,
|
362
376
|
mapAttributes: mapAttributes,
|
363
377
|
multiplyLineItems: multiplyLineItems,
|
364
378
|
patchAttributes: patchAttributes,
|
@@ -1228,5 +1242,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImpor
|
|
1228
1242
|
* Generated bundle index. Do not edit.
|
1229
1243
|
*/
|
1230
1244
|
|
1231
|
-
export { ConfigurationRuntimeService, ConfigurationService, ContextService, FlowConfigurationModule, FlowConfigurationService, FlowUpdateService, LineItemWorker, MetricsCalculationService, ProductImagesService, QuoteDraftService, RuntimeMode, RuntimeOperation, RuntimeStep, SdkCoreModule, UI_DEFINITION_VERSION, calculateCardinalityVariables, extractMetadata, findLineItem, findLineItemWithComparator, generateLineItem, generateModifiedAssetsMap, getAttributeValue, getAttributes, getDefaultLineItem, getRecommendedPrices, insertLineItem, lineItem_utils as lineItemUtils, mapAttributes, multiplyLineItems, patchAttributes, recalculateCardinalityVariables, removeLineItem, replaceLineItem, upsertAttributes };
|
1245
|
+
export { ConfigurationRuntimeService, ConfigurationService, ContextService, FlowConfigurationModule, FlowConfigurationService, FlowUpdateService, LineItemWorker, MetricsCalculationService, ProductImagesService, QuoteDraftService, RuntimeMode, RuntimeOperation, RuntimeStep, SdkCoreModule, UI_DEFINITION_VERSION, calculateCardinalityVariables, extractMetadata, findLineItem, findLineItemWithComparator, generateLineItem, generateModifiedAssetsMap, getAttributeValue, getAttributes, getDefaultLineItem, getOriginParent, getRecommendedPrices, insertLineItem, isLineItemModified, lineItem_utils as lineItemUtils, mapAttributes, multiplyLineItems, patchAttributes, recalculateCardinalityVariables, removeLineItem, replaceLineItem, upsertAttributes };
|
1232
1246
|
//# sourceMappingURL=veloceapps-sdk-core.mjs.map
|