imm-element-ui 1.1.5 → 1.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/am/am.component.mjs +2 -2
- package/esm2022/lib/crumb-action/crumb-action.component.mjs +22 -9
- package/esm2022/lib/form/form/form.component.mjs +10 -1
- package/esm2022/lib/page-form/page-form.component.mjs +5 -3
- package/esm2022/lib/page-grid-list/page-grid-list.component.mjs +2 -2
- package/esm2022/lib/row-selector/row-selector.component.mjs +11 -8
- package/esm2022/lib/service/action.service.mjs +2 -1
- package/esm2022/lib/share/utils.mjs +30 -3
- package/fesm2022/imm-element-ui.mjs +94 -41
- package/fesm2022/imm-element-ui.mjs.map +1 -1
- package/lib/crumb-action/crumb-action.component.d.ts +4 -1
- package/lib/form/form/form.component.d.ts +5 -0
- package/lib/page-form/page-form.component.d.ts +2 -1
- package/lib/row-selector/row-selector.component.d.ts +3 -1
- package/lib/service/action.service.d.ts +1 -0
- package/lib/share/utils.d.ts +2 -1
- package/package.json +1 -1
|
@@ -66,7 +66,7 @@ export class AmComponent {
|
|
|
66
66
|
}));
|
|
67
67
|
}
|
|
68
68
|
websave(param) {
|
|
69
|
-
return this.http.post(apiPath + "websave", param)
|
|
69
|
+
return this.http.post(apiPath + "/goam/api/websave", param)
|
|
70
70
|
.pipe(map((response) => {
|
|
71
71
|
return response;
|
|
72
72
|
}), finalize(() => {
|
|
@@ -540,4 +540,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
540
540
|
providers: [MessageService, ConfirmationService]
|
|
541
541
|
}]
|
|
542
542
|
}], ctorParameters: () => [] });
|
|
543
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW1tLWVsZW1lbnQtdWkvc3JjL2xpYi9hbS9hbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBQyxNQUFNLEVBQUMsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9DLE9BQU8sS0FBSyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBR3hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFvSXpELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQTtBQVFsQixNQUFNLE9BQU8sV0FBVztJQXVDdEI7UUF0Q0EsUUFBUTtRQUNSLFVBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsT0FBTztRQUNQLE9BQUUsR0FBUyxDQUFDLENBQUE7UUFDWixNQUFNO1FBQ04sY0FBUyxHQUFTLEVBQUUsQ0FBQTtRQUNwQixNQUFNO1FBQ04sVUFBSyxHQUFRLEVBQUUsQ0FBQTtRQUNmLFFBQUcsR0FBUyxFQUFFLENBQUE7UUFDZCxJQUFJO1FBQ0osY0FBUyxHQUFjLEVBQUUsQ0FBQztRQUMxQixJQUFJO1FBQ0osa0JBQWEsR0FBZ0IsRUFBRSxDQUFDO1FBQ2hDLE1BQU07UUFDTixnQkFBVyxHQUFjLEVBQUUsQ0FBQztRQUM1QixRQUFRO1FBQ1IsY0FBUyxHQUFTLEVBQUMsT0FBTyxFQUFDLEVBQUUsRUFBQyxPQUFPLEVBQUMsRUFBRSxFQUFDLE9BQU8sRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUs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QUMsQ0FBQTtZQUM3QyxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osNEJBQTRCO1lBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOytHQXZqQlUsV0FBVzttR0FBWCxXQUFXLHFEQUZaLENBQUMsY0FBYyxFQUFDLG1CQUFtQixDQUFDLDBCQURwQyxFQUFFOzs0RkFHRCxXQUFXO2tCQVB2QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxRQUFRO29CQUNsQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsUUFBUSxFQUFFLEVBQUU7b0JBQ1osU0FBUyxFQUFDLENBQUMsY0FBYyxFQUFDLG1CQUFtQixDQUFDO2lCQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCxpbmplY3Qsc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGZpbmFsaXplLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgRmlsZVNhdmVyIGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5pbXBvcnQgeyBGb3JtT3B0aW9ucyB9IGZyb20gJy4uL2Zvcm0vZm9ybS9mb3JtLmNvbXBvbmVudCdcclxuaW1wb3J0IHsgU2VhcmNoT3B0aW9ucyB9IGZyb20gJy4uL3NlYXJjaC9zZWFyY2gvc2VhcmNoLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQge1RvYXN0fSBmcm9tICdwcmltZW5nL3RvYXN0JztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFyYW17XHJcbiAgaWQ/Om51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUcmFjZU1lc3NhZ2Uge1xyXG4gIGlkPzogbnVtYmVyO1xyXG4gIHBpZD86bnVtYmVyOyAgLy8g6KGo5LitaWRcclxuICBmdW5jPzpzdHJpbmc7XHJcbiAgb3BlcmF0b3I/OnN0cmluZztcclxuICBjb250ZW50PzpzdHJpbmc7ICAvLyDkuLvooajlj5jmm7TmiYDmnInlrZfmrrXmi7zmjqXkuIDlnZdcclxuICBzdWJDb250ZW50PzpzdHJpbmc7IC8vIOWtkOihqOWPmOabtOaLvOaOpeS4gOi1t1xyXG4gIGNyZWF0ZWRBdD86c3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgSW1wb3J0RXhjZWx7XHJcbiAgbW9kZWxOYW1lPzogc3RyaW5nO1xyXG4gIG9yZ0lkPzogbnVtYmVyO1xyXG4gIG9yZ05hbWU/OnN0cmluZztcclxuICBvcmdJZEZlaWxkPzogc3RyaW5nO1xyXG4gIG9yZ05hbWVGZWlsZD86c3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVwc2VydCB7XHJcbiAgbW9kZWxOYW1lPzogc3RyaW5nO1xyXG4gIGFkZERhdGE/OiBSZWNvcmQ8c3RyaW5nLGFueT47XHJcbiAgdXBkRGF0YT86IFJlY29yZDxzdHJpbmcsYW55PjtcclxuICBzdWJzZXJ0PzogU3ViVXBzZXJ0W107XHJcbiAgbG9nTW9kZWw/OiBzdHJpbmc7XHJcbiAgbG9nPzogVHJhY2VNZXNzYWdlO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN1YlVwc2VydCB7XHJcbiAgc3ViTW9kZWxOYW1lPzogc3RyaW5nO1xyXG4gIGZrPzpzdHJpbmc7XHJcbiAgc3ViRGF0YT86IFJlY29yZDxzdHJpbmcsYW55PltdXHJcbiAgbWFwdG1wPzogTWFwPG51bWJlcixhbnk+O1xyXG4gIGxvZ3RtcD86IE1hcDxzdHJpbmcsYW55PlxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRGVhbHtcclxuICBtb2RlbE5hbWU/OiBzdHJpbmc7XHJcbiAgZGF0YT86YW55O1xyXG59XHJcbi8vIOabtOaWsOeJueWumuWtl+autVxyXG5leHBvcnQgaW50ZXJmYWNlIFdyaXRle1xyXG4gIG1vZGVsTmFtZT86c3RyaW5nO1xyXG4gIGRhdGE/OlJlY29yZDxzdHJpbmcsYW55PjtcclxuICBsb2dNb2RlbD86c3RyaW5nO1xyXG4gIGxvZz86VHJhY2VNZXNzYWdlO1xyXG4gIHRyYW5zYWN0aW9uPzogYm9vbGVhbjtcclxufVxyXG4vLyDliKDpmaTmjqXlj6Plo7DmmI5cclxuZXhwb3J0IGludGVyZmFjZSBSZW1vdmV7XHJcbiAgbW9kZWxOYW1lPzpzdHJpbmc7XHJcbiAgaWRzPzpudW1iZXJbXTtcclxuICBkYXRhPzphbnk7XHJcbiAgbG9nTW9kZWw/OnN0cmluZztcclxuICBsb2c/OlRyYWNlTWVzc2FnZTtcclxuICB0cmFuc2FjdGlvbj86IGJvb2xlYW47XHJcbn1cclxuLy8g6I635Y+W5Y2V5p2h5pWw5o2u6K+m5oOFXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2V0e1xyXG4gIG1vZGVsTmFtZT86c3RyaW5nO1xyXG4gIHVzZXJDb2RlPzogc3RyaW5nO1xyXG4gIG9yZ0ZpZWxkPzogc3RyaW5nO1xyXG4gIGlkPzpudW1iZXI7XHJcbiAgcHJlbG9hZHM/OnN0cmluZ1tdOyAvLyDogZTooajmn6Xor6LooajlkI3np7DvvIzpnIDlr7nlupTlkI7nq69zdHJ1Y3RcclxuICBmaXRlclByZWxvYWRzPzpQcmVsb2FkW107IC8vIOWPquiDveWKoOS4gOWxgiDnsbvkvLwgJ21vZHVsZSA9JyBtb2R1bGVcclxuICBnZXRMb2c/OmJvb2xlYW47IC8v6I635Y+W5pel5b+XXHJcbiAgZGF0YT86YW55OyAvL+WQjuerr+i/lOWbnueahHJlc3BvbnNlXHJcbiAgY29sdW1uRmlsdGVycz86IENvbHVtbkZpbHRlcltdOyAvL+i/h+a7pOeahOWIl1xyXG4gIGZvcmVpZ25LZXk/OnN0cmluZyAgLy/nm7TmjqXmj5LlhaXlrZDooajpnIDopoHkvKDpgJLlpJbplK7lrZfmrrXku6Xlj4rlpJbplK7lgLxcclxuICBbcHJvcE5hbWU6IHN0cmluZ106YW55XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBQcmVsb2Fke1xyXG4gIGZlaWxkTmFtZT86IHN0cmluZztcclxuICBmaXRlcnM/OkNvbHVtbkZpbHRlcltdO1xyXG4gIHNvcnRzPzpTb3J0W107XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5GaWx0ZXIge1xyXG4gIGNvbHVtbkZpZWxkPzpzdHJpbmc7XHJcbiAgdHlwZT86c3RyaW5nO1xyXG4gIGZpdGVyPzogYW55O1xyXG4gIGZyb20/OnN0cmluZyB8IG51bWJlcjtcclxuICB0bz86c3RyaW5nIHwgbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNvcnR7XHJcbiAgZmllbGQ/OnN0cmluZztcclxuICBpc0FzYz86Ym9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2h7XHJcbiAgbW9kZWxOYW1lPzogc3RyaW5nO1xyXG4gIHVzZXJDb2RlPzogc3RyaW5nO1xyXG4gIG9yZ0ZpZWxkPzogc3RyaW5nO1xyXG4gIGNvdW50Pzpib29sZWFuOyAvL+aYr+WQpui/lOWbnnRvdGFsTnVtIFxyXG4gIHByZWxvYWRzPzpzdHJpbmdbXTtcclxuICBmaXRlclByZWxvYWRzPzpQcmVsb2FkW107XHJcbiAgbW9kZWw/OmFueTsgXHJcbiAgZGF0YT86YW55O1xyXG4gIGNvbHVtbkZpbHRlcnM/OiBDb2x1bW5GaWx0ZXJbXTsgLy/ov4fmu6TnmoTliJdcclxuICBzb3J0cz86IFNvcnRbXTtcclxuICBncm91cHM/OiBzdHJpbmdbXTtcclxuICByZWFkPzpzdHJpbmdbXTsgIC8vcmVhZCDmjIflrprmn6Xor6LnibnlrprlrZfmrrVcclxuICBmdW5jcz86UmVjb3JkPHN0cmluZyxzdHJpbmc+OyAvL+mAj+inhuihqOWQjuacn+imgeeUqFxyXG4gIG9mZnNldD86bnVtYmVyOyBcclxuICBsaW1pdD86bnVtYmVyO1xyXG4gIHRvdGFsTnVtPzpudW1iZXI7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBUb2tlbkluZm8ge1xyXG4gIHRva2VuPzpzdHJpbmdcclxuICBleHBpcmVkPzogbnVtYmVyXHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBhbVdlYntcclxuICBpZD86IG51bWJlcjtcclxuICBjb2RlPzogc3RyaW5nO1xyXG4gIHR5cGU/OiBzdHJpbmc7XHJcbiAgbmFtZT86IHN0cmluZztcclxuICBhcHBJZD86IG51bWJlcjtcclxuICBjb250ZW50Pzogc3RyaW5nO1xyXG4gIGNyZWF0ZWRBdD86IHN0cmluZztcclxuICB1cGRhdGVkQXQ/OnN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFJmZCB7XHJcbiAgbW9kZWxOYW1lPzogc3RyaW5nO1xyXG4gIGxhYmVsRmllbGQ/OiBzdHJpbmc7XHJcbiAgdmFsdWVGaWVsZD86IHN0cmluZztcclxuICB3aGVyZUZpZWxkPzogc3RyaW5nO1xyXG4gIHR5cGU/OiBzdHJpbmc7XHJcbiAgZml0ZXI/OiBhbnk7XHJcbiAgZGF0YT86IGFueTtcclxufVxyXG5jb25zdCBhcGlQYXRoID0gXCJcIlxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1hbScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXSxcclxuICB0ZW1wbGF0ZTogJycsXHJcbiAgcHJvdmlkZXJzOltNZXNzYWdlU2VydmljZSxDb25maXJtYXRpb25TZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQW1Db21wb25lbnQge1xyXG4gIC8v5piv5ZCm5o+Q5Lqk5pel5b+XXHJcbiAgaXNMb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvL+S4u+aVsOaNrmlkXHJcbiAgaWQ6IG51bWJlcj0wXHJcbiAgLy/kuLvooajmqKHlnotcclxuICBtb2RlbE5hbWU6IHN0cmluZz0nJ1xyXG4gIC8vSUTlj4LmlbBcclxuICBwYXJhbTogUGFyYW09e31cclxuICBmaWQ6IHN0cmluZz0nJ1xyXG4gIC8v5a+85YWlXHJcbiAgaW1wb3J0UHJtOiBJbXBvcnRFeGNlbD17fTtcclxuICAvL+aQnOe0oFxyXG4gIHNlYXJjaE9wdGlvbnM6IFNlYXJjaE9wdGlvbnM9e307XHJcbiAgLy9mb3JtXHJcbiAgZm9ybU9wdGlvbnM6IEZvcm1PcHRpb25zPXt9O1xyXG4gIC8v5Yib5bu65oiW6ICF5pu05pawXHJcbiAgdXBzZXJ0UHJtOiBVcHNlcnQ9e3VwZERhdGE6e30sYWRkRGF0YTp7fSxzdWJzZXJ0OltdLGxvZzp7fX07XHJcbiAgLy/lpITnkIZcclxuICBkZWFsUHJtOiBEZWFsPXt9O1xyXG4gIC8vbWFw5pu05pawXHJcbiAgd3JpdGVQcm06IFdyaXRlPXt9O1xyXG4gIC8v5Yig6ZmkXHJcbiAgcmVtb3ZlUHJtOiBSZW1vdmU9e307XHJcbiAgLy/ojrflj5bkuIDmnaHmlbDmja5cclxuICBnZXRQcm06IEdldD17ZGF0YTp7fX07XHJcbiAgLy/mn6Xor6LmnaHku7ZcclxuICBmaWx0ZXI6IENvbHVtbkZpbHRlcj17fTtcclxuICAvL+afpeivouWIl+ihqOaVsOaNrlxyXG4gIHNlYXJjaFBybTogU2VhcmNoPXt9O1xyXG4gIGV4cG9ydFBybTogU2VhcmNoPXt9O1xyXG4gIHRhbXBsYXRlOiBEZWFsPXt9XHJcbiAgLy8g6KGo56S65piv5ZCm5q2j5Zyo5Yqg6L2955So5oi35pWw5o2u55qEU2lnbmFs77yM5Yid5aeL5YC85Li6IGZhbHNlXHJcbiAgaXNMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcclxuICBodHRwOiBIdHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpXHJcbiAgbWVzc2FnZVNlcnZpY2UgOk1lc3NhZ2VTZXJ2aWNlID0gaW5qZWN0KE1lc3NhZ2VTZXJ2aWNlKVxyXG4gIGNvbmZpcm1hdGlvblNlcnZpY2UgPSBpbmplY3QoQ29uZmlybWF0aW9uU2VydmljZSlcclxuICByb3V0ZSA6QWN0aXZhdGVkUm91dGUgPWluamVjdChBY3RpdmF0ZWRSb3V0ZSlcclxuICByb3V0ZXIgPSBpbmplY3QoUm91dGVyKVxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgcmZkKHBybTogUmZkKTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcIlJGRFwiLHBybSwpXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8g5peg6K666K+35rGC5oiQ5Yqf5LiO5ZCm77yM6YO95bCG5Yqg6L295Lit54q25oCB6K6+572u5Li6IGZhbHNlXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIHdlYmdldChwYXJhbTphbVdlYik6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGgrXCIvZ29hbS9hcGkvd2ViZ2V0XCIscGFyYW0sKVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT57XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgd2Vic2F2ZShwYXJhbTphbVdlYik6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGgrXCJ3ZWJzYXZlXCIscGFyYW0sKVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT57XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgd2ViZGVsKHBhcmFtOmFtV2ViKTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcIndlYmRlbFwiLHBhcmFtLClcclxuICAgIC5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwc2VydChwcm0/OmFueSxjYj86RnVuY3Rpb24pe1xyXG4gICAgaWYocHJtKXtcclxuICAgICAgdGhpcy53ZWJfdXBzZXJ0KHBybSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgY2IgJiYgY2IocmVzKVxyXG5cdFx0ICAgIHRoaXMucmVzZXRQcm0oJ3Vwc2VydCcpXHJcbiAgICAgIH0pO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIC8vIGNvbnN0IHBtOiBVcHNlcnQgPSB0aGlzLnVwc2VydHMoKVxyXG4gICAgICAvLyBjb25zb2xlLmxvZygnMT09PT0nLHBtKVxyXG4gICAgICB0aGlzLndlYl91cHNlcnQodGhpcy51cHNlcnRQcm0pLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIGNiICYmIGNiKHJlcylcclxuXHRcdCAgICB0aGlzLnJlc2V0UHJtKCd1cHNlcnQnKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgLy/lhajpg6jliJvlu7rmiJbmm7TmlrDvvIzmoLnmja5JROWIpOaWrVxyXG4gIHdlYl91cHNlcnQocGFyYW06VXBzZXJ0KTpPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xyXG4gICAgaWYoIXBhcmFtLm1vZGVsTmFtZSl7XHJcbiAgICAgIHBhcmFtID0ge21vZGVsTmFtZTogdGhpcy5tb2RlbE5hbWUsLi4ucGFyYW19XHJcbiAgICB9XHJcbiAgICBsZXQgYWRkRGF0YTogYW55ID0gcGFyYW0uYWRkRGF0YVxyXG4gICAgaWYoT2JqZWN0LmtleXMoYWRkRGF0YSkubGVuZ3RoPT0wKXtcclxuICAgICAgZGVsZXRlIHBhcmFtLmFkZERhdGFcclxuICAgIH1cclxuICAgIGxldCB1cGREYXRhOiBhbnkgPXBhcmFtLnVwZERhdGFcclxuICAgIGNvbnNvbGUubG9nKCdwYXJhbS0tLS0nLHBhcmFtLnVwZERhdGEpXHJcbiAgICBpZihPYmplY3Qua2V5cyh1cGREYXRhKS5sZW5ndGg9PTApe1xyXG4gICAgICBkZWxldGUgcGFyYW0udXBkRGF0YVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcGFyYW0udXBkRGF0YSFbJ2lkJ10gPSB0aGlzLmlkXHJcbiAgICAgIHBhcmFtLmxvZyEucGlkID0gdGhpcy5pZFxyXG4gICAgfVxyXG4gICAgaWYoIXBhcmFtPy5hZGREYXRhICYmICFwYXJhbS51cGREYXRhKXtcclxuICAgICAgcGFyYW0gPSB7dXBkRGF0YTp7aWQ6dGhpcy5pZH0sLi4ucGFyYW19XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZygndGhpcy5pc0xvZy0tLS0nLHRoaXMuaXNMb2cpXHJcbiAgICBpZighdGhpcy5pc0xvZyl7XHJcbiAgICAgIGRlbGV0ZSBwYXJhbS5sb2dcclxuICAgIH1lbHNle1xyXG4gICAgICBsZXQgbGc6c3RyaW5nPScnXHJcbiAgICAgIHBhcmFtLnN1YnNlcnQ/LmZvckVhY2godj0+e1xyXG4gICAgICAgIHYubG9ndG1wPy5mb3JFYWNoKCh2LGspPT57XHJcbiAgICAgICAgICBpZih2LmlkPT09MCl7XHJcbiAgICAgICAgICAgIGxnICs9J+aWsOW7uu+8miAtPiAnK3YubmV3VmFsdWUrJzsnXHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgbGcgKz0gJ1snK3YuaWQrJy0nK3YubGFiZWwrJ10gJyArICh2Lm9sZFZhbHVlIHx8ICcnKSArJyAtPiAnKyh2Lm5ld1ZhbHVlIHx8ICcnKSsnOydcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgICBwYXJhbT17Li4ucGFyYW0sbG9nOnsuLi5wYXJhbS5sb2csc3ViQ29udGVudDpsZ319XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZygncGFyYW09PT09JyxwYXJhbSlcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoK1widXBzZXJ0XCIscGFyYW0sKVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT57XHJcbiAgICAgICAgaWYgKHBhcmFtLmxvZyl7XHJcbiAgICAgICAgICBkZWxldGUgcGFyYW0ubG9nO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8g5peg6K666K+35rGC5oiQ5Yqf5LiO5ZCm77yM6YO95bCG5Yqg6L295Lit54q25oCB6K6+572u5Li6IGZhbHNlXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIC8v6Ieq5aSE55CG6YC76L6RXHJcbiAgZGVhbChwcm0/OkRlYWwpe1xyXG4gICAgaWYgKHBybSkge1xyXG4gICAgICB0aGlzLndlYl9kZWFsKHBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy53ZWJfZGVhbCh0aGlzLmRlYWxQcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJfZGVhbChwYXJhbTpEZWFsKTpPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGgrXCJkZWFsXCIscGFyYW0pXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICB0aGlzLmRlYWxQcm09e2RhdGE6IHJlc3BvbnNlLC4uLnRoaXMuZGVhbFBybX1cclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8g5peg6K666K+35rGC5oiQ5Yqf5LiO5ZCm77yM6YO95bCG5Yqg6L295Lit54q25oCB6K6+572u5Li6IGZhbHNlXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4vL+S8oOWFpW1hcO+8jOagueaNrklE77yM5pu05pawbWFw5pWw5o2uXHJcbiAgd3JpdGUocHJtPzpXcml0ZSkge1xyXG4gICAgaWYocHJtKXtcclxuICAgICAgdGhpcy53ZWJfd3JpdGUocHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLndlYl93cml0ZSh0aGlzLndyaXRlUHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgd2ViX3dyaXRlKHBhcmFtOldyaXRlKTpPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xyXG4gICAgaWYoIXBhcmFtLm1vZGVsTmFtZSl7XHJcbiAgICAgIHBhcmFtID0ge21vZGVsTmFtZTogdGhpcy5tb2RlbE5hbWUsLi4ucGFyYW19XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcIndyaXRlXCIscGFyYW0pXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICBpZiAocGFyYW0ubG9nKXtcclxuICAgICAgICAgIGRlbGV0ZSBwYXJhbS5sb2c7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbi8v5qC55o2uSUTliKDpmaRcclxuICByZW1vdmUocHJtPzpSZW1vdmUpe1xyXG4gICAgaWYocHJtKXtcclxuICAgICAgdGhpcy53ZWJfcmVtb3ZlKHBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy53ZWJfcmVtb3ZlKHRoaXMucmVtb3ZlUHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgd2ViX3JlbW92ZShwYXJhbTpSZW1vdmUpOk9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcInJlbW92ZVwiLHBhcmFtLClcclxuICAgIC5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG4gICAgICAgIGlmIChwYXJhbS5sb2cpe1xyXG4gICAgICAgICAgZGVsZXRlIHBhcmFtLmxvZztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuLy/moLnmja5JROiOt+WPluS4gOadoeaVsOaNrlxyXG4gIGdldChwcm0/OkdldCl7XHJcbiAgICBpZihwcm0pe1xyXG4gICAgICB0aGlzLndlYl9nZXQocHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLndlYl9nZXQodGhpcy5nZXRQcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJfZ2V0KHBhcmFtOkdldCk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgaWYoIXBhcmFtLmhhc093blByb3BlcnR5KCdtb2RlbE5hbWUnKSl7XHJcbiAgICAgIHBhcmFtLm1vZGVsTmFtZT10aGlzLm1vZGVsTmFtZTtcclxuICAgIH0gXHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcImdldFwiLHBhcmFtKVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT57XHJcbiAgICAgICAgdGhpcy5nZXRQcm0uZGF0YSA9IHJlc3BvbnNlXHJcbiAgICAgICAgaWYocmVzcG9uc2UuaWQgPT09IDAgJiYgcGFyYW0uaGFzT3duUHJvcGVydHkoJ2ZvcmVpZ25LZXknKSl7XHJcbiAgICAgICAgICB0aGlzLnVwc2VydFBybS5hZGREYXRhIVtwYXJhbS5mb3JlaWduS2V5IV0gPSBwYXJhbVtwYXJhbS5mb3JlaWduS2V5IV1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pZD1yZXNwb25zZT8uaWRcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8g5peg6K666K+35rGC5oiQ5Yqf5LiO5ZCm77yM6YO95bCG5Yqg6L295Lit54q25oCB6K6+572u5Li6IGZhbHNlXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4vL+iOt+WPluWkmuadoeaVsOaNru+8jOagueaNruS8oOWFpeeahOadoeS7tuiHquWKqOe7hOe7h3NxbFxyXG4gIHNlYXJjaChwcm0/OlNlYXJjaCl7XHJcbiAgICBpZihwcm0pe1xyXG4gICAgICB0aGlzLndlYl9zZWFyY2gocHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLndlYl9zZWFyY2godGhpcy5zZWFyY2hQcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJfc2VhcmNoKHBhcmFtOlNlYXJjaCk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGgrXCJzZWFyY2hcIixwYXJhbSlcclxuICAgIC5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG4gICAgICAgIHRoaXMuc2VhcmNoUHJtID17Li4ucmVzcG9uc2V9XHJcbiAgICAgICAgY29uc29sZS5sb2coJ3Vwc2V5LS0tLS0nLHRoaXMudXBzZXJ0UHJtKVxyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgc2VhcmNobWFwKHBybT86U2VhcmNoKXtcclxuICAgIGlmKHBybSl7XHJcbiAgICAgIHRoaXMud2ViX3NlYXJjaChwcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMud2ViX3NlYXJjaCh0aGlzLnNlYXJjaFBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHdlYl9zZWFyY2htYXAocGFyYW06U2VhcmNoKTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcInNlYXJjaE1hcFwiLHBhcmFtKVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT57XHJcbiAgICAgICAgdGhpcy5zZWFyY2hQcm0gPXsuLi5yZXNwb25zZX1cclxuICAgICAgICBjb25zb2xlLmxvZygndXBzZXktLS0tLScsdGhpcy51cHNlcnRQcm0pXHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICAvL+iOt+WPluWkmuadoeaVsOaNru+8jOagueaNruS8oOWFpeeahOadoeS7tuiHquWKqOe7hOe7h3NxbFxyXG4gIHNlYXJjaENvdW50KHBybT86U2VhcmNoKXtcclxuICAgIGlmKHBybSl7XHJcbiAgICAgIHRoaXMud2ViX3NlYXJjaENvdW50KHBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy53ZWJfc2VhcmNoQ291bnQodGhpcy5zZWFyY2hQcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJfc2VhcmNoQ291bnQocGFyYW06U2VhcmNoKTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcInNlYXJjaENvdW50XCIscGFyYW0pXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICB0aGlzLnNlYXJjaFBybSA9ey4uLnJlc3BvbnNlfVxyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAvL2V4Y2Vs5a+85YWlXHJcbiAgLy8gaW1wb3J0KHBhcmFtOiBJbXBvcnRFeGNlbCk6T2JzZXJ2YWJsZTxhbnk+IHtcclxuICAvLyAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcclxuICAvLyAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcImFtL3JlbW92ZVwiLHBhcmFtLGh0dHBPcHRpb25zKVxyXG4gIC8vICAgLnBpcGUoXHJcbiAgLy8gICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT57XHJcbiAgLy8gICAgICAgdGhpcy5tZXNzYWdlLnNldChyZXNwb25zZSk7XHJcbiAgLy8gICAgICAgdGhpcy5pc1N1Y2Nlc3Muc2V0KHRydWUpO1xyXG4gIC8vICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAvLyAgICAgfSksXHJcbiAgLy8gICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgLy8gICAgICAgLy8g6Iul6K+35rGC5Ye66ZSZ77yM6K6+572u6K+35rGC5oiQ5Yqf54q25oCB5Li6IGZhbHNl77yM5bm25bCG6ZSZ6K+v6YeN5paw5oqb5Ye6XHJcbiAgLy8gICAgICAgdGhpcy5pc1N1Y2Nlc3Muc2V0KGZhbHNlKTtcclxuICAvLyAgICAgICB0aGlzLm1lc3NhZ2Uuc2V0KGVycm9yKTtcclxuICAvLyAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcbiAgLy8gICAgIH0pLFxyXG4gIC8vICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgLy8gICAgICAgLy8g5peg6K666K+35rGC5oiQ5Yqf5LiO5ZCm77yM6YO95bCG5Yqg6L295Lit54q25oCB6K6+572u5Li6IGZhbHNlXHJcbiAgLy8gICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAvLyAgICAgfSlcclxuICAvLyAgICk7XHJcbiAgLy8gfVxyXG4gIC8vLy9leGNlbCDlr7zlh7pcclxuICBleHBvcnQocHJtPzpTZWFyY2gpe1xyXG4gICAgaWYocHJtKXtcclxuICAgICAgdGhpcy53ZWJfZXhwb3J0KHBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy53ZWJfZXhwb3J0KHRoaXMuZXhwb3J0UHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgd2ViX2V4cG9ydChwYXJhbTogU2VhcmNoKTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICBpZighcGFyYW0ubW9kZWxOYW1lKXtcclxuICAgICAgcGFyYW0gPSB7bW9kZWxOYW1lOiB0aGlzLm1vZGVsTmFtZSwuLi5wYXJhbX1cclxuICAgIH1cclxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoK1wiZXhwb3J0XCIscGFyYW0seyByZXNwb25zZVR5cGU6ICdibG9iJyB9KVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT57XHJcbiAgICAgICAgY29uc3QgZGF0YTogQmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0OyBjaGFyc2V0PVVURi04JyB9KTtcclxuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IHBhcmFtLm1vZGVsTmFtZSsnLnhsc3gnO1xyXG4gICAgICAgIEZpbGVTYXZlci5zYXZlQXMoZGF0YSwgZmlsZU5hbWUpO1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgLy/kurrlt6XlpITnkIblr7zlhaVcclxuICBkZWFsRXhwb3J0KHBybT86U2VhcmNoKXtcclxuICAgIGlmKHBybSl7XHJcbiAgICAgIHRoaXMud2ViX2RlYWxfZXhwb3J0KHBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy53ZWJfZGVhbF9leHBvcnQodGhpcy5leHBvcnRQcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJfZGVhbF9leHBvcnQocGFyYW06IFNlYXJjaCk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgaWYoIXBhcmFtLm1vZGVsTmFtZSl7XHJcbiAgICAgIHBhcmFtID0ge21vZGVsTmFtZTogdGhpcy5tb2RlbE5hbWUsLi4ucGFyYW19XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcImRlYWxFeHBvcnRcIixwYXJhbSx7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICBjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7IGNoYXJzZXQ9VVRGLTgnIH0pO1xyXG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gcGFyYW0ubW9kZWxOYW1lKycueGxzeCc7XHJcbiAgICAgICAgRmlsZVNhdmVyLnNhdmVBcyhkYXRhLCBmaWxlTmFtZSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICAvL+S4i+i9veWvvOWFpeeahOaooeadv1xyXG4gIGRvd25sb2FkVGVtcGxhdGUocHJtPzpEZWFsKXtcclxuICAgIGlmKHBybSl7XHJcbiAgICAgIHRoaXMud2ViX2Rvd25sb2FkVGVtcGxhdGUocHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLndlYl9kb3dubG9hZFRlbXBsYXRlKHRoaXMudGFtcGxhdGUpLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJfZG93bmxvYWRUZW1wbGF0ZShwYXJhbTogRGVhbCk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGgrXCJkb3dubG9hZFwiLHBhcmFtLHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSlcclxuICAgIC5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG4gICAgICAgIGNvbnN0IGRhdGE6IEJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2VdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDsgY2hhcnNldD1VVEYtOCcgfSk7XHJcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBwYXJhbS5tb2RlbE5hbWUrJ+aooeadvy54bHN4JztcclxuICAgICAgICBGaWxlU2F2ZXIuc2F2ZUFzKGRhdGEsIGZpbGVOYW1lKTtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8g5peg6K666K+35rGC5oiQ5Yqf5LiO5ZCm77yM6YO95bCG5Yqg6L295Lit54q25oCB6K6+572u5Li6IGZhbHNlXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIC8v5Yig6Zmk5Zu+54mHXHJcbiAgaW1hZ2VEZWxldGUoZmlkPzpzdHJpbmcpe1xyXG4gICAgaWYoZmlkKXtcclxuICAgICAgdGhpcy53ZWJfaW1hZ2VEZWxldGUoZmlkKS5zdWJzY3JpYmUoKTtcclxuICAgIH1lbHNlIGlmICh0aGlzLmZpZC5sZW5ndGg+MCl7XHJcbiAgICAgIHRoaXMud2ViX2ltYWdlRGVsZXRlKHRoaXMuZmlkKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgd2ViX2ltYWdlRGVsZXRlKGZpZDpzdHJpbmcpOk9ic2VydmFibGU8YW55PntcclxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoK1wiaW1hZ2VEZWxldGVcIixmaWQpXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7c2V2ZXJpdHk6ICdzdWNjZXNzJyxzdW1tYXJ5OiAnU3VjY2VzcycsZGV0YWlsOiByZXNwb25zZX0pXHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICAgIC8v5Yig6Zmk5Zu+54mHXHJcbiAgZmlsZXJEZWxldGUoZmlkPzpzdHJpbmcpe1xyXG4gICAgICBpZihmaWQpe1xyXG4gICAgICAgIHRoaXMud2ViX2ZpbGVyRGVsZXRlKGZpZCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1lbHNlIGlmICh0aGlzLmZpZC5sZW5ndGg+MCl7XHJcbiAgICAgICAgdGhpcy53ZWJfZmlsZXJEZWxldGUodGhpcy5maWQpLnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgfVxyXG4gIHdlYl9maWxlckRlbGV0ZShmaWQ6c3RyaW5nKTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGgrXCJpbWFnZURlbGV0ZVwiLGZpZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtzZXZlcml0eTogJ3N1Y2Nlc3MnLHN1bW1hcnk6ICdTdWNjZXNzJyxkZXRhaWw6IHJlc3BvbnNlfSlcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAvL+WIt+aWsHRva2VuXHJcbiAgcmVmcmVzaFRva2VuKHBhcmFtOlRva2VuSW5mbyk6T2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoK1wicmVmcmVzaFRva2VuXCIscGFyYW0pXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICB0aGlzLmRlYWxQcm09e2RhdGE6IHJlc3BvbnNlLC4uLnRoaXMuZGVhbFBybX1cclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8g5peg6K666K+35rGC5oiQ5Yqf5LiO5ZCm77yM6YO95bCG5Yqg6L295Lit54q25oCB6K6+572u5Li6IGZhbHNlXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIC8v5Yib5bu66KGoXHJcbiAgY3JlYXRlVGFibGUocHJtPzpQYXJhbSl7XHJcbiAgICBpZihwcm0pe1xyXG4gICAgICB0aGlzLndlYl9jcmVhdGVUYWJsZShwcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMud2ViX2NyZWF0ZVRhYmxlKHRoaXMucGFyYW0pLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJfY3JlYXRlVGFibGUocGFyYW06UGFyYW0pOk9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcImNyZWF0ZVRhYmxlXCIscGFyYW0pXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICAvLyB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7c2V2ZXJpdHk6ICdzdWNjZXNzJyxzdW1tYXJ5OiAnU3VjY2VzcycsZGV0YWlsOiByZXNwb25zZX0pXHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICAvLyDmmoLml6Dnoa7lrprmmK/lkKbph43nva7lhbbku5blhazlhbHlj5jph49cclxuICByZXNldFBybShzZWFyY2g/OnN0cmluZyl7XHJcbiAgICBzd2l0Y2goc2VhcmNoKXtcclxuICAgICAgY2FzZSAndXBzZXJ0JzpcclxuICAgICAgICB0aGlzLnVwc2VydFBybS5hZGREYXRhID0ge307XHJcbiAgICAgICAgdGhpcy51cHNlcnRQcm0udXBkRGF0YSA9IHt9O1xyXG4gICAgICAgIHRoaXMudXBzZXJ0UHJtLmxvZyA9IHt9XHJcbiAgICAgICAgdGhpcy51cHNlcnRQcm0uc3Vic2VydD8uZm9yRWFjaCh2ID0+IHtcclxuICAgICAgICAgIHYubG9ndG1wID0gbmV3IE1hcCgpO1xyXG4gICAgICAgICAgdi5tYXB0bXAgPSBuZXcgTWFwKCk7XHJcbiAgICAgICAgICB2LnN1YkRhdGEgPSBbXVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OiBcclxuICAgICAgICAnJyAgXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8v6Ieq5aSE55CG6YC76L6RXHJcbiAgZGVhbFF1ZXJ5KHBybT86RGVhbCl7XHJcbiAgICBpZiAocHJtKSB7XHJcbiAgICAgIHRoaXMud2ViRGVhbFF1ZXJ5KHBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy53ZWJEZWFsUXVlcnkodGhpcy5kZWFsUHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgd2ViRGVhbFF1ZXJ5KHBhcmFtOkRlYWwpOk9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcImRlYWxRdWVyeVwiLHBhcmFtKVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT57XHJcbiAgICAgICAgdGhpcy5kZWFsUHJtPXtkYXRhOiByZXNwb25zZSwuLi50aGlzLmRlYWxQcm19XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICBkZWFsQ3VzdG9tKHBybT86RGVhbCl7XHJcbiAgICBpZiAocHJtKSB7XHJcbiAgICAgIHRoaXMud2ViRGVhbEN1c3RvbShwcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMud2ViRGVhbEN1c3RvbSh0aGlzLmRlYWxQcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJEZWFsQ3VzdG9tKHBhcmFtOkRlYWwpOk9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcImRlYWxDdXN0b21cIixwYXJhbSlcclxuICAgIC5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG4gICAgICAgIHRoaXMuZGVhbFBybT17ZGF0YTogcmVzcG9uc2UsLi4udGhpcy5kZWFsUHJtfVxyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19
|
|
543
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW1tLWVsZW1lbnQtdWkvc3JjL2xpYi9hbS9hbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBQyxNQUFNLEVBQUMsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9DLE9BQU8sS0FBSyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBR3hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFvSXpELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQTtBQVFsQixNQUFNLE9BQU8sV0FBVztJQXVDdEI7UUF0Q0EsUUFBUTtRQUNSLFVBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsT0FBTztRQUNQLE9BQUUsR0FBUyxDQUFDLENBQUE7UUFDWixNQUFNO1FBQ04sY0FBUyxHQUFTLEVBQUUsQ0FBQTtRQUNwQixNQUFNO1FBQ04sVUFBSyxHQUFRLEVBQUUsQ0FBQTtRQUNmLFFBQUcsR0FBUyxFQUFFLENBQUE7UUFDZCxJQUFJO1FBQ0osY0FBUyxHQUFjLEVBQUUsQ0FBQztRQUMxQixJQUFJO1FBQ0osa0JBQWEsR0FBZ0IsRUFBRSxDQUFDO1FBQ2hDLE1BQU07UUFDTixnQkFBVyxHQUFjLEVBQUUsQ0FBQztRQUM1QixRQUFRO1FBQ1IsY0FBUyxHQUFTLEVBQUMsT0FBTyxFQUFDLEVBQUUsRUFBQyxPQUFPLEVBQUMsRUFBRSxFQUFDLE9BQU8sRUFBQyxFQUFFLEVBQUMsR0FBRyxFQUFDLEVBQUUs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RUFBQyxDQUFBO1lBQzdDLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDWiw0QkFBNEI7WUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7K0dBdmpCVSxXQUFXO21HQUFYLFdBQVcscURBRlosQ0FBQyxjQUFjLEVBQUMsbUJBQW1CLENBQUMsMEJBRHBDLEVBQUU7OzRGQUdELFdBQVc7a0JBUHZCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsRUFBRTtvQkFDWCxRQUFRLEVBQUUsRUFBRTtvQkFDWixTQUFTLEVBQUMsQ0FBQyxjQUFjLEVBQUMsbUJBQW1CLENBQUM7aUJBQy9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LGluamVjdCxzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgZmluYWxpemUsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgKiBhcyBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcic7XHJcbmltcG9ydCB7IEZvcm1PcHRpb25zIH0gZnJvbSAnLi4vZm9ybS9mb3JtL2Zvcm0uY29tcG9uZW50J1xyXG5pbXBvcnQgeyBTZWFyY2hPcHRpb25zIH0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC9zZWFyY2guY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uU2VydmljZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7VG9hc3R9IGZyb20gJ3ByaW1lbmcvdG9hc3QnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuZXhwb3J0IGludGVyZmFjZSBQYXJhbXtcclxuICBpZD86bnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNlTWVzc2FnZSB7XHJcbiAgaWQ/OiBudW1iZXI7XHJcbiAgcGlkPzpudW1iZXI7ICAvLyDooajkuK1pZFxyXG4gIGZ1bmM/OnN0cmluZztcclxuICBvcGVyYXRvcj86c3RyaW5nO1xyXG4gIGNvbnRlbnQ/OnN0cmluZzsgIC8vIOS4u+ihqOWPmOabtOaJgOacieWtl+auteaLvOaOpeS4gOWdl1xyXG4gIHN1YkNvbnRlbnQ/OnN0cmluZzsgLy8g5a2Q6KGo5Y+Y5pu05ou85o6l5LiA6LW3XHJcbiAgY3JlYXRlZEF0PzpzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBJbXBvcnRFeGNlbHtcclxuICBtb2RlbE5hbWU/OiBzdHJpbmc7XHJcbiAgb3JnSWQ/OiBudW1iZXI7XHJcbiAgb3JnTmFtZT86c3RyaW5nO1xyXG4gIG9yZ0lkRmVpbGQ/OiBzdHJpbmc7XHJcbiAgb3JnTmFtZUZlaWxkPzpzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVXBzZXJ0IHtcclxuICBtb2RlbE5hbWU/OiBzdHJpbmc7XHJcbiAgYWRkRGF0YT86IFJlY29yZDxzdHJpbmcsYW55PjtcclxuICB1cGREYXRhPzogUmVjb3JkPHN0cmluZyxhbnk+O1xyXG4gIHN1YnNlcnQ/OiBTdWJVcHNlcnRbXTtcclxuICBsb2dNb2RlbD86IHN0cmluZztcclxuICBsb2c/OiBUcmFjZU1lc3NhZ2U7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3ViVXBzZXJ0IHtcclxuICBzdWJNb2RlbE5hbWU/OiBzdHJpbmc7XHJcbiAgZms/OnN0cmluZztcclxuICBzdWJEYXRhPzogUmVjb3JkPHN0cmluZyxhbnk+W11cclxuICBtYXB0bXA/OiBNYXA8bnVtYmVyLGFueT47XHJcbiAgbG9ndG1wPzogTWFwPHN0cmluZyxhbnk+XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBEZWFse1xyXG4gIG1vZGVsTmFtZT86IHN0cmluZztcclxuICBkYXRhPzphbnk7XHJcbn1cclxuLy8g5pu05paw54m55a6a5a2X5q61XHJcbmV4cG9ydCBpbnRlcmZhY2UgV3JpdGV7XHJcbiAgbW9kZWxOYW1lPzpzdHJpbmc7XHJcbiAgZGF0YT86UmVjb3JkPHN0cmluZyxhbnk+O1xyXG4gIGxvZ01vZGVsPzpzdHJpbmc7XHJcbiAgbG9nPzpUcmFjZU1lc3NhZ2U7XHJcbiAgdHJhbnNhY3Rpb24/OiBib29sZWFuO1xyXG59XHJcbi8vIOWIoOmZpOaOpeWPo+WjsOaYjlxyXG5leHBvcnQgaW50ZXJmYWNlIFJlbW92ZXtcclxuICBtb2RlbE5hbWU/OnN0cmluZztcclxuICBpZHM/Om51bWJlcltdO1xyXG4gIGRhdGE/OmFueTtcclxuICBsb2dNb2RlbD86c3RyaW5nO1xyXG4gIGxvZz86VHJhY2VNZXNzYWdlO1xyXG4gIHRyYW5zYWN0aW9uPzogYm9vbGVhbjtcclxufVxyXG4vLyDojrflj5bljZXmnaHmlbDmja7or6bmg4VcclxuZXhwb3J0IGludGVyZmFjZSBHZXR7XHJcbiAgbW9kZWxOYW1lPzpzdHJpbmc7XHJcbiAgdXNlckNvZGU/OiBzdHJpbmc7XHJcbiAgb3JnRmllbGQ/OiBzdHJpbmc7XHJcbiAgaWQ/Om51bWJlcjtcclxuICBwcmVsb2Fkcz86c3RyaW5nW107IC8vIOiBlOihqOafpeivouihqOWQjeensO+8jOmcgOWvueW6lOWQjuerr3N0cnVjdFxyXG4gIGZpdGVyUHJlbG9hZHM/OlByZWxvYWRbXTsgLy8g5Y+q6IO95Yqg5LiA5bGCIOexu+S8vCAnbW9kdWxlID0nIG1vZHVsZVxyXG4gIGdldExvZz86Ym9vbGVhbjsgLy/ojrflj5bml6Xlv5dcclxuICBkYXRhPzphbnk7IC8v5ZCO56uv6L+U5Zue55qEcmVzcG9uc2VcclxuICBjb2x1bW5GaWx0ZXJzPzogQ29sdW1uRmlsdGVyW107IC8v6L+H5ruk55qE5YiXXHJcbiAgZm9yZWlnbktleT86c3RyaW5nICAvL+ebtOaOpeaPkuWFpeWtkOihqOmcgOimgeS8oOmAkuWklumUruWtl+auteS7peWPiuWklumUruWAvFxyXG4gIFtwcm9wTmFtZTogc3RyaW5nXTphbnlcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFByZWxvYWR7XHJcbiAgZmVpbGROYW1lPzogc3RyaW5nO1xyXG4gIGZpdGVycz86Q29sdW1uRmlsdGVyW107XHJcbiAgc29ydHM/OlNvcnRbXTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbkZpbHRlciB7XHJcbiAgY29sdW1uRmllbGQ/OnN0cmluZztcclxuICB0eXBlPzpzdHJpbmc7XHJcbiAgZml0ZXI/OiBhbnk7XHJcbiAgZnJvbT86c3RyaW5nIHwgbnVtYmVyO1xyXG4gIHRvPzpzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU29ydHtcclxuICBmaWVsZD86c3RyaW5nO1xyXG4gIGlzQXNjPzpib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaHtcclxuICBtb2RlbE5hbWU/OiBzdHJpbmc7XHJcbiAgdXNlckNvZGU/OiBzdHJpbmc7XHJcbiAgb3JnRmllbGQ/OiBzdHJpbmc7XHJcbiAgY291bnQ/OmJvb2xlYW47IC8v5piv5ZCm6L+U5ZuedG90YWxOdW0gXHJcbiAgcHJlbG9hZHM/OnN0cmluZ1tdO1xyXG4gIGZpdGVyUHJlbG9hZHM/OlByZWxvYWRbXTtcclxuICBtb2RlbD86YW55OyBcclxuICBkYXRhPzphbnk7XHJcbiAgY29sdW1uRmlsdGVycz86IENvbHVtbkZpbHRlcltdOyAvL+i/h+a7pOeahOWIl1xyXG4gIHNvcnRzPzogU29ydFtdO1xyXG4gIGdyb3Vwcz86IHN0cmluZ1tdO1xyXG4gIHJlYWQ/OnN0cmluZ1tdOyAgLy9yZWFkIOaMh+WumuafpeivoueJueWumuWtl+autVxyXG4gIGZ1bmNzPzpSZWNvcmQ8c3RyaW5nLHN0cmluZz47IC8v6YCP6KeG6KGo5ZCO5pyf6KaB55SoXHJcbiAgb2Zmc2V0PzpudW1iZXI7IFxyXG4gIGxpbWl0PzpudW1iZXI7XHJcbiAgdG90YWxOdW0/Om51bWJlcjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuSW5mbyB7XHJcbiAgdG9rZW4/OnN0cmluZ1xyXG4gIGV4cGlyZWQ/OiBudW1iZXJcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIGFtV2Vie1xyXG4gIGlkPzogbnVtYmVyO1xyXG4gIGNvZGU/OiBzdHJpbmc7XHJcbiAgdHlwZT86IHN0cmluZztcclxuICBuYW1lPzogc3RyaW5nO1xyXG4gIGFwcElkPzogbnVtYmVyO1xyXG4gIGNvbnRlbnQ/OiBzdHJpbmc7XHJcbiAgY3JlYXRlZEF0Pzogc3RyaW5nO1xyXG4gIHVwZGF0ZWRBdD86c3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgUmZkIHtcclxuICBtb2RlbE5hbWU/OiBzdHJpbmc7XHJcbiAgbGFiZWxGaWVsZD86IHN0cmluZztcclxuICB2YWx1ZUZpZWxkPzogc3RyaW5nO1xyXG4gIHdoZXJlRmllbGQ/OiBzdHJpbmc7XHJcbiAgdHlwZT86IHN0cmluZztcclxuICBmaXRlcj86IGFueTtcclxuICBkYXRhPzogYW55O1xyXG59XHJcbmNvbnN0IGFwaVBhdGggPSBcIlwiXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWFtJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtdLFxyXG4gIHRlbXBsYXRlOiAnJyxcclxuICBwcm92aWRlcnM6W01lc3NhZ2VTZXJ2aWNlLENvbmZpcm1hdGlvblNlcnZpY2VdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbUNvbXBvbmVudCB7XHJcbiAgLy/mmK/lkKbmj5DkuqTml6Xlv5dcclxuICBpc0xvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8v5Li75pWw5o2uaWRcclxuICBpZDogbnVtYmVyPTBcclxuICAvL+S4u+ihqOaooeWei1xyXG4gIG1vZGVsTmFtZTogc3RyaW5nPScnXHJcbiAgLy9JROWPguaVsFxyXG4gIHBhcmFtOiBQYXJhbT17fVxyXG4gIGZpZDogc3RyaW5nPScnXHJcbiAgLy/lr7zlhaVcclxuICBpbXBvcnRQcm06IEltcG9ydEV4Y2VsPXt9O1xyXG4gIC8v5pCc57SgXHJcbiAgc2VhcmNoT3B0aW9uczogU2VhcmNoT3B0aW9ucz17fTtcclxuICAvL2Zvcm1cclxuICBmb3JtT3B0aW9uczogRm9ybU9wdGlvbnM9e307XHJcbiAgLy/liJvlu7rmiJbogIXmm7TmlrBcclxuICB1cHNlcnRQcm06IFVwc2VydD17dXBkRGF0YTp7fSxhZGREYXRhOnt9LHN1YnNlcnQ6W10sbG9nOnt9fTtcclxuICAvL+WkhOeQhlxyXG4gIGRlYWxQcm06IERlYWw9e307XHJcbiAgLy9tYXDmm7TmlrBcclxuICB3cml0ZVBybTogV3JpdGU9e307XHJcbiAgLy/liKDpmaRcclxuICByZW1vdmVQcm06IFJlbW92ZT17fTtcclxuICAvL+iOt+WPluS4gOadoeaVsOaNrlxyXG4gIGdldFBybTogR2V0PXtkYXRhOnt9fTtcclxuICAvL+afpeivouadoeS7tlxyXG4gIGZpbHRlcjogQ29sdW1uRmlsdGVyPXt9O1xyXG4gIC8v5p+l6K+i5YiX6KGo5pWw5o2uXHJcbiAgc2VhcmNoUHJtOiBTZWFyY2g9e307XHJcbiAgZXhwb3J0UHJtOiBTZWFyY2g9e307XHJcbiAgdGFtcGxhdGU6IERlYWw9e31cclxuICAvLyDooajnpLrmmK/lkKbmraPlnKjliqDovb3nlKjmiLfmlbDmja7nmoRTaWduYWzvvIzliJ3lp4vlgLzkuLogZmFsc2VcclxuICBpc0xvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xyXG4gIGh0dHA6IEh0dHBDbGllbnQgPSBpbmplY3QoSHR0cENsaWVudClcclxuICBtZXNzYWdlU2VydmljZSA6TWVzc2FnZVNlcnZpY2UgPSBpbmplY3QoTWVzc2FnZVNlcnZpY2UpXHJcbiAgY29uZmlybWF0aW9uU2VydmljZSA9IGluamVjdChDb25maXJtYXRpb25TZXJ2aWNlKVxyXG4gIHJvdXRlIDpBY3RpdmF0ZWRSb3V0ZSA9aW5qZWN0KEFjdGl2YXRlZFJvdXRlKVxyXG4gIHJvdXRlciA9IGluamVjdChSb3V0ZXIpXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICByZmQocHJtOiBSZmQpOk9ic2VydmFibGU8YW55PntcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoK1wiUkZEXCIscHJtLClcclxuICAgIC5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgd2ViZ2V0KHBhcmFtOmFtV2ViKTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcIi9nb2FtL2FwaS93ZWJnZXRcIixwYXJhbSwpXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8g5peg6K666K+35rGC5oiQ5Yqf5LiO5ZCm77yM6YO95bCG5Yqg6L295Lit54q25oCB6K6+572u5Li6IGZhbHNlXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB3ZWJzYXZlKHBhcmFtOmFtV2ViKTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcIi9nb2FtL2FwaS93ZWJzYXZlXCIscGFyYW0sKVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT57XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgd2ViZGVsKHBhcmFtOmFtV2ViKTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcIndlYmRlbFwiLHBhcmFtLClcclxuICAgIC5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHVwc2VydChwcm0/OmFueSxjYj86RnVuY3Rpb24pe1xyXG4gICAgaWYocHJtKXtcclxuICAgICAgdGhpcy53ZWJfdXBzZXJ0KHBybSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgY2IgJiYgY2IocmVzKVxyXG5cdFx0ICAgIHRoaXMucmVzZXRQcm0oJ3Vwc2VydCcpXHJcbiAgICAgIH0pO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIC8vIGNvbnN0IHBtOiBVcHNlcnQgPSB0aGlzLnVwc2VydHMoKVxyXG4gICAgICAvLyBjb25zb2xlLmxvZygnMT09PT0nLHBtKVxyXG4gICAgICB0aGlzLndlYl91cHNlcnQodGhpcy51cHNlcnRQcm0pLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgIGNiICYmIGNiKHJlcylcclxuXHRcdCAgICB0aGlzLnJlc2V0UHJtKCd1cHNlcnQnKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgLy/lhajpg6jliJvlu7rmiJbmm7TmlrDvvIzmoLnmja5JROWIpOaWrVxyXG4gIHdlYl91cHNlcnQocGFyYW06VXBzZXJ0KTpPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xyXG4gICAgaWYoIXBhcmFtLm1vZGVsTmFtZSl7XHJcbiAgICAgIHBhcmFtID0ge21vZGVsTmFtZTogdGhpcy5tb2RlbE5hbWUsLi4ucGFyYW19XHJcbiAgICB9XHJcbiAgICBsZXQgYWRkRGF0YTogYW55ID0gcGFyYW0uYWRkRGF0YVxyXG4gICAgaWYoT2JqZWN0LmtleXMoYWRkRGF0YSkubGVuZ3RoPT0wKXtcclxuICAgICAgZGVsZXRlIHBhcmFtLmFkZERhdGFcclxuICAgIH1cclxuICAgIGxldCB1cGREYXRhOiBhbnkgPXBhcmFtLnVwZERhdGFcclxuICAgIGNvbnNvbGUubG9nKCdwYXJhbS0tLS0nLHBhcmFtLnVwZERhdGEpXHJcbiAgICBpZihPYmplY3Qua2V5cyh1cGREYXRhKS5sZW5ndGg9PTApe1xyXG4gICAgICBkZWxldGUgcGFyYW0udXBkRGF0YVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcGFyYW0udXBkRGF0YSFbJ2lkJ10gPSB0aGlzLmlkXHJcbiAgICAgIHBhcmFtLmxvZyEucGlkID0gdGhpcy5pZFxyXG4gICAgfVxyXG4gICAgaWYoIXBhcmFtPy5hZGREYXRhICYmICFwYXJhbS51cGREYXRhKXtcclxuICAgICAgcGFyYW0gPSB7dXBkRGF0YTp7aWQ6dGhpcy5pZH0sLi4ucGFyYW19XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZygndGhpcy5pc0xvZy0tLS0nLHRoaXMuaXNMb2cpXHJcbiAgICBpZighdGhpcy5pc0xvZyl7XHJcbiAgICAgIGRlbGV0ZSBwYXJhbS5sb2dcclxuICAgIH1lbHNle1xyXG4gICAgICBsZXQgbGc6c3RyaW5nPScnXHJcbiAgICAgIHBhcmFtLnN1YnNlcnQ/LmZvckVhY2godj0+e1xyXG4gICAgICAgIHYubG9ndG1wPy5mb3JFYWNoKCh2LGspPT57XHJcbiAgICAgICAgICBpZih2LmlkPT09MCl7XHJcbiAgICAgICAgICAgIGxnICs9J+aWsOW7uu+8miAtPiAnK3YubmV3VmFsdWUrJzsnXHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgbGcgKz0gJ1snK3YuaWQrJy0nK3YubGFiZWwrJ10gJyArICh2Lm9sZFZhbHVlIHx8ICcnKSArJyAtPiAnKyh2Lm5ld1ZhbHVlIHx8ICcnKSsnOydcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgICBwYXJhbT17Li4ucGFyYW0sbG9nOnsuLi5wYXJhbS5sb2csc3ViQ29udGVudDpsZ319XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZygncGFyYW09PT09JyxwYXJhbSlcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoK1widXBzZXJ0XCIscGFyYW0sKVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT57XHJcbiAgICAgICAgaWYgKHBhcmFtLmxvZyl7XHJcbiAgICAgICAgICBkZWxldGUgcGFyYW0ubG9nO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8g5peg6K666K+35rGC5oiQ5Yqf5LiO5ZCm77yM6YO95bCG5Yqg6L295Lit54q25oCB6K6+572u5Li6IGZhbHNlXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIC8v6Ieq5aSE55CG6YC76L6RXHJcbiAgZGVhbChwcm0/OkRlYWwpe1xyXG4gICAgaWYgKHBybSkge1xyXG4gICAgICB0aGlzLndlYl9kZWFsKHBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy53ZWJfZGVhbCh0aGlzLmRlYWxQcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJfZGVhbChwYXJhbTpEZWFsKTpPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGgrXCJkZWFsXCIscGFyYW0pXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICB0aGlzLmRlYWxQcm09e2RhdGE6IHJlc3BvbnNlLC4uLnRoaXMuZGVhbFBybX1cclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8g5peg6K666K+35rGC5oiQ5Yqf5LiO5ZCm77yM6YO95bCG5Yqg6L295Lit54q25oCB6K6+572u5Li6IGZhbHNlXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4vL+S8oOWFpW1hcO+8jOagueaNrklE77yM5pu05pawbWFw5pWw5o2uXHJcbiAgd3JpdGUocHJtPzpXcml0ZSkge1xyXG4gICAgaWYocHJtKXtcclxuICAgICAgdGhpcy53ZWJfd3JpdGUocHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLndlYl93cml0ZSh0aGlzLndyaXRlUHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgd2ViX3dyaXRlKHBhcmFtOldyaXRlKTpPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xyXG4gICAgaWYoIXBhcmFtLm1vZGVsTmFtZSl7XHJcbiAgICAgIHBhcmFtID0ge21vZGVsTmFtZTogdGhpcy5tb2RlbE5hbWUsLi4ucGFyYW19XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcIndyaXRlXCIscGFyYW0pXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICBpZiAocGFyYW0ubG9nKXtcclxuICAgICAgICAgIGRlbGV0ZSBwYXJhbS5sb2c7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbi8v5qC55o2uSUTliKDpmaRcclxuICByZW1vdmUocHJtPzpSZW1vdmUpe1xyXG4gICAgaWYocHJtKXtcclxuICAgICAgdGhpcy53ZWJfcmVtb3ZlKHBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy53ZWJfcmVtb3ZlKHRoaXMucmVtb3ZlUHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgd2ViX3JlbW92ZShwYXJhbTpSZW1vdmUpOk9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcInJlbW92ZVwiLHBhcmFtLClcclxuICAgIC5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG4gICAgICAgIGlmIChwYXJhbS5sb2cpe1xyXG4gICAgICAgICAgZGVsZXRlIHBhcmFtLmxvZztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuLy/moLnmja5JROiOt+WPluS4gOadoeaVsOaNrlxyXG4gIGdldChwcm0/OkdldCl7XHJcbiAgICBpZihwcm0pe1xyXG4gICAgICB0aGlzLndlYl9nZXQocHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLndlYl9nZXQodGhpcy5nZXRQcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJfZ2V0KHBhcmFtOkdldCk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgaWYoIXBhcmFtLmhhc093blByb3BlcnR5KCdtb2RlbE5hbWUnKSl7XHJcbiAgICAgIHBhcmFtLm1vZGVsTmFtZT10aGlzLm1vZGVsTmFtZTtcclxuICAgIH0gXHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcImdldFwiLHBhcmFtKVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT57XHJcbiAgICAgICAgdGhpcy5nZXRQcm0uZGF0YSA9IHJlc3BvbnNlXHJcbiAgICAgICAgaWYocmVzcG9uc2UuaWQgPT09IDAgJiYgcGFyYW0uaGFzT3duUHJvcGVydHkoJ2ZvcmVpZ25LZXknKSl7XHJcbiAgICAgICAgICB0aGlzLnVwc2VydFBybS5hZGREYXRhIVtwYXJhbS5mb3JlaWduS2V5IV0gPSBwYXJhbVtwYXJhbS5mb3JlaWduS2V5IV1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pZD1yZXNwb25zZT8uaWRcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8g5peg6K666K+35rGC5oiQ5Yqf5LiO5ZCm77yM6YO95bCG5Yqg6L295Lit54q25oCB6K6+572u5Li6IGZhbHNlXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4vL+iOt+WPluWkmuadoeaVsOaNru+8jOagueaNruS8oOWFpeeahOadoeS7tuiHquWKqOe7hOe7h3NxbFxyXG4gIHNlYXJjaChwcm0/OlNlYXJjaCl7XHJcbiAgICBpZihwcm0pe1xyXG4gICAgICB0aGlzLndlYl9zZWFyY2gocHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLndlYl9zZWFyY2godGhpcy5zZWFyY2hQcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJfc2VhcmNoKHBhcmFtOlNlYXJjaCk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGgrXCJzZWFyY2hcIixwYXJhbSlcclxuICAgIC5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG4gICAgICAgIHRoaXMuc2VhcmNoUHJtID17Li4ucmVzcG9uc2V9XHJcbiAgICAgICAgY29uc29sZS5sb2coJ3Vwc2V5LS0tLS0nLHRoaXMudXBzZXJ0UHJtKVxyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgc2VhcmNobWFwKHBybT86U2VhcmNoKXtcclxuICAgIGlmKHBybSl7XHJcbiAgICAgIHRoaXMud2ViX3NlYXJjaChwcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMud2ViX3NlYXJjaCh0aGlzLnNlYXJjaFBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHdlYl9zZWFyY2htYXAocGFyYW06U2VhcmNoKTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcInNlYXJjaE1hcFwiLHBhcmFtKVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT57XHJcbiAgICAgICAgdGhpcy5zZWFyY2hQcm0gPXsuLi5yZXNwb25zZX1cclxuICAgICAgICBjb25zb2xlLmxvZygndXBzZXktLS0tLScsdGhpcy51cHNlcnRQcm0pXHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICAvL+iOt+WPluWkmuadoeaVsOaNru+8jOagueaNruS8oOWFpeeahOadoeS7tuiHquWKqOe7hOe7h3NxbFxyXG4gIHNlYXJjaENvdW50KHBybT86U2VhcmNoKXtcclxuICAgIGlmKHBybSl7XHJcbiAgICAgIHRoaXMud2ViX3NlYXJjaENvdW50KHBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy53ZWJfc2VhcmNoQ291bnQodGhpcy5zZWFyY2hQcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJfc2VhcmNoQ291bnQocGFyYW06U2VhcmNoKTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcInNlYXJjaENvdW50XCIscGFyYW0pXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICB0aGlzLnNlYXJjaFBybSA9ey4uLnJlc3BvbnNlfVxyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAvL2V4Y2Vs5a+85YWlXHJcbiAgLy8gaW1wb3J0KHBhcmFtOiBJbXBvcnRFeGNlbCk6T2JzZXJ2YWJsZTxhbnk+IHtcclxuICAvLyAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcclxuICAvLyAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcImFtL3JlbW92ZVwiLHBhcmFtLGh0dHBPcHRpb25zKVxyXG4gIC8vICAgLnBpcGUoXHJcbiAgLy8gICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT57XHJcbiAgLy8gICAgICAgdGhpcy5tZXNzYWdlLnNldChyZXNwb25zZSk7XHJcbiAgLy8gICAgICAgdGhpcy5pc1N1Y2Nlc3Muc2V0KHRydWUpO1xyXG4gIC8vICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAvLyAgICAgfSksXHJcbiAgLy8gICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgLy8gICAgICAgLy8g6Iul6K+35rGC5Ye66ZSZ77yM6K6+572u6K+35rGC5oiQ5Yqf54q25oCB5Li6IGZhbHNl77yM5bm25bCG6ZSZ6K+v6YeN5paw5oqb5Ye6XHJcbiAgLy8gICAgICAgdGhpcy5pc1N1Y2Nlc3Muc2V0KGZhbHNlKTtcclxuICAvLyAgICAgICB0aGlzLm1lc3NhZ2Uuc2V0KGVycm9yKTtcclxuICAvLyAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcbiAgLy8gICAgIH0pLFxyXG4gIC8vICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgLy8gICAgICAgLy8g5peg6K666K+35rGC5oiQ5Yqf5LiO5ZCm77yM6YO95bCG5Yqg6L295Lit54q25oCB6K6+572u5Li6IGZhbHNlXHJcbiAgLy8gICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAvLyAgICAgfSlcclxuICAvLyAgICk7XHJcbiAgLy8gfVxyXG4gIC8vLy9leGNlbCDlr7zlh7pcclxuICBleHBvcnQocHJtPzpTZWFyY2gpe1xyXG4gICAgaWYocHJtKXtcclxuICAgICAgdGhpcy53ZWJfZXhwb3J0KHBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy53ZWJfZXhwb3J0KHRoaXMuZXhwb3J0UHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgd2ViX2V4cG9ydChwYXJhbTogU2VhcmNoKTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICBpZighcGFyYW0ubW9kZWxOYW1lKXtcclxuICAgICAgcGFyYW0gPSB7bW9kZWxOYW1lOiB0aGlzLm1vZGVsTmFtZSwuLi5wYXJhbX1cclxuICAgIH1cclxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoK1wiZXhwb3J0XCIscGFyYW0seyByZXNwb25zZVR5cGU6ICdibG9iJyB9KVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT57XHJcbiAgICAgICAgY29uc3QgZGF0YTogQmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZV0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0OyBjaGFyc2V0PVVURi04JyB9KTtcclxuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IHBhcmFtLm1vZGVsTmFtZSsnLnhsc3gnO1xyXG4gICAgICAgIEZpbGVTYXZlci5zYXZlQXMoZGF0YSwgZmlsZU5hbWUpO1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgLy/kurrlt6XlpITnkIblr7zlhaVcclxuICBkZWFsRXhwb3J0KHBybT86U2VhcmNoKXtcclxuICAgIGlmKHBybSl7XHJcbiAgICAgIHRoaXMud2ViX2RlYWxfZXhwb3J0KHBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy53ZWJfZGVhbF9leHBvcnQodGhpcy5leHBvcnRQcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJfZGVhbF9leHBvcnQocGFyYW06IFNlYXJjaCk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgaWYoIXBhcmFtLm1vZGVsTmFtZSl7XHJcbiAgICAgIHBhcmFtID0ge21vZGVsTmFtZTogdGhpcy5tb2RlbE5hbWUsLi4ucGFyYW19XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcImRlYWxFeHBvcnRcIixwYXJhbSx7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICBjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7IGNoYXJzZXQ9VVRGLTgnIH0pO1xyXG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gcGFyYW0ubW9kZWxOYW1lKycueGxzeCc7XHJcbiAgICAgICAgRmlsZVNhdmVyLnNhdmVBcyhkYXRhLCBmaWxlTmFtZSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICAvL+S4i+i9veWvvOWFpeeahOaooeadv1xyXG4gIGRvd25sb2FkVGVtcGxhdGUocHJtPzpEZWFsKXtcclxuICAgIGlmKHBybSl7XHJcbiAgICAgIHRoaXMud2ViX2Rvd25sb2FkVGVtcGxhdGUocHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLndlYl9kb3dubG9hZFRlbXBsYXRlKHRoaXMudGFtcGxhdGUpLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJfZG93bmxvYWRUZW1wbGF0ZShwYXJhbTogRGVhbCk6T2JzZXJ2YWJsZTxhbnk+e1xyXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGgrXCJkb3dubG9hZFwiLHBhcmFtLHsgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSlcclxuICAgIC5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG4gICAgICAgIGNvbnN0IGRhdGE6IEJsb2IgPSBuZXcgQmxvYihbcmVzcG9uc2VdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldDsgY2hhcnNldD1VVEYtOCcgfSk7XHJcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBwYXJhbS5tb2RlbE5hbWUrJ+aooeadvy54bHN4JztcclxuICAgICAgICBGaWxlU2F2ZXIuc2F2ZUFzKGRhdGEsIGZpbGVOYW1lKTtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8g5peg6K666K+35rGC5oiQ5Yqf5LiO5ZCm77yM6YO95bCG5Yqg6L295Lit54q25oCB6K6+572u5Li6IGZhbHNlXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIC8v5Yig6Zmk5Zu+54mHXHJcbiAgaW1hZ2VEZWxldGUoZmlkPzpzdHJpbmcpe1xyXG4gICAgaWYoZmlkKXtcclxuICAgICAgdGhpcy53ZWJfaW1hZ2VEZWxldGUoZmlkKS5zdWJzY3JpYmUoKTtcclxuICAgIH1lbHNlIGlmICh0aGlzLmZpZC5sZW5ndGg+MCl7XHJcbiAgICAgIHRoaXMud2ViX2ltYWdlRGVsZXRlKHRoaXMuZmlkKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgd2ViX2ltYWdlRGVsZXRlKGZpZDpzdHJpbmcpOk9ic2VydmFibGU8YW55PntcclxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoK1wiaW1hZ2VEZWxldGVcIixmaWQpXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7c2V2ZXJpdHk6ICdzdWNjZXNzJyxzdW1tYXJ5OiAnU3VjY2VzcycsZGV0YWlsOiByZXNwb25zZX0pXHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICAgIC8v5Yig6Zmk5Zu+54mHXHJcbiAgZmlsZXJEZWxldGUoZmlkPzpzdHJpbmcpe1xyXG4gICAgICBpZihmaWQpe1xyXG4gICAgICAgIHRoaXMud2ViX2ZpbGVyRGVsZXRlKGZpZCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1lbHNlIGlmICh0aGlzLmZpZC5sZW5ndGg+MCl7XHJcbiAgICAgICAgdGhpcy53ZWJfZmlsZXJEZWxldGUodGhpcy5maWQpLnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgfVxyXG4gIHdlYl9maWxlckRlbGV0ZShmaWQ6c3RyaW5nKTpPYnNlcnZhYmxlPGFueT57XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGFwaVBhdGgrXCJpbWFnZURlbGV0ZVwiLGZpZClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtzZXZlcml0eTogJ3N1Y2Nlc3MnLHN1bW1hcnk6ICdTdWNjZXNzJyxkZXRhaWw6IHJlc3BvbnNlfSlcclxuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAvL+WIt+aWsHRva2VuXHJcbiAgcmVmcmVzaFRva2VuKHBhcmFtOlRva2VuSW5mbyk6T2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChhcGlQYXRoK1wicmVmcmVzaFRva2VuXCIscGFyYW0pXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICB0aGlzLmRlYWxQcm09e2RhdGE6IHJlc3BvbnNlLC4uLnRoaXMuZGVhbFBybX1cclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICAgIH0pLFxyXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XHJcbiAgICAgICAgLy8g5peg6K666K+35rGC5oiQ5Yqf5LiO5ZCm77yM6YO95bCG5Yqg6L295Lit54q25oCB6K6+572u5Li6IGZhbHNlXHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIC8v5Yib5bu66KGoXHJcbiAgY3JlYXRlVGFibGUocHJtPzpQYXJhbSl7XHJcbiAgICBpZihwcm0pe1xyXG4gICAgICB0aGlzLndlYl9jcmVhdGVUYWJsZShwcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMud2ViX2NyZWF0ZVRhYmxlKHRoaXMucGFyYW0pLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJfY3JlYXRlVGFibGUocGFyYW06UGFyYW0pOk9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcImNyZWF0ZVRhYmxlXCIscGFyYW0pXHJcbiAgICAucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PntcclxuICAgICAgICAvLyB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7c2V2ZXJpdHk6ICdzdWNjZXNzJyxzdW1tYXJ5OiAnU3VjY2VzcycsZGV0YWlsOiByZXNwb25zZX0pXHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICAvLyDmmoLml6Dnoa7lrprmmK/lkKbph43nva7lhbbku5blhazlhbHlj5jph49cclxuICByZXNldFBybShzZWFyY2g/OnN0cmluZyl7XHJcbiAgICBzd2l0Y2goc2VhcmNoKXtcclxuICAgICAgY2FzZSAndXBzZXJ0JzpcclxuICAgICAgICB0aGlzLnVwc2VydFBybS5hZGREYXRhID0ge307XHJcbiAgICAgICAgdGhpcy51cHNlcnRQcm0udXBkRGF0YSA9IHt9O1xyXG4gICAgICAgIHRoaXMudXBzZXJ0UHJtLmxvZyA9IHt9XHJcbiAgICAgICAgdGhpcy51cHNlcnRQcm0uc3Vic2VydD8uZm9yRWFjaCh2ID0+IHtcclxuICAgICAgICAgIHYubG9ndG1wID0gbmV3IE1hcCgpO1xyXG4gICAgICAgICAgdi5tYXB0bXAgPSBuZXcgTWFwKCk7XHJcbiAgICAgICAgICB2LnN1YkRhdGEgPSBbXVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OiBcclxuICAgICAgICAnJyAgXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8v6Ieq5aSE55CG6YC76L6RXHJcbiAgZGVhbFF1ZXJ5KHBybT86RGVhbCl7XHJcbiAgICBpZiAocHJtKSB7XHJcbiAgICAgIHRoaXMud2ViRGVhbFF1ZXJ5KHBybSkuc3Vic2NyaWJlKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy53ZWJEZWFsUXVlcnkodGhpcy5kZWFsUHJtKS5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcbiAgd2ViRGVhbFF1ZXJ5KHBhcmFtOkRlYWwpOk9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcImRlYWxRdWVyeVwiLHBhcmFtKVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT57XHJcbiAgICAgICAgdGhpcy5kZWFsUHJtPXtkYXRhOiByZXNwb25zZSwuLi50aGlzLmRlYWxQcm19XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgICB9KSxcclxuICAgICAgZmluYWxpemUoKCkgPT4ge1xyXG4gICAgICAgIC8vIOaXoOiuuuivt+axguaIkOWKn+S4juWQpu+8jOmDveWwhuWKoOi9veS4reeKtuaAgeiuvue9ruS4uiBmYWxzZVxyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICBkZWFsQ3VzdG9tKHBybT86RGVhbCl7XHJcbiAgICBpZiAocHJtKSB7XHJcbiAgICAgIHRoaXMud2ViRGVhbEN1c3RvbShwcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMud2ViRGVhbEN1c3RvbSh0aGlzLmRlYWxQcm0pLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICB3ZWJEZWFsQ3VzdG9tKHBhcmFtOkRlYWwpOk9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYXBpUGF0aCtcImRlYWxDdXN0b21cIixwYXJhbSlcclxuICAgIC5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+e1xyXG4gICAgICAgIHRoaXMuZGVhbFBybT17ZGF0YTogcmVzcG9uc2UsLi4udGhpcy5kZWFsUHJtfVxyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSksXHJcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAvLyDml6Dorrror7fmsYLmiJDlip/kuI7lkKbvvIzpg73lsIbliqDovb3kuK3nirbmgIHorr7nva7kuLogZmFsc2VcclxuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19
|