@mtgame/core 0.2.115 → 0.2.116
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/api/tournament-api.d.ts +1 -0
- package/bundles/mtgame-core.umd.js +3 -0
- package/bundles/mtgame-core.umd.js.map +1 -1
- package/esm2015/api/tournament-api.js +4 -1
- package/fesm2015/mtgame-core.js +3 -0
- package/fesm2015/mtgame-core.js.map +1 -1
- package/mtgame-core.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -508,6 +508,9 @@ export function applyStatisticFilters(filters) {
|
|
|
508
508
|
if (filters.only_closed !== undefined && filters.only_closed !== null) {
|
|
509
509
|
rawFilters['only_closed'] = filters.only_closed ? '1' : '0';
|
|
510
510
|
}
|
|
511
|
+
if (filters.check_ignore_game !== undefined && filters.check_ignore_game !== null) {
|
|
512
|
+
rawFilters['check_ignore_game'] = filters.check_ignore_game ? '1' : '0';
|
|
513
|
+
}
|
|
511
514
|
return rawFilters;
|
|
512
515
|
}
|
|
513
516
|
export function applyStatisticLeadersFilters(filters, params) {
|
|
@@ -527,4 +530,4 @@ export function applyStatisticLeadersFilters(filters, params) {
|
|
|
527
530
|
}
|
|
528
531
|
return params;
|
|
529
532
|
}
|
|
530
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91cm5hbWVudC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9hcGkvdG91cm5hbWVudC1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxN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RyxDQUFDO0tBQzdEO0lBRUQsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxPQUFnQyxFQUFFLE1BQWtCO0lBQy9GLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUN0QyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoQixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDeEM7S0FDRjtJQUVELElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7UUFDbEMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDL0Q7SUFFRCxJQUFJLE9BQU8sQ0FBQyxjQUFjLEVBQUU7UUFDMUIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztLQUN6RTtJQUNELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUNsQixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztLQUN6RDtJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgVG91cm5hbWVudCB9IGZyb20gJy4uL21vZGVscy90b3VybmFtZW50JztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRvdXJuYW1lbnROZXdzIH0gZnJvbSAnLi4vbW9kZWxzL3RvdXJuYW1lbnQtbmV3cyc7XG5pbXBvcnQgeyBHYW1lLCBHYW1lU3RhdHVzZXMgfSBmcm9tICcuLi9tb2RlbHMvZ2FtZSc7XG5pbXBvcnQgeyBHYW1lVGltZWxpbmVTdGFnZXMgfSBmcm9tICcuLi9tb2RlbHMvZ2FtZS10aW1lbGluZS1zdGFnZXMnO1xuaW1wb3J0IHsgVG91cm5hbWVudFRlYW0gfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudC10ZWFtJztcbmltcG9ydCB7IFRvdXJuYW1lbnRTdGFnZSB9IGZyb20gJy4uL21vZGVscy90b3VybmFtZW50LXN0YWdlJztcbmltcG9ydCB7IFBsYXlvZmYgfSBmcm9tICcuLi9tb2RlbHMvcGxheW9mZic7XG5pbXBvcnQgeyBQYWdpbmF0ZWRSZXNwb25zZSB9IGZyb20gJy4vcGFnaW5hdGVkLXJlc3BvbnNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYXNrZXRiYWxsU3RhdGlzdGljIH0gZnJvbSAnLi4vbW9kZWxzL2Jhc2tldGJhbGwtc3RhdGlzdGljJztcbmltcG9ydCB7IFZvbGxleWJhbGxTdGF0aXN0aWMgfSBmcm9tICcuLi9tb2RlbHMvdm9sbGV5YmFsbC1zdGF0aXN0aWMnO1xuaW1wb3J0IHsgVG91cm5hbWVudFRlYW1Vc2VyIH0gZnJvbSAnLi4vbW9kZWxzL3RvdXJuYW1lbnQtdGVhbS11c2VyJztcbmltcG9ydCB7IFRvdXJuYW1lbnRTdGFnZVRlYW0gfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudC1zdGFnZS10ZWFtJztcbmltcG9ydCB7IFRvdXJuYW1lbnRFdmVudCwgVG91cm5hbWVudEV2ZW50VHlwZXMgfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudC1ldmVudCc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgSG9ja2V5U3RhdGlzdGljIH0gZnJvbSAnLi4vbW9kZWxzL2hvY2tleS1zdGF0aXN0aWMnO1xuaW1wb3J0IHsgRm9vdGJhbGxTdGF0aXN0aWMgfSBmcm9tICcuLi9tb2RlbHMvZm9vdGJhbGwtc3RhdGlzdGljJztcbmltcG9ydCB7IExlYWd1ZVVzZXJQZXJtaXNzaW9ucyB9IGZyb20gJy4uL21vZGVscy9sZWFndWUtdXNlcic7XG5pbXBvcnQgeyBIYW5kYmFsbFN0YXRpc3RpYyB9IGZyb20gJy4uL21vZGVscy9oYW5kYmFsbC1zdGF0aXN0aWMnO1xuaW1wb3J0IHsgUnVnYnlTdGF0aXN0aWMgfSBmcm9tICcuLi9tb2RlbHMvcnVnYnktc3RhdGlzdGljJztcbmltcG9ydCB7IFRvdXJuYW1lbnRHcm91cCB9IGZyb20gJy4uL21vZGVscy90b3VybmFtZW50LWdyb3VwJztcbmltcG9ydCB7IFRlYW1BY2hpZXZlbWVudCB9IGZyb20gJy4uL21vZGVscy90ZWFtLWFjaGlldmVtZW50JztcbmltcG9ydCB7IFdhdGVycG9sb1N0YXRpc3RpYyB9IGZyb20gJy4uL21vZGVscy93YXRlcnBvbG8tc3RhdGlzdGljJztcbmltcG9ydCB7IFRvdXJuYW1lbnRSb3VuZCB9IGZyb20gJy4uL21vZGVscy90b3VybmFtZW50LXJvdW5kJztcbmltcG9ydCB7IFRvdXJuYW1lbnREaXZpc2lvbiB9IGZyb20gJy4uL21vZGVscy90b3VybmFtZW50LWRpdmlzaW9uJztcbmltcG9ydCB7IFVzZXJHZW5kZXIgfSBmcm9tICcuLi9tb2RlbHMvdXNlcic7XG5pbXBvcnQgeyBHYW1lVXNlckxpbWl0YXRpb25zIH0gZnJvbSAnLi4vbW9kZWxzL2dhbWUtdXNlci1saW1pdGF0aW9uJztcbmltcG9ydCB7IEdhbWVIb2NrZXlQb3NpdGlvbiB9IGZyb20gJy4uL21vZGVscy9ob2NrZXktcHJvZmlsZSc7XG5pbXBvcnQgeyBHYW1lRm9vdGJhbGxQb3NpdGlvbiB9IGZyb20gJy4uL21vZGVscy9mb290YmFsbC1wcm9maWxlJztcbmltcG9ydCB7IEdhbWVIYW5kYmFsbFBvc2l0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2hhbmRiYWxsLXByb2ZpbGUnO1xuaW1wb3J0IHsgR2FtZVdhdGVycG9sb1Bvc2l0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL3dhdGVycG9sby1wcm9maWxlJztcbmltcG9ydCB7IEdhbWVCYXNrZXRiYWxsUG9zaXRpb24gfSBmcm9tICcuLi9tb2RlbHMvYmFza2V0YmFsbC1wcm9maWxlJztcbmltcG9ydCB7IEdhbWVWb2xsZXliYWxsUG9zaXRpb24gfSBmcm9tICcuLi9tb2RlbHMvdm9sbGV5YmFsbC1wcm9maWxlJztcbmltcG9ydCB7IEdhbWVSdWdieVBvc2l0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL3J1Z2J5LXByb2ZpbGUnO1xuaW1wb3J0IHsgV3Jlc3RiYWxsU3RhdGlzdGljIH0gZnJvbSAnLi4vbW9kZWxzL3dyZXN0YmFsbC1zdGF0aXN0aWMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRvdXJuYW1lbnRHYW1lc0ZpbHRlcnMge1xuICB0b3VybmFtZW50SWRzPzogbnVtYmVyW107XG4gIHRvdXJuYW1lbnRTZWFzb25JZD86IG51bWJlcjtcbiAgdG91cm5hbWVudFN0YWdlSWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRSb3VuZElkPzogbnVtYmVyO1xuICB0b3VybmFtZW50R3JvdXBJZD86IG51bWJlcjtcbiAgZGl2aXNpb25JZD86IG51bWJlcjtcbiAgdG91cm5hbWVudFRvdXI/OiBudW1iZXI7XG4gIHRlYW1JZD86IG51bWJlcjtcbiAgcGxheW9mZlN0YWdlPzogbnVtYmVyO1xuICBwbGF5b2ZmUm91bmQ/OiBudW1iZXI7XG4gIHBsYXlvZmZJZD86IG51bWJlcjtcbiAgaXNQbGF5b2ZmPzogYm9vbGVhbjtcbiAgc3RhdHVzPzogR2FtZVN0YXR1c2VzO1xuICBzdGF0dXNlcz86IEdhbWVTdGF0dXNlc1tdO1xuICB0b3VybmFtZW50Q291cnRJZD86IG51bWJlcjtcbiAgbGVhZ3VlUGxheWVySWQ/OiBudW1iZXI7XG4gIHVzZXJJZD86IG51bWJlcjtcbiAgcXVlcnk/OiBzdHJpbmc7XG4gIGRhdGVfZnJvbT86IHN0cmluZztcbiAgZGF0ZV90bz86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgU3RhdGlzdGljR3JvdXBCeVR5cGVzID0gJ3RlYW0nIHwgJ3VzZXInIHwgJ3RlYW1fdXNlcicgfCAndG91cm5hbWVudF90ZWFtJyB8ICdsZWFndWVfcGxheWVyJyB8ICd0b3VybmFtZW50X3RlYW1fdXNlcidcbiAgfCAnbW9udGgnIHwgJ3dpbl9sb3Nlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGlzdGljRmlsdGVycyB7XG4gIGxlYWd1ZV9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF9pZHM/OiBudW1iZXJbXTtcbiAgdG91cm5hbWVudF9zZWFzb25faWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfc2Vhc29uX2lkcz86IG51bWJlcltdO1xuICB0b3VybmFtZW50X3RlYW1faWQ/OiBudW1iZXI7XG4gIGxlYWd1ZV9wbGF5ZXJfaWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfdGVhbV91c2VyX2lkPzogbnVtYmVyO1xuICB0ZWFtX2lkPzogbnVtYmVyO1xuICB0ZWFtX3VzZXJfaWQ/OiBudW1iZXI7XG4gIHVzZXJfaWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfc3RhZ2VfaWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfcm91bmRfaWQ/OiBudW1iZXI7XG4gIGRpdmlzaW9uX2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X2dyb3VwX2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X3RvdXI/OiBudW1iZXI7XG4gIHBsYXlvZmZfc3RhZ2U/OiBudW1iZXI7XG4gIHBsYXlvZmZfcm91bmQ/OiBudW1iZXI7XG4gIHBsYXlvZmZfaWQ/OiBudW1iZXI7XG4gIGlzX3BsYXlvZmY/OiBib29sZWFuO1xuICBkYXRlX2Zyb20/OiBzdHJpbmc7XG4gIGRhdGVfdG8/OiBzdHJpbmc7XG4gIHF1ZXJ5Pzogc3RyaW5nO1xuICBnZW5kZXI/OiBVc2VyR2VuZGVyO1xuICBiYXNrZXRiYWxsX3Bvc2l0aW9uPzogR2FtZUJhc2tldGJhbGxQb3NpdGlvbjtcbiAgdm9sbGV5YmFsbF9wb3NpdGlvbj86IEdhbWVWb2xsZXliYWxsUG9zaXRpb247XG4gIGhvY2tleV9wb3NpdGlvbj86IEdhbWVIb2NrZXlQb3NpdGlvbjtcbiAgZm9vdGJhbGxfcG9zaXRpb24/OiBHYW1lRm9vdGJhbGxQb3NpdGlvbjtcbiAgaGFuZGJhbGxfcG9zaXRpb24/OiBHYW1lSGFuZGJhbGxQb3NpdGlvbjtcbiAgd2F0ZXJwb2xvX3Bvc2l0aW9uPzogR2FtZVdhdGVycG9sb1Bvc2l0aW9uO1xuICBydWdieV9wb3NpdGlvbj86IEdhbWVSdWdieVBvc2l0aW9uO1xuICBsZWFndWVfcGxheWVyX2ZpZWxkX3ZhbHVlPzoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG4gIHRvdXJuYW1lbnRfdGVhbV9maWVsZF92YWx1ZT86IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9O1xuICBwZXJfZ2FtZT86IGJvb2xlYW47XG4gIGdyb3VwX2J5OiBTdGF0aXN0aWNHcm91cEJ5VHlwZXM7XG4gIG9ubHlfY2xvc2VkPzogYm9vbGVhbjtcbiAgb3JkZXJfYnk/OiBzdHJpbmc7XG4gIHBhZ2U/OiBudW1iZXI7XG4gIHNpemU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMge1xuICB0b3VybmFtZW50X2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X2lkcz86IG51bWJlcltdO1xuICB0b3VybmFtZW50X3NlYXNvbl9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF90ZWFtX2lkPzogbnVtYmVyO1xuICB0ZWFtX2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X3N0YWdlX2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X3RvdXI/OiBudW1iZXI7XG4gIHBsYXlvZmZfc3RhZ2U/OiBudW1iZXI7XG4gIHBsYXlvZmZfaWQ/OiBudW1iZXI7XG4gIGRhdGVfZnJvbT86IHN0cmluZztcbiAgZGF0ZV90bz86IHN0cmluZztcbiAgcGVyX2dhbWU/OiBib29sZWFuO1xuICBncm91cF9ieTogU3RhdGlzdGljR3JvdXBCeVR5cGVzO1xuICBzaXplPzogbnVtYmVyO1xuICBmaWVsZHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvdXJuYW1lbnRFdmVudHNMaXN0RmlsdGVyIHtcbiAgZXZlbnQ/OiBUb3VybmFtZW50RXZlbnRUeXBlcztcbiAgc2VhcmNoPzogc3RyaW5nO1xuICB0b3VybmFtZW50VG91cj86IG51bWJlcjtcbn1cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgVG91cm5hbWVudEFwaSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICkge1xuICB9XG5cbiAgYXN5bmMgZ2V0QnlJZCh0b3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8VG91cm5hbWVudD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vYClcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gVG91cm5hbWVudC50b0Zyb250KHJlc3VsdCkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0QnlBbGlhcyhsZWFndWVJZDogbnVtYmVyLCBhbGlhczogc3RyaW5nKTogUHJvbWlzZTxUb3VybmFtZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9sZWFndWUvJHtsZWFndWVJZH0vdG91cm5hbWVudHMvJHthbGlhc30vYClcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gVG91cm5hbWVudC50b0Zyb250KHJlc3VsdCkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0U2Vhc29uVG91cm5hbWVudHMoc2Vhc29uVG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvc2Vhc29uX3RvdXJuYW1lbnQvJHtzZWFzb25Ub3VybmFtZW50SWR9L3RvdXJuYW1lbnRzL2ApXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IFRvdXJuYW1lbnQudG9Gcm9udChyZXN1bHQpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldE5ld3ModG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnROZXdzW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L25ld3MvYClcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gVG91cm5hbWVudE5ld3MudG9Gcm9udChyZXN1bHQpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEV2ZW50cyh0b3VybmFtZW50SWQ6IG51bWJlciwgcGFnZTogbnVtYmVyLCBzaXplOiBudW1iZXIsIGZpbHRlcnM/OiBUb3VybmFtZW50RXZlbnRzTGlzdEZpbHRlcik6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8VG91cm5hbWVudEV2ZW50W10+PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdwYWdlJywgcGFnZS50b1N0cmluZygpKVxuICAgICAgLnNldCgnc2l6ZScsIHNpemUudG9TdHJpbmcoKSk7XG4gICAgaWYgKGZpbHRlcnMpIHtcbiAgICAgIGlmIChmaWx0ZXJzLmV2ZW50KSB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2V2ZW50JywgVG91cm5hbWVudEV2ZW50VHlwZXNbZmlsdGVycy5ldmVudF0pO1xuICAgICAgfVxuICAgICAgaWYgKGZpbHRlcnMuc2VhcmNoKSB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NlYXJjaCcsIGZpbHRlcnMuc2VhcmNoKTtcbiAgICAgIH1cbiAgICAgIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRUb3VyKSB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvdXJuYW1lbnRfdG91cicsIGZpbHRlcnMudG91cm5hbWVudFRvdXIudG9TdHJpbmcoKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vZXZlbnRzL2AsIHtwYXJhbXMsIG9ic2VydmU6ICdyZXNwb25zZSd9KVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiAoe1xuICAgICAgICB0b3RhbDogK3Jlc3VsdC5oZWFkZXJzLmdldCgnWC1QYWdlLUNvdW50JyksXG4gICAgICAgIGRhdGE6IFRvdXJuYW1lbnRFdmVudC50b0Zyb250KHJlc3VsdC5ib2R5KVxuICAgICAgfSkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VG91cm5hbWVudFN0YWdlcyh0b3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8VG91cm5hbWVudFN0YWdlW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L3N0YWdlcy9gKS5waXBlKFxuICAgICAgbWFwKGRhdGEgPT4gVG91cm5hbWVudFN0YWdlLnRvRnJvbnQoZGF0YSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFRvdXJuYW1lbnRSb3VuZHModG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRSb3VuZFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9yb3VuZHMvYCkucGlwZShcbiAgICAgIG1hcChkYXRhID0+IFRvdXJuYW1lbnRSb3VuZC50b0Zyb250KGRhdGEpKSxcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VG91cm5hbWVudERpdmlzaW9ucyh0b3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8VG91cm5hbWVudERpdmlzaW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L2RpdmlzaW9ucy9gKS5waXBlKFxuICAgICAgbWFwKGRhdGEgPT4gVG91cm5hbWVudERpdmlzaW9uLnRvRnJvbnQoZGF0YSkpLFxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRQbGF5b2ZmKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxQbGF5b2ZmW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L3BsYXlvZmYvYCkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gUGxheW9mZi50b0Zyb250KHJlc3VsdCkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFBsYXlvZmZHYW1lcyhwbGF5b2ZmSWQ6IG51bWJlciwgcGxheW9mZk51bWJlcj86IHN0cmluZyk6IFByb21pc2U8R2FtZVtdPiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKHBsYXlvZmZOdW1iZXIpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3BsYXlvZmZfbnVtYmVyJywgcGxheW9mZk51bWJlcik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudF9wbGF5b2ZmLyR7cGxheW9mZklkfS9nYW1lcy9gLFxuICAgICAge3BhcmFtc31cbiAgICApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IEdhbWUudG9Gcm9udChyZXN1bHQpKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRHYW1lc1N0YWdlcyh0b3VybmFtZW50SWQ6IG51bWJlciwgcm91bmRJZD86IG51bWJlcik6IFByb21pc2U8R2FtZVRpbWVsaW5lU3RhZ2VzPiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKHJvdW5kSWQpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvdXJuYW1lbnRfcm91bmRfaWQnLCByb3VuZElkLnRvU3RyaW5nKCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChcbiAgICAgIGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vZ2FtZXNfc3RhZ2VzL2AsXG4gICAgICB7cGFyYW1zfVxuICAgIClcbiAgICAgIC5waXBlKG1hcChkYXRhID0+IEdhbWVUaW1lbGluZVN0YWdlcy50b0Zyb250KGRhdGEpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEdhbWVzKHRvdXJuYW1lbnRJZDogbnVtYmVyLCBwYWdlOiBudW1iZXIsIHNpemU6IG51bWJlciwgZmlsdGVyczogVG91cm5hbWVudEdhbWVzRmlsdGVycyA9IHt9KTogUHJvbWlzZTxQYWdpbmF0ZWRSZXNwb25zZTxHYW1lW10+PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdwYWdlJywgcGFnZS50b1N0cmluZygpKTtcbiAgICBpZiAoc2l6ZSkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc2l6ZScsIHNpemUudG9TdHJpbmcoKSk7XG4gICAgfVxuICAgIHBhcmFtcyA9IGFwcGx5R2FtZXNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9nYW1lcy9gLCB7cGFyYW1zLCBvYnNlcnZlOiAncmVzcG9uc2UnfSlcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gKHtcbiAgICAgICAgdG90YWw6ICtyZXN1bHQuaGVhZGVycy5nZXQoJ1gtUGFnZS1Db3VudCcpLFxuICAgICAgICBkYXRhOiBHYW1lLnRvRnJvbnQocmVzdWx0LmJvZHkpXG4gICAgICB9KSkpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0R2FtZXNEYXRlcyh0b3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXG4gICAgICBgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L2dhbWVzX2RhdGVzL2AsXG4gICAgICB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ31cbiAgICApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogcmVzdWx0LmJvZHlcbiAgICAgIH0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRHcm91cHModG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRHcm91cFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9ncm91cHMvYClcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gVG91cm5hbWVudEdyb3VwLnRvRnJvbnQocmVzdWx0KSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRUZWFtcyh0b3VybmFtZW50SWQ6IG51bWJlciwgZ3JvdXBJZD86IG51bWJlciwgc2hvcnQ/OiBib29sZWFuKTogUHJvbWlzZTxUb3VybmFtZW50VGVhbVtdPiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKGdyb3VwSWQpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2dyb3VwX2lkJywgZ3JvdXBJZC50b1N0cmluZygpKTtcbiAgICB9XG4gICAgaWYgKHNob3J0KSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzaG9ydCcsICcxJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vdGVhbXMvYCwge3BhcmFtc30pXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IFRvdXJuYW1lbnRUZWFtLnRvRnJvbnQocmVzdWx0KSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRTdGFnZVRlYW1zKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50U3RhZ2VUZWFtW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L3N0YWdlX3RlYW1zL2ApXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IFRvdXJuYW1lbnRTdGFnZVRlYW0udG9Gcm9udChyZXN1bHQpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFRlYW1zQWNoaWV2ZW1lbnRzKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxUZWFtQWNoaWV2ZW1lbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vYWNoaWV2ZW1lbnRzL2ApXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IFRlYW1BY2hpZXZlbWVudC50b0Zyb250KHJlc3VsdCkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VGVhbUJ5SWQodG91cm5hbWVudFRlYW1JZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50VGVhbT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudF90ZWFtLyR7dG91cm5hbWVudFRlYW1JZH0vYClcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gVG91cm5hbWVudFRlYW0udG9Gcm9udChyZXN1bHQpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFVzZXJCeUlkKHVzZXJJZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50VGVhbVVzZXI+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnRfdGVhbV91c2VyLyR7dXNlcklkfS9gKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiBUb3VybmFtZW50VGVhbVVzZXIudG9Gcm9udChyZXN1bHQpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFVzZXJHYW1lcyh0b3VybmFtZW50VXNlcklkOiBudW1iZXIpOiBQcm9taXNlPEdhbWVbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudF90ZWFtX3VzZXIvJHt0b3VybmFtZW50VXNlcklkfS9nYW1lcy9gKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiBHYW1lLnRvRnJvbnQocmVzdWx0KSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBkb3dubG9hZFRhYmxlKHRvdXJuYW1lbnRJZDogbnVtYmVyLCBmb3JtYXQ6ICdwZGYnIHwgJ3hsc3gnLCBpc0NoZXNzPzogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XG4gICAgbGV0IGh0dHBQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgnZmlsZV90eXBlJywgZm9ybWF0KTtcbiAgICBpZiAoaXNDaGVzcykge1xuICAgICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuc2V0KCdpc0NoZXNzJywgdHJ1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vdGFibGVfZmlsZS9gLCB7XG4gICAgICBwYXJhbXM6IGh0dHBQYXJhbXMsXG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJ1xuICAgIH0pLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0QmFza2V0YmFsbFN0YXRpc3RpY0xlYWRlcnMoZmlsdGVyczogU3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMpOiBQcm9taXNlPHtba2V5OiBzdHJpbmddOiBCYXNrZXRiYWxsU3RhdGlzdGljW119PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gYXBwbHlTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyhmaWx0ZXJzLCBwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvYmFza2V0YmFsbF9zdGF0aXN0aWNfbGVhZGVycy9gLCB7cGFyYW1zfSkucGlwZShcbiAgICAgIG1hcCgocmVzdWx0OiB7W2tleTogc3RyaW5nXTogYW55W119KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJlc3VsdCkpIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IEJhc2tldGJhbGxTdGF0aXN0aWMudG9Gcm9udChyZXN1bHRba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFZvbGxleWJhbGxTdGF0aXN0aWNMZWFkZXJzKGZpbHRlcnM6IFN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKTogUHJvbWlzZTx7W2tleTogc3RyaW5nXTogVm9sbGV5YmFsbFN0YXRpc3RpY1tdfT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGFwcGx5U3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3ZvbGxleWJhbGxfc3RhdGlzdGljX2xlYWRlcnMvYCwge3BhcmFtc30pLnBpcGUoXG4gICAgICBtYXAoKHJlc3VsdDoge1trZXk6IHN0cmluZ106IGFueVtdfSkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyZXN1bHQpKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBWb2xsZXliYWxsU3RhdGlzdGljLnRvRnJvbnQocmVzdWx0W2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRIb2NrZXlTdGF0aXN0aWNMZWFkZXJzKGZpbHRlcnM6IFN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKTogUHJvbWlzZTx7W2tleTogc3RyaW5nXTogSG9ja2V5U3RhdGlzdGljW119PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gYXBwbHlTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyhmaWx0ZXJzLCBwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvaG9ja2V5X3N0YXRpc3RpY19sZWFkZXJzL2AsIHtwYXJhbXN9KS5waXBlKFxuICAgICAgbWFwKChyZXN1bHQ6IHtba2V5OiBzdHJpbmddOiBhbnlbXX0pID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVzdWx0KSkge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gSG9ja2V5U3RhdGlzdGljLnRvRnJvbnQocmVzdWx0W2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRGb290YmFsbFN0YXRpc3RpY0xlYWRlcnMoZmlsdGVyczogU3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMpOiBQcm9taXNlPHtba2V5OiBzdHJpbmddOiBGb290YmFsbFN0YXRpc3RpY1tdfT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGFwcGx5U3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2Zvb3RiYWxsX3N0YXRpc3RpY19sZWFkZXJzL2AsIHtwYXJhbXN9KS5waXBlKFxuICAgICAgbWFwKChyZXN1bHQ6IHtba2V5OiBzdHJpbmddOiBhbnlbXX0pID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVzdWx0KSkge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gRm9vdGJhbGxTdGF0aXN0aWMudG9Gcm9udChyZXN1bHRba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEhhbmRiYWxsU3RhdGlzdGljTGVhZGVycyhmaWx0ZXJzOiBTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyk6IFByb21pc2U8e1trZXk6IHN0cmluZ106IEhhbmRiYWxsU3RhdGlzdGljW119PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gYXBwbHlTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyhmaWx0ZXJzLCBwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvaGFuZGJhbGxfc3RhdGlzdGljX2xlYWRlcnMvYCwge3BhcmFtc30pLnBpcGUoXG4gICAgICBtYXAoKHJlc3VsdDoge1trZXk6IHN0cmluZ106IGFueVtdfSkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyZXN1bHQpKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBIYW5kYmFsbFN0YXRpc3RpYy50b0Zyb250KHJlc3VsdFtrZXldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0V2F0ZXJwb2xvU3RhdGlzdGljTGVhZGVycyhmaWx0ZXJzOiBTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyk6IFByb21pc2U8e1trZXk6IHN0cmluZ106IFdhdGVycG9sb1N0YXRpc3RpY1tdfT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGFwcGx5U3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3dhdGVycG9sb19zdGF0aXN0aWNfbGVhZGVycy9gLCB7cGFyYW1zfSkucGlwZShcbiAgICAgIG1hcCgocmVzdWx0OiB7W2tleTogc3RyaW5nXTogYW55W119KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJlc3VsdCkpIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IFdhdGVycG9sb1N0YXRpc3RpYy50b0Zyb250KHJlc3VsdFtrZXldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0QmFza2V0YmFsbFN0YXRpc3RpYyhmaWx0ZXJzPzogU3RhdGlzdGljRmlsdGVycyk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8QmFza2V0YmFsbFN0YXRpc3RpY1tdPj4ge1xuICAgIGNvbnN0IGRhdGEgPSBhcHBseVN0YXRpc3RpY0ZpbHRlcnMoZmlsdGVycyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoXG4gICAgICBgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2Jhc2tldGJhbGxfc3RhdGlzdGljL2AsXG4gICAgICBkYXRhLFxuICAgICAge29ic2VydmU6ICdyZXNwb25zZSd9XG4gICAgKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiAoe1xuICAgICAgICB0b3RhbDogK3Jlc3VsdC5oZWFkZXJzLmdldCgnWC1QYWdlLUNvdW50JyksXG4gICAgICAgIGRhdGE6IEJhc2tldGJhbGxTdGF0aXN0aWMudG9Gcm9udChyZXN1bHQuYm9keSlcbiAgICAgIH0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRWb2xsZXliYWxsU3RhdGlzdGljKGZpbHRlcnM/OiBTdGF0aXN0aWNGaWx0ZXJzKTogUHJvbWlzZTxQYWdpbmF0ZWRSZXNwb25zZTxWb2xsZXliYWxsU3RhdGlzdGljW10+PiB7XG4gICAgY29uc3QgZGF0YSA9IGFwcGx5U3RhdGlzdGljRmlsdGVycyhmaWx0ZXJzKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChcbiAgICAgIGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdm9sbGV5YmFsbF9zdGF0aXN0aWMvYCxcbiAgICAgIGRhdGEsXG4gICAgICB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ31cbiAgICApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogVm9sbGV5YmFsbFN0YXRpc3RpYy50b0Zyb250KHJlc3VsdC5ib2R5KVxuICAgICAgfSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEhvY2tleVN0YXRpc3RpYyhmaWx0ZXJzPzogU3RhdGlzdGljRmlsdGVycyk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8SG9ja2V5U3RhdGlzdGljW10+PiB7XG4gICAgY29uc3QgZGF0YSA9IGFwcGx5U3RhdGlzdGljRmlsdGVycyhmaWx0ZXJzKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChcbiAgICAgIGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvaG9ja2V5X3N0YXRpc3RpYy9gLFxuICAgICAgZGF0YSxcbiAgICAgIHtvYnNlcnZlOiAncmVzcG9uc2UnfVxuICAgICkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gKHtcbiAgICAgICAgdG90YWw6ICtyZXN1bHQuaGVhZGVycy5nZXQoJ1gtUGFnZS1Db3VudCcpLFxuICAgICAgICBkYXRhOiBIb2NrZXlTdGF0aXN0aWMudG9Gcm9udChyZXN1bHQuYm9keSlcbiAgICAgIH0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRGb290YmFsbFN0YXRpc3RpYyhmaWx0ZXJzPzogU3RhdGlzdGljRmlsdGVycyk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8Rm9vdGJhbGxTdGF0aXN0aWNbXT4+IHtcbiAgICBjb25zdCBkYXRhID0gYXBwbHlTdGF0aXN0aWNGaWx0ZXJzKGZpbHRlcnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxuICAgICAgYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9mb290YmFsbF9zdGF0aXN0aWMvYCxcbiAgICAgIGRhdGEsXG4gICAgICB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ31cbiAgICApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogRm9vdGJhbGxTdGF0aXN0aWMudG9Gcm9udChyZXN1bHQuYm9keSlcbiAgICAgIH0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRIYW5kYmFsbFN0YXRpc3RpYyhmaWx0ZXJzPzogU3RhdGlzdGljRmlsdGVycyk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8SGFuZGJhbGxTdGF0aXN0aWNbXT4+IHtcbiAgICBjb25zdCBkYXRhID0gYXBwbHlTdGF0aXN0aWNGaWx0ZXJzKGZpbHRlcnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxuICAgICAgYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9oYW5kYmFsbF9zdGF0aXN0aWMvYCxcbiAgICAgIGRhdGEsXG4gICAgICB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ31cbiAgICApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogSGFuZGJhbGxTdGF0aXN0aWMudG9Gcm9udChyZXN1bHQuYm9keSlcbiAgICAgIH0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRSdWdieVN0YXRpc3RpYyhmaWx0ZXJzPzogU3RhdGlzdGljRmlsdGVycyk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8UnVnYnlTdGF0aXN0aWNbXT4+IHtcbiAgICBjb25zdCBkYXRhID0gYXBwbHlTdGF0aXN0aWNGaWx0ZXJzKGZpbHRlcnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxuICAgICAgYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9ydWdieV9zdGF0aXN0aWMvYCxcbiAgICAgIGRhdGEsXG4gICAgICB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ31cbiAgICApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogUnVnYnlTdGF0aXN0aWMudG9Gcm9udChyZXN1bHQuYm9keSlcbiAgICAgIH0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRXYXRlcnBvbG9TdGF0aXN0aWMoZmlsdGVycz86IFN0YXRpc3RpY0ZpbHRlcnMpOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPFdhdGVycG9sb1N0YXRpc3RpY1tdPj4ge1xuICAgIGNvbnN0IGRhdGEgPSBhcHBseVN0YXRpc3RpY0ZpbHRlcnMoZmlsdGVycyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoXG4gICAgICBgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3dhdGVycG9sb19zdGF0aXN0aWMvYCxcbiAgICAgIGRhdGEsXG4gICAgICB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ31cbiAgICApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogV2F0ZXJwb2xvU3RhdGlzdGljLnRvRnJvbnQocmVzdWx0LmJvZHkpXG4gICAgICB9KSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0V3Jlc3RiYWxsU3RhdGlzdGljKGZpbHRlcnM/OiBTdGF0aXN0aWNGaWx0ZXJzKTogUHJvbWlzZTxQYWdpbmF0ZWRSZXNwb25zZTxXcmVzdGJhbGxTdGF0aXN0aWNbXT4+IHtcbiAgICBjb25zdCBkYXRhID0gYXBwbHlTdGF0aXN0aWNGaWx0ZXJzKGZpbHRlcnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxuICAgICAgYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS93cmVzdGJhbGxfc3RhdGlzdGljL2AsXG4gICAgICBkYXRhLFxuICAgICAge29ic2VydmU6ICdyZXNwb25zZSd9XG4gICAgKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiAoe1xuICAgICAgICB0b3RhbDogK3Jlc3VsdC5oZWFkZXJzLmdldCgnWC1QYWdlLUNvdW50JyksXG4gICAgICAgIGRhdGE6IFdyZXN0YmFsbFN0YXRpc3RpYy50b0Zyb250KHJlc3VsdC5ib2R5KVxuICAgICAgfSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFRvdXJuYW1lbnRUZWFtVXNlcnModG91cm5hbWVudFRlYW1JZDogbnVtYmVyLCBpbmNsdWRlczogc3RyaW5nW10gPSBbXSk6IFByb21pc2U8VG91cm5hbWVudFRlYW1Vc2VyW10+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBmb3IgKGNvbnN0IGluY2x1ZGUgb2YgaW5jbHVkZXMpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2luY2x1ZGUnLCBpbmNsdWRlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50X3RlYW0vJHt0b3VybmFtZW50VGVhbUlkfS91c2Vycy9gLCB7cGFyYW1zfSkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gVG91cm5hbWVudFRlYW1Vc2VyLnRvRnJvbnQocmVzdWx0KSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgbXlQZXJtaXNzaW9uKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxMZWFndWVVc2VyUGVybWlzc2lvbnNbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vcGVybWlzc2lvbi9gKS5waXBlKFxuICAgICAgbWFwKChkYXRhOiBhbnkpID0+IChkYXRhLnBlcm1pc3Npb25zIHx8IFtdKS5tYXAoaXRlbSA9PiBMZWFndWVVc2VyUGVybWlzc2lvbnNbaXRlbV0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRUb3VybmFtZW50VGVhbVRvdXJuYW1lbnRzKHRvdXJuYW1lbnRUZWFtSWQ6IG51bWJlcik6IFByb21pc2U8VG91cm5hbWVudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50X3RlYW0vJHt0b3VybmFtZW50VGVhbUlkfS90b3VybmFtZW50cy9gKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiBUb3VybmFtZW50LnRvRnJvbnQocmVzdWx0KSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VG91cm5hbWVudFVzZXJUb3VybmFtZW50cyh0b3VybmFtZW50VGVhbVVzZXJJZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnRfdGVhbV91c2VyLyR7dG91cm5hbWVudFRlYW1Vc2VySWR9L3RvdXJuYW1lbnRzL2ApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IFRvdXJuYW1lbnQudG9Gcm9udChyZXN1bHQpKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRUb3VybmFtZW50VGVhbVVzZXJzTGltaXRhdGlvbih0b3VybmFtZW50VGVhbUlkOiBudW1iZXIpOiBQcm9taXNlPEdhbWVVc2VyTGltaXRhdGlvbnNbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudF90ZWFtLyR7dG91cm5hbWVudFRlYW1JZH0vdXNlcnNfbGltaXRhdGlvbi9gKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiBHYW1lVXNlckxpbWl0YXRpb25zLnRvRnJvbnQocmVzdWx0KSksXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlHYW1lc0ZpbHRlcnMoZmlsdGVyczogVG91cm5hbWVudEdhbWVzRmlsdGVycywgcGFyYW1zOiBIdHRwUGFyYW1zKTogSHR0cFBhcmFtcyB7XG4gIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRJZHMpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0b3VybmFtZW50X2lkcycsIGZpbHRlcnMudG91cm5hbWVudElkcy5qb2luKCcsJykpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRTdGFnZUlkKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG91cm5hbWVudF9zdGFnZV9pZCcsIGZpbHRlcnMudG91cm5hbWVudFN0YWdlSWQudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMudG91cm5hbWVudFJvdW5kSWQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0b3VybmFtZW50X3JvdW5kX2lkJywgZmlsdGVycy50b3VybmFtZW50Um91bmRJZC50b1N0cmluZygpKTtcbiAgfVxuICBpZiAoZmlsdGVycy50b3VybmFtZW50R3JvdXBJZCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvdXJuYW1lbnRfZ3JvdXBfaWQnLCBmaWx0ZXJzLnRvdXJuYW1lbnRHcm91cElkLnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLmRpdmlzaW9uSWQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdkaXZpc2lvbl9pZCcsIGZpbHRlcnMuZGl2aXNpb25JZC50b1N0cmluZygpKTtcbiAgfVxuICBpZiAoZmlsdGVycy50b3VybmFtZW50VG91cikge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvdXJuYW1lbnRfdG91cicsIGZpbHRlcnMudG91cm5hbWVudFRvdXIudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMucGxheW9mZlN0YWdlKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgncGxheW9mZl9zdGFnZScsIGZpbHRlcnMucGxheW9mZlN0YWdlLnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnBsYXlvZmZSb3VuZCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3BsYXlvZmZfcm91bmQnLCBmaWx0ZXJzLnBsYXlvZmZSb3VuZC50b1N0cmluZygpKTtcbiAgfVxuICBpZiAoZmlsdGVycy50ZWFtSWQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0ZWFtX2lkJywgZmlsdGVycy50ZWFtSWQudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMuc3RhdHVzKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc3RhdHVzJywgR2FtZVN0YXR1c2VzW2ZpbHRlcnMuc3RhdHVzXSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMuc3RhdHVzZXMpIHtcbiAgICBjb25zdCBzdGF0dXNlcyA9IGZpbHRlcnMuc3RhdHVzZXMubWFwKGkgPT4gR2FtZVN0YXR1c2VzW2ldKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzdGF0dXNlcycsIHN0YXR1c2VzLmpvaW4oJywnKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMudG91cm5hbWVudENvdXJ0SWQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0b3VybmFtZW50X2NvdXJ0X2lkJywgZmlsdGVycy50b3VybmFtZW50Q291cnRJZC50b1N0cmluZygpKTtcbiAgfVxuICBpZiAoZmlsdGVycy5sZWFndWVQbGF5ZXJJZCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2xlYWd1ZV9wbGF5ZXJfaWQnLCBmaWx0ZXJzLmxlYWd1ZVBsYXllcklkLnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnVzZXJJZCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3VzZXJfaWQnLCBmaWx0ZXJzLnVzZXJJZC50b1N0cmluZygpKTtcbiAgfVxuICBpZiAoZmlsdGVycy5xdWVyeSkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3F1ZXJ5JywgZmlsdGVycy5xdWVyeSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMuZGF0ZV9mcm9tKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgnZGF0ZV9mcm9tJywgZmlsdGVycy5kYXRlX2Zyb20pO1xuICB9XG4gIGlmIChmaWx0ZXJzLmRhdGVfdG8pIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdkYXRlX3RvJywgZmlsdGVycy5kYXRlX3RvKTtcbiAgfVxuICBpZiAoZmlsdGVycy5pc1BsYXlvZmYgIT09IHVuZGVmaW5lZCAmJiBmaWx0ZXJzLmlzUGxheW9mZiAhPT0gbnVsbCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2lzX3BsYXlvZmYnLCBmaWx0ZXJzLmlzUGxheW9mZiA/ICcxJyA6ICcwJyk7XG4gIH1cbiAgcmV0dXJuIHBhcmFtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5U3RhdGlzdGljRmlsdGVycyhmaWx0ZXJzOiBTdGF0aXN0aWNGaWx0ZXJzKTogb2JqZWN0IHtcbiAgY29uc3QgcmF3RmlsdGVycyA9IHt9O1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhmaWx0ZXJzKSkge1xuICAgIGlmIChmaWx0ZXJzW2tleV0pIHtcbiAgICAgIGlmIChrZXkgPT09ICdiYXNrZXRiYWxsX3Bvc2l0aW9uJykge1xuICAgICAgICByYXdGaWx0ZXJzW2tleV0gPSBHYW1lQmFza2V0YmFsbFBvc2l0aW9uW2ZpbHRlcnNba2V5XV07XG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3ZvbGxleWJhbGxfcG9zaXRpb24nKSB7XG4gICAgICAgIHJhd0ZpbHRlcnNba2V5XSA9IEdhbWVWb2xsZXliYWxsUG9zaXRpb25bZmlsdGVyc1trZXldXTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnaG9ja2V5X3Bvc2l0aW9uJykge1xuICAgICAgICByYXdGaWx0ZXJzW2tleV0gPSBHYW1lSG9ja2V5UG9zaXRpb25bZmlsdGVyc1trZXldXTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnZm9vdGJhbGxfcG9zaXRpb24nKSB7XG4gICAgICAgIHJhd0ZpbHRlcnNba2V5XSA9IEdhbWVGb290YmFsbFBvc2l0aW9uW2ZpbHRlcnNba2V5XV07XG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2hhbmRiYWxsX3Bvc2l0aW9uJykge1xuICAgICAgICByYXdGaWx0ZXJzW2tleV0gPSBHYW1lSGFuZGJhbGxQb3NpdGlvbltmaWx0ZXJzW2tleV1dO1xuICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICd3YXRlcnBvbG9fcG9zaXRpb24nKSB7XG4gICAgICAgIHJhd0ZpbHRlcnNba2V5XSA9IEdhbWVXYXRlcnBvbG9Qb3NpdGlvbltmaWx0ZXJzW2tleV1dO1xuICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdydWdieV9wb3NpdGlvbicpIHtcbiAgICAgICAgcmF3RmlsdGVyc1trZXldID0gR2FtZVJ1Z2J5UG9zaXRpb25bZmlsdGVyc1trZXldXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJhd0ZpbHRlcnNba2V5XSA9IGZpbHRlcnNba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZmlsdGVycy5wZXJfZ2FtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmF3RmlsdGVyc1sncGVyX2dhbWUnXSA9IGZpbHRlcnMucGVyX2dhbWUgPyAnMScgOiAnMCc7XG4gIH1cblxuICBpZiAoZmlsdGVycy50b3VybmFtZW50X2lkcykge1xuICAgIHJhd0ZpbHRlcnNbJ3RvdXJuYW1lbnRfaWRzJ10gPSBmaWx0ZXJzLnRvdXJuYW1lbnRfaWRzLmpvaW4oJywnKTtcbiAgfVxuXG4gIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRfc2Vhc29uX2lkcykge1xuICAgIHJhd0ZpbHRlcnNbJ3RvdXJuYW1lbnRfc2Vhc29uX2lkcyddID0gZmlsdGVycy50b3VybmFtZW50X3NlYXNvbl9pZHMuam9pbignLCcpO1xuICB9XG5cbiAgaWYgKGZpbHRlcnMuaXNfcGxheW9mZiAhPT0gdW5kZWZpbmVkICYmIGZpbHRlcnMuaXNfcGxheW9mZiAhPT0gbnVsbCkge1xuICAgIHJhd0ZpbHRlcnNbJ2lzX3BsYXlvZmYnXSA9IGZpbHRlcnMuaXNfcGxheW9mZiA/ICcxJyA6ICcwJztcbiAgfVxuXG4gIGlmIChmaWx0ZXJzLm9ubHlfY2xvc2VkICE9PSB1bmRlZmluZWQgJiYgZmlsdGVycy5vbmx5X2Nsb3NlZCAhPT0gbnVsbCkge1xuICAgIHJhd0ZpbHRlcnNbJ29ubHlfY2xvc2VkJ10gPSBmaWx0ZXJzLm9ubHlfY2xvc2VkID8gJzEnIDogJzAnO1xuICB9XG5cbiAgcmV0dXJuIHJhd0ZpbHRlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKGZpbHRlcnM6IFN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzLCBwYXJhbXM6IEh0dHBQYXJhbXMpOiBIdHRwUGFyYW1zIHtcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoZmlsdGVycykpIHtcbiAgICBpZiAoZmlsdGVyc1trZXldKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KGtleSwgZmlsdGVyc1trZXldKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZmlsdGVycy5wZXJfZ2FtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgncGVyX2dhbWUnLCBmaWx0ZXJzLnBlcl9nYW1lID8gJzEnIDogJzAnKTtcbiAgfVxuXG4gIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRfaWRzKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG91cm5hbWVudF9pZHMnLCBmaWx0ZXJzLnRvdXJuYW1lbnRfaWRzLmpvaW4oJywnKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMuZmllbGRzKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgnZmllbGRzJywgZmlsdGVycy5maWVsZHMuam9pbignLCcpKTtcbiAgfVxuICByZXR1cm4gcGFyYW1zO1xufVxuIl19
|
|
533
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG91cm5hbWVudC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9hcGkvdG91cm5hbWVudC1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxN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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFRvdXJuYW1lbnQgfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudCc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUb3VybmFtZW50TmV3cyB9IGZyb20gJy4uL21vZGVscy90b3VybmFtZW50LW5ld3MnO1xuaW1wb3J0IHsgR2FtZSwgR2FtZVN0YXR1c2VzIH0gZnJvbSAnLi4vbW9kZWxzL2dhbWUnO1xuaW1wb3J0IHsgR2FtZVRpbWVsaW5lU3RhZ2VzIH0gZnJvbSAnLi4vbW9kZWxzL2dhbWUtdGltZWxpbmUtc3RhZ2VzJztcbmltcG9ydCB7IFRvdXJuYW1lbnRUZWFtIH0gZnJvbSAnLi4vbW9kZWxzL3RvdXJuYW1lbnQtdGVhbSc7XG5pbXBvcnQgeyBUb3VybmFtZW50U3RhZ2UgfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudC1zdGFnZSc7XG5pbXBvcnQgeyBQbGF5b2ZmIH0gZnJvbSAnLi4vbW9kZWxzL3BsYXlvZmYnO1xuaW1wb3J0IHsgUGFnaW5hdGVkUmVzcG9uc2UgfSBmcm9tICcuL3BhZ2luYXRlZC1yZXNwb25zZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFza2V0YmFsbFN0YXRpc3RpYyB9IGZyb20gJy4uL21vZGVscy9iYXNrZXRiYWxsLXN0YXRpc3RpYyc7XG5pbXBvcnQgeyBWb2xsZXliYWxsU3RhdGlzdGljIH0gZnJvbSAnLi4vbW9kZWxzL3ZvbGxleWJhbGwtc3RhdGlzdGljJztcbmltcG9ydCB7IFRvdXJuYW1lbnRUZWFtVXNlciB9IGZyb20gJy4uL21vZGVscy90b3VybmFtZW50LXRlYW0tdXNlcic7XG5pbXBvcnQgeyBUb3VybmFtZW50U3RhZ2VUZWFtIH0gZnJvbSAnLi4vbW9kZWxzL3RvdXJuYW1lbnQtc3RhZ2UtdGVhbSc7XG5pbXBvcnQgeyBUb3VybmFtZW50RXZlbnQsIFRvdXJuYW1lbnRFdmVudFR5cGVzIH0gZnJvbSAnLi4vbW9kZWxzL3RvdXJuYW1lbnQtZXZlbnQnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEhvY2tleVN0YXRpc3RpYyB9IGZyb20gJy4uL21vZGVscy9ob2NrZXktc3RhdGlzdGljJztcbmltcG9ydCB7IEZvb3RiYWxsU3RhdGlzdGljIH0gZnJvbSAnLi4vbW9kZWxzL2Zvb3RiYWxsLXN0YXRpc3RpYyc7XG5pbXBvcnQgeyBMZWFndWVVc2VyUGVybWlzc2lvbnMgfSBmcm9tICcuLi9tb2RlbHMvbGVhZ3VlLXVzZXInO1xuaW1wb3J0IHsgSGFuZGJhbGxTdGF0aXN0aWMgfSBmcm9tICcuLi9tb2RlbHMvaGFuZGJhbGwtc3RhdGlzdGljJztcbmltcG9ydCB7IFJ1Z2J5U3RhdGlzdGljIH0gZnJvbSAnLi4vbW9kZWxzL3J1Z2J5LXN0YXRpc3RpYyc7XG5pbXBvcnQgeyBUb3VybmFtZW50R3JvdXAgfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudC1ncm91cCc7XG5pbXBvcnQgeyBUZWFtQWNoaWV2ZW1lbnQgfSBmcm9tICcuLi9tb2RlbHMvdGVhbS1hY2hpZXZlbWVudCc7XG5pbXBvcnQgeyBXYXRlcnBvbG9TdGF0aXN0aWMgfSBmcm9tICcuLi9tb2RlbHMvd2F0ZXJwb2xvLXN0YXRpc3RpYyc7XG5pbXBvcnQgeyBUb3VybmFtZW50Um91bmQgfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudC1yb3VuZCc7XG5pbXBvcnQgeyBUb3VybmFtZW50RGl2aXNpb24gfSBmcm9tICcuLi9tb2RlbHMvdG91cm5hbWVudC1kaXZpc2lvbic7XG5pbXBvcnQgeyBVc2VyR2VuZGVyIH0gZnJvbSAnLi4vbW9kZWxzL3VzZXInO1xuaW1wb3J0IHsgR2FtZVVzZXJMaW1pdGF0aW9ucyB9IGZyb20gJy4uL21vZGVscy9nYW1lLXVzZXItbGltaXRhdGlvbic7XG5pbXBvcnQgeyBHYW1lSG9ja2V5UG9zaXRpb24gfSBmcm9tICcuLi9tb2RlbHMvaG9ja2V5LXByb2ZpbGUnO1xuaW1wb3J0IHsgR2FtZUZvb3RiYWxsUG9zaXRpb24gfSBmcm9tICcuLi9tb2RlbHMvZm9vdGJhbGwtcHJvZmlsZSc7XG5pbXBvcnQgeyBHYW1lSGFuZGJhbGxQb3NpdGlvbiB9IGZyb20gJy4uL21vZGVscy9oYW5kYmFsbC1wcm9maWxlJztcbmltcG9ydCB7IEdhbWVXYXRlcnBvbG9Qb3NpdGlvbiB9IGZyb20gJy4uL21vZGVscy93YXRlcnBvbG8tcHJvZmlsZSc7XG5pbXBvcnQgeyBHYW1lQmFza2V0YmFsbFBvc2l0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2Jhc2tldGJhbGwtcHJvZmlsZSc7XG5pbXBvcnQgeyBHYW1lVm9sbGV5YmFsbFBvc2l0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL3ZvbGxleWJhbGwtcHJvZmlsZSc7XG5pbXBvcnQgeyBHYW1lUnVnYnlQb3NpdGlvbiB9IGZyb20gJy4uL21vZGVscy9ydWdieS1wcm9maWxlJztcbmltcG9ydCB7IFdyZXN0YmFsbFN0YXRpc3RpYyB9IGZyb20gJy4uL21vZGVscy93cmVzdGJhbGwtc3RhdGlzdGljJztcblxuZXhwb3J0IGludGVyZmFjZSBUb3VybmFtZW50R2FtZXNGaWx0ZXJzIHtcbiAgdG91cm5hbWVudElkcz86IG51bWJlcltdO1xuICB0b3VybmFtZW50U2Vhc29uSWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRTdGFnZUlkPzogbnVtYmVyO1xuICB0b3VybmFtZW50Um91bmRJZD86IG51bWJlcjtcbiAgdG91cm5hbWVudEdyb3VwSWQ/OiBudW1iZXI7XG4gIGRpdmlzaW9uSWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRUb3VyPzogbnVtYmVyO1xuICB0ZWFtSWQ/OiBudW1iZXI7XG4gIHBsYXlvZmZTdGFnZT86IG51bWJlcjtcbiAgcGxheW9mZlJvdW5kPzogbnVtYmVyO1xuICBwbGF5b2ZmSWQ/OiBudW1iZXI7XG4gIGlzUGxheW9mZj86IGJvb2xlYW47XG4gIHN0YXR1cz86IEdhbWVTdGF0dXNlcztcbiAgc3RhdHVzZXM/OiBHYW1lU3RhdHVzZXNbXTtcbiAgdG91cm5hbWVudENvdXJ0SWQ/OiBudW1iZXI7XG4gIGxlYWd1ZVBsYXllcklkPzogbnVtYmVyO1xuICB1c2VySWQ/OiBudW1iZXI7XG4gIHF1ZXJ5Pzogc3RyaW5nO1xuICBkYXRlX2Zyb20/OiBzdHJpbmc7XG4gIGRhdGVfdG8/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFN0YXRpc3RpY0dyb3VwQnlUeXBlcyA9ICd0ZWFtJyB8ICd1c2VyJyB8ICd0ZWFtX3VzZXInIHwgJ3RvdXJuYW1lbnRfdGVhbScgfCAnbGVhZ3VlX3BsYXllcicgfCAndG91cm5hbWVudF90ZWFtX3VzZXInXG4gIHwgJ21vbnRoJyB8ICd3aW5fbG9zZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRpc3RpY0ZpbHRlcnMge1xuICBsZWFndWVfaWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfaWQ/OiBudW1iZXI7XG4gIHRvdXJuYW1lbnRfaWRzPzogbnVtYmVyW107XG4gIHRvdXJuYW1lbnRfc2Vhc29uX2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X3NlYXNvbl9pZHM/OiBudW1iZXJbXTtcbiAgdG91cm5hbWVudF90ZWFtX2lkPzogbnVtYmVyO1xuICBsZWFndWVfcGxheWVyX2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X3RlYW1fdXNlcl9pZD86IG51bWJlcjtcbiAgdGVhbV9pZD86IG51bWJlcjtcbiAgdGVhbV91c2VyX2lkPzogbnVtYmVyO1xuICB1c2VyX2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X3N0YWdlX2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X3JvdW5kX2lkPzogbnVtYmVyO1xuICBkaXZpc2lvbl9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF9ncm91cF9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF90b3VyPzogbnVtYmVyO1xuICBwbGF5b2ZmX3N0YWdlPzogbnVtYmVyO1xuICBwbGF5b2ZmX3JvdW5kPzogbnVtYmVyO1xuICBwbGF5b2ZmX2lkPzogbnVtYmVyO1xuICBpc19wbGF5b2ZmPzogYm9vbGVhbjtcbiAgZGF0ZV9mcm9tPzogc3RyaW5nO1xuICBkYXRlX3RvPzogc3RyaW5nO1xuICBxdWVyeT86IHN0cmluZztcbiAgZ2VuZGVyPzogVXNlckdlbmRlcjtcbiAgYmFza2V0YmFsbF9wb3NpdGlvbj86IEdhbWVCYXNrZXRiYWxsUG9zaXRpb247XG4gIHZvbGxleWJhbGxfcG9zaXRpb24/OiBHYW1lVm9sbGV5YmFsbFBvc2l0aW9uO1xuICBob2NrZXlfcG9zaXRpb24/OiBHYW1lSG9ja2V5UG9zaXRpb247XG4gIGZvb3RiYWxsX3Bvc2l0aW9uPzogR2FtZUZvb3RiYWxsUG9zaXRpb247XG4gIGhhbmRiYWxsX3Bvc2l0aW9uPzogR2FtZUhhbmRiYWxsUG9zaXRpb247XG4gIHdhdGVycG9sb19wb3NpdGlvbj86IEdhbWVXYXRlcnBvbG9Qb3NpdGlvbjtcbiAgcnVnYnlfcG9zaXRpb24/OiBHYW1lUnVnYnlQb3NpdGlvbjtcbiAgbGVhZ3VlX3BsYXllcl9maWVsZF92YWx1ZT86IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9O1xuICB0b3VybmFtZW50X3RlYW1fZmllbGRfdmFsdWU/OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcbiAgcGVyX2dhbWU/OiBib29sZWFuO1xuICBncm91cF9ieTogU3RhdGlzdGljR3JvdXBCeVR5cGVzO1xuICBvbmx5X2Nsb3NlZD86IGJvb2xlYW47XG4gIGNoZWNrX2lnbm9yZV9nYW1lPzogYm9vbGVhbjtcbiAgb3JkZXJfYnk/OiBzdHJpbmc7XG4gIHBhZ2U/OiBudW1iZXI7XG4gIHNpemU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMge1xuICB0b3VybmFtZW50X2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X2lkcz86IG51bWJlcltdO1xuICB0b3VybmFtZW50X3NlYXNvbl9pZD86IG51bWJlcjtcbiAgdG91cm5hbWVudF90ZWFtX2lkPzogbnVtYmVyO1xuICB0ZWFtX2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X3N0YWdlX2lkPzogbnVtYmVyO1xuICB0b3VybmFtZW50X3RvdXI/OiBudW1iZXI7XG4gIHBsYXlvZmZfc3RhZ2U/OiBudW1iZXI7XG4gIHBsYXlvZmZfaWQ/OiBudW1iZXI7XG4gIGRhdGVfZnJvbT86IHN0cmluZztcbiAgZGF0ZV90bz86IHN0cmluZztcbiAgcGVyX2dhbWU/OiBib29sZWFuO1xuICBncm91cF9ieTogU3RhdGlzdGljR3JvdXBCeVR5cGVzO1xuICBzaXplPzogbnVtYmVyO1xuICBmaWVsZHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvdXJuYW1lbnRFdmVudHNMaXN0RmlsdGVyIHtcbiAgZXZlbnQ/OiBUb3VybmFtZW50RXZlbnRUeXBlcztcbiAgc2VhcmNoPzogc3RyaW5nO1xuICB0b3VybmFtZW50VG91cj86IG51bWJlcjtcbn1cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgVG91cm5hbWVudEFwaSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICkge1xuICB9XG5cbiAgYXN5bmMgZ2V0QnlJZCh0b3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8VG91cm5hbWVudD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vYClcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gVG91cm5hbWVudC50b0Zyb250KHJlc3VsdCkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0QnlBbGlhcyhsZWFndWVJZDogbnVtYmVyLCBhbGlhczogc3RyaW5nKTogUHJvbWlzZTxUb3VybmFtZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9sZWFndWUvJHtsZWFndWVJZH0vdG91cm5hbWVudHMvJHthbGlhc30vYClcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gVG91cm5hbWVudC50b0Zyb250KHJlc3VsdCkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0U2Vhc29uVG91cm5hbWVudHMoc2Vhc29uVG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvc2Vhc29uX3RvdXJuYW1lbnQvJHtzZWFzb25Ub3VybmFtZW50SWR9L3RvdXJuYW1lbnRzL2ApXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IFRvdXJuYW1lbnQudG9Gcm9udChyZXN1bHQpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldE5ld3ModG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnROZXdzW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L25ld3MvYClcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gVG91cm5hbWVudE5ld3MudG9Gcm9udChyZXN1bHQpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEV2ZW50cyh0b3VybmFtZW50SWQ6IG51bWJlciwgcGFnZTogbnVtYmVyLCBzaXplOiBudW1iZXIsIGZpbHRlcnM/OiBUb3VybmFtZW50RXZlbnRzTGlzdEZpbHRlcik6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8VG91cm5hbWVudEV2ZW50W10+PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdwYWdlJywgcGFnZS50b1N0cmluZygpKVxuICAgICAgLnNldCgnc2l6ZScsIHNpemUudG9TdHJpbmcoKSk7XG4gICAgaWYgKGZpbHRlcnMpIHtcbiAgICAgIGlmIChmaWx0ZXJzLmV2ZW50KSB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2V2ZW50JywgVG91cm5hbWVudEV2ZW50VHlwZXNbZmlsdGVycy5ldmVudF0pO1xuICAgICAgfVxuICAgICAgaWYgKGZpbHRlcnMuc2VhcmNoKSB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3NlYXJjaCcsIGZpbHRlcnMuc2VhcmNoKTtcbiAgICAgIH1cbiAgICAgIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRUb3VyKSB7XG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvdXJuYW1lbnRfdG91cicsIGZpbHRlcnMudG91cm5hbWVudFRvdXIudG9TdHJpbmcoKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vZXZlbnRzL2AsIHtwYXJhbXMsIG9ic2VydmU6ICdyZXNwb25zZSd9KVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiAoe1xuICAgICAgICB0b3RhbDogK3Jlc3VsdC5oZWFkZXJzLmdldCgnWC1QYWdlLUNvdW50JyksXG4gICAgICAgIGRhdGE6IFRvdXJuYW1lbnRFdmVudC50b0Zyb250KHJlc3VsdC5ib2R5KVxuICAgICAgfSkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VG91cm5hbWVudFN0YWdlcyh0b3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8VG91cm5hbWVudFN0YWdlW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L3N0YWdlcy9gKS5waXBlKFxuICAgICAgbWFwKGRhdGEgPT4gVG91cm5hbWVudFN0YWdlLnRvRnJvbnQoZGF0YSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFRvdXJuYW1lbnRSb3VuZHModG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRSb3VuZFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9yb3VuZHMvYCkucGlwZShcbiAgICAgIG1hcChkYXRhID0+IFRvdXJuYW1lbnRSb3VuZC50b0Zyb250KGRhdGEpKSxcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VG91cm5hbWVudERpdmlzaW9ucyh0b3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8VG91cm5hbWVudERpdmlzaW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L2RpdmlzaW9ucy9gKS5waXBlKFxuICAgICAgbWFwKGRhdGEgPT4gVG91cm5hbWVudERpdmlzaW9uLnRvRnJvbnQoZGF0YSkpLFxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRQbGF5b2ZmKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxQbGF5b2ZmW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L3BsYXlvZmYvYCkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gUGxheW9mZi50b0Zyb250KHJlc3VsdCkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFBsYXlvZmZHYW1lcyhwbGF5b2ZmSWQ6IG51bWJlciwgcGxheW9mZk51bWJlcj86IHN0cmluZyk6IFByb21pc2U8R2FtZVtdPiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKHBsYXlvZmZOdW1iZXIpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3BsYXlvZmZfbnVtYmVyJywgcGxheW9mZk51bWJlcik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudF9wbGF5b2ZmLyR7cGxheW9mZklkfS9nYW1lcy9gLFxuICAgICAge3BhcmFtc31cbiAgICApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IEdhbWUudG9Gcm9udChyZXN1bHQpKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRHYW1lc1N0YWdlcyh0b3VybmFtZW50SWQ6IG51bWJlciwgcm91bmRJZD86IG51bWJlcik6IFByb21pc2U8R2FtZVRpbWVsaW5lU3RhZ2VzPiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKHJvdW5kSWQpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvdXJuYW1lbnRfcm91bmRfaWQnLCByb3VuZElkLnRvU3RyaW5nKCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChcbiAgICAgIGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vZ2FtZXNfc3RhZ2VzL2AsXG4gICAgICB7cGFyYW1zfVxuICAgIClcbiAgICAgIC5waXBlKG1hcChkYXRhID0+IEdhbWVUaW1lbGluZVN0YWdlcy50b0Zyb250KGRhdGEpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEdhbWVzKHRvdXJuYW1lbnRJZDogbnVtYmVyLCBwYWdlOiBudW1iZXIsIHNpemU6IG51bWJlciwgZmlsdGVyczogVG91cm5hbWVudEdhbWVzRmlsdGVycyA9IHt9KTogUHJvbWlzZTxQYWdpbmF0ZWRSZXNwb25zZTxHYW1lW10+PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdwYWdlJywgcGFnZS50b1N0cmluZygpKTtcbiAgICBpZiAoc2l6ZSkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc2l6ZScsIHNpemUudG9TdHJpbmcoKSk7XG4gICAgfVxuICAgIHBhcmFtcyA9IGFwcGx5R2FtZXNGaWx0ZXJzKGZpbHRlcnMsIHBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9nYW1lcy9gLCB7cGFyYW1zLCBvYnNlcnZlOiAncmVzcG9uc2UnfSlcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gKHtcbiAgICAgICAgdG90YWw6ICtyZXN1bHQuaGVhZGVycy5nZXQoJ1gtUGFnZS1Db3VudCcpLFxuICAgICAgICBkYXRhOiBHYW1lLnRvRnJvbnQocmVzdWx0LmJvZHkpXG4gICAgICB9KSkpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0R2FtZXNEYXRlcyh0b3VybmFtZW50SWQ6IG51bWJlcik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoXG4gICAgICBgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L2dhbWVzX2RhdGVzL2AsXG4gICAgICB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ31cbiAgICApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogcmVzdWx0LmJvZHlcbiAgICAgIH0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRHcm91cHModG91cm5hbWVudElkOiBudW1iZXIpOiBQcm9taXNlPFRvdXJuYW1lbnRHcm91cFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50LyR7dG91cm5hbWVudElkfS9ncm91cHMvYClcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gVG91cm5hbWVudEdyb3VwLnRvRnJvbnQocmVzdWx0KSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRUZWFtcyh0b3VybmFtZW50SWQ6IG51bWJlciwgZ3JvdXBJZD86IG51bWJlciwgc2hvcnQ/OiBib29sZWFuKTogUHJvbWlzZTxUb3VybmFtZW50VGVhbVtdPiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKGdyb3VwSWQpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2dyb3VwX2lkJywgZ3JvdXBJZC50b1N0cmluZygpKTtcbiAgICB9XG4gICAgaWYgKHNob3J0KSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzaG9ydCcsICcxJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vdGVhbXMvYCwge3BhcmFtc30pXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IFRvdXJuYW1lbnRUZWFtLnRvRnJvbnQocmVzdWx0KSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRTdGFnZVRlYW1zKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50U3RhZ2VUZWFtW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnQvJHt0b3VybmFtZW50SWR9L3N0YWdlX3RlYW1zL2ApXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IFRvdXJuYW1lbnRTdGFnZVRlYW0udG9Gcm9udChyZXN1bHQpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFRlYW1zQWNoaWV2ZW1lbnRzKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxUZWFtQWNoaWV2ZW1lbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vYWNoaWV2ZW1lbnRzL2ApXG4gICAgICAucGlwZShtYXAocmVzdWx0ID0+IFRlYW1BY2hpZXZlbWVudC50b0Zyb250KHJlc3VsdCkpKVxuICAgICAgLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VGVhbUJ5SWQodG91cm5hbWVudFRlYW1JZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50VGVhbT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudF90ZWFtLyR7dG91cm5hbWVudFRlYW1JZH0vYClcbiAgICAgIC5waXBlKG1hcChyZXN1bHQgPT4gVG91cm5hbWVudFRlYW0udG9Gcm9udChyZXN1bHQpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFVzZXJCeUlkKHVzZXJJZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50VGVhbVVzZXI+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnRfdGVhbV91c2VyLyR7dXNlcklkfS9gKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiBUb3VybmFtZW50VGVhbVVzZXIudG9Gcm9udChyZXN1bHQpKSlcbiAgICAgIC50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFVzZXJHYW1lcyh0b3VybmFtZW50VXNlcklkOiBudW1iZXIpOiBQcm9taXNlPEdhbWVbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudF90ZWFtX3VzZXIvJHt0b3VybmFtZW50VXNlcklkfS9nYW1lcy9gKVxuICAgICAgLnBpcGUobWFwKHJlc3VsdCA9PiBHYW1lLnRvRnJvbnQocmVzdWx0KSkpXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBkb3dubG9hZFRhYmxlKHRvdXJuYW1lbnRJZDogbnVtYmVyLCBmb3JtYXQ6ICdwZGYnIHwgJ3hsc3gnLCBpc0NoZXNzPzogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XG4gICAgbGV0IGh0dHBQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgnZmlsZV90eXBlJywgZm9ybWF0KTtcbiAgICBpZiAoaXNDaGVzcykge1xuICAgICAgaHR0cFBhcmFtcyA9IGh0dHBQYXJhbXMuc2V0KCdpc0NoZXNzJywgdHJ1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vdGFibGVfZmlsZS9gLCB7XG4gICAgICBwYXJhbXM6IGh0dHBQYXJhbXMsXG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJ1xuICAgIH0pLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0QmFza2V0YmFsbFN0YXRpc3RpY0xlYWRlcnMoZmlsdGVyczogU3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMpOiBQcm9taXNlPHtba2V5OiBzdHJpbmddOiBCYXNrZXRiYWxsU3RhdGlzdGljW119PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gYXBwbHlTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyhmaWx0ZXJzLCBwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvYmFza2V0YmFsbF9zdGF0aXN0aWNfbGVhZGVycy9gLCB7cGFyYW1zfSkucGlwZShcbiAgICAgIG1hcCgocmVzdWx0OiB7W2tleTogc3RyaW5nXTogYW55W119KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJlc3VsdCkpIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IEJhc2tldGJhbGxTdGF0aXN0aWMudG9Gcm9udChyZXN1bHRba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFZvbGxleWJhbGxTdGF0aXN0aWNMZWFkZXJzKGZpbHRlcnM6IFN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKTogUHJvbWlzZTx7W2tleTogc3RyaW5nXTogVm9sbGV5YmFsbFN0YXRpc3RpY1tdfT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGFwcGx5U3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3ZvbGxleWJhbGxfc3RhdGlzdGljX2xlYWRlcnMvYCwge3BhcmFtc30pLnBpcGUoXG4gICAgICBtYXAoKHJlc3VsdDoge1trZXk6IHN0cmluZ106IGFueVtdfSkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyZXN1bHQpKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBWb2xsZXliYWxsU3RhdGlzdGljLnRvRnJvbnQocmVzdWx0W2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRIb2NrZXlTdGF0aXN0aWNMZWFkZXJzKGZpbHRlcnM6IFN0YXRpc3RpY0xlYWRlcnNGaWx0ZXJzKTogUHJvbWlzZTx7W2tleTogc3RyaW5nXTogSG9ja2V5U3RhdGlzdGljW119PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gYXBwbHlTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyhmaWx0ZXJzLCBwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvaG9ja2V5X3N0YXRpc3RpY19sZWFkZXJzL2AsIHtwYXJhbXN9KS5waXBlKFxuICAgICAgbWFwKChyZXN1bHQ6IHtba2V5OiBzdHJpbmddOiBhbnlbXX0pID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVzdWx0KSkge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gSG9ja2V5U3RhdGlzdGljLnRvRnJvbnQocmVzdWx0W2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRGb290YmFsbFN0YXRpc3RpY0xlYWRlcnMoZmlsdGVyczogU3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMpOiBQcm9taXNlPHtba2V5OiBzdHJpbmddOiBGb290YmFsbFN0YXRpc3RpY1tdfT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGFwcGx5U3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2Zvb3RiYWxsX3N0YXRpc3RpY19sZWFkZXJzL2AsIHtwYXJhbXN9KS5waXBlKFxuICAgICAgbWFwKChyZXN1bHQ6IHtba2V5OiBzdHJpbmddOiBhbnlbXX0pID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVzdWx0KSkge1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gRm9vdGJhbGxTdGF0aXN0aWMudG9Gcm9udChyZXN1bHRba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEhhbmRiYWxsU3RhdGlzdGljTGVhZGVycyhmaWx0ZXJzOiBTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyk6IFByb21pc2U8e1trZXk6IHN0cmluZ106IEhhbmRiYWxsU3RhdGlzdGljW119PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgcGFyYW1zID0gYXBwbHlTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyhmaWx0ZXJzLCBwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvaGFuZGJhbGxfc3RhdGlzdGljX2xlYWRlcnMvYCwge3BhcmFtc30pLnBpcGUoXG4gICAgICBtYXAoKHJlc3VsdDoge1trZXk6IHN0cmluZ106IGFueVtdfSkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyZXN1bHQpKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBIYW5kYmFsbFN0YXRpc3RpYy50b0Zyb250KHJlc3VsdFtrZXldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0V2F0ZXJwb2xvU3RhdGlzdGljTGVhZGVycyhmaWx0ZXJzOiBTdGF0aXN0aWNMZWFkZXJzRmlsdGVycyk6IFByb21pc2U8e1trZXk6IHN0cmluZ106IFdhdGVycG9sb1N0YXRpc3RpY1tdfT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIHBhcmFtcyA9IGFwcGx5U3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMoZmlsdGVycywgcGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3dhdGVycG9sb19zdGF0aXN0aWNfbGVhZGVycy9gLCB7cGFyYW1zfSkucGlwZShcbiAgICAgIG1hcCgocmVzdWx0OiB7W2tleTogc3RyaW5nXTogYW55W119KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJlc3VsdCkpIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IFdhdGVycG9sb1N0YXRpc3RpYy50b0Zyb250KHJlc3VsdFtrZXldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0QmFza2V0YmFsbFN0YXRpc3RpYyhmaWx0ZXJzPzogU3RhdGlzdGljRmlsdGVycyk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8QmFza2V0YmFsbFN0YXRpc3RpY1tdPj4ge1xuICAgIGNvbnN0IGRhdGEgPSBhcHBseVN0YXRpc3RpY0ZpbHRlcnMoZmlsdGVycyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoXG4gICAgICBgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL2Jhc2tldGJhbGxfc3RhdGlzdGljL2AsXG4gICAgICBkYXRhLFxuICAgICAge29ic2VydmU6ICdyZXNwb25zZSd9XG4gICAgKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiAoe1xuICAgICAgICB0b3RhbDogK3Jlc3VsdC5oZWFkZXJzLmdldCgnWC1QYWdlLUNvdW50JyksXG4gICAgICAgIGRhdGE6IEJhc2tldGJhbGxTdGF0aXN0aWMudG9Gcm9udChyZXN1bHQuYm9keSlcbiAgICAgIH0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRWb2xsZXliYWxsU3RhdGlzdGljKGZpbHRlcnM/OiBTdGF0aXN0aWNGaWx0ZXJzKTogUHJvbWlzZTxQYWdpbmF0ZWRSZXNwb25zZTxWb2xsZXliYWxsU3RhdGlzdGljW10+PiB7XG4gICAgY29uc3QgZGF0YSA9IGFwcGx5U3RhdGlzdGljRmlsdGVycyhmaWx0ZXJzKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChcbiAgICAgIGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdm9sbGV5YmFsbF9zdGF0aXN0aWMvYCxcbiAgICAgIGRhdGEsXG4gICAgICB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ31cbiAgICApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogVm9sbGV5YmFsbFN0YXRpc3RpYy50b0Zyb250KHJlc3VsdC5ib2R5KVxuICAgICAgfSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldEhvY2tleVN0YXRpc3RpYyhmaWx0ZXJzPzogU3RhdGlzdGljRmlsdGVycyk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8SG9ja2V5U3RhdGlzdGljW10+PiB7XG4gICAgY29uc3QgZGF0YSA9IGFwcGx5U3RhdGlzdGljRmlsdGVycyhmaWx0ZXJzKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChcbiAgICAgIGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvaG9ja2V5X3N0YXRpc3RpYy9gLFxuICAgICAgZGF0YSxcbiAgICAgIHtvYnNlcnZlOiAncmVzcG9uc2UnfVxuICAgICkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gKHtcbiAgICAgICAgdG90YWw6ICtyZXN1bHQuaGVhZGVycy5nZXQoJ1gtUGFnZS1Db3VudCcpLFxuICAgICAgICBkYXRhOiBIb2NrZXlTdGF0aXN0aWMudG9Gcm9udChyZXN1bHQuYm9keSlcbiAgICAgIH0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRGb290YmFsbFN0YXRpc3RpYyhmaWx0ZXJzPzogU3RhdGlzdGljRmlsdGVycyk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8Rm9vdGJhbGxTdGF0aXN0aWNbXT4+IHtcbiAgICBjb25zdCBkYXRhID0gYXBwbHlTdGF0aXN0aWNGaWx0ZXJzKGZpbHRlcnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxuICAgICAgYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9mb290YmFsbF9zdGF0aXN0aWMvYCxcbiAgICAgIGRhdGEsXG4gICAgICB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ31cbiAgICApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogRm9vdGJhbGxTdGF0aXN0aWMudG9Gcm9udChyZXN1bHQuYm9keSlcbiAgICAgIH0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRIYW5kYmFsbFN0YXRpc3RpYyhmaWx0ZXJzPzogU3RhdGlzdGljRmlsdGVycyk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8SGFuZGJhbGxTdGF0aXN0aWNbXT4+IHtcbiAgICBjb25zdCBkYXRhID0gYXBwbHlTdGF0aXN0aWNGaWx0ZXJzKGZpbHRlcnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxuICAgICAgYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9oYW5kYmFsbF9zdGF0aXN0aWMvYCxcbiAgICAgIGRhdGEsXG4gICAgICB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ31cbiAgICApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogSGFuZGJhbGxTdGF0aXN0aWMudG9Gcm9udChyZXN1bHQuYm9keSlcbiAgICAgIH0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRSdWdieVN0YXRpc3RpYyhmaWx0ZXJzPzogU3RhdGlzdGljRmlsdGVycyk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8UnVnYnlTdGF0aXN0aWNbXT4+IHtcbiAgICBjb25zdCBkYXRhID0gYXBwbHlTdGF0aXN0aWNGaWx0ZXJzKGZpbHRlcnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxuICAgICAgYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS9ydWdieV9zdGF0aXN0aWMvYCxcbiAgICAgIGRhdGEsXG4gICAgICB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ31cbiAgICApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogUnVnYnlTdGF0aXN0aWMudG9Gcm9udChyZXN1bHQuYm9keSlcbiAgICAgIH0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRXYXRlcnBvbG9TdGF0aXN0aWMoZmlsdGVycz86IFN0YXRpc3RpY0ZpbHRlcnMpOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPFdhdGVycG9sb1N0YXRpc3RpY1tdPj4ge1xuICAgIGNvbnN0IGRhdGEgPSBhcHBseVN0YXRpc3RpY0ZpbHRlcnMoZmlsdGVycyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoXG4gICAgICBgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3dhdGVycG9sb19zdGF0aXN0aWMvYCxcbiAgICAgIGRhdGEsXG4gICAgICB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ31cbiAgICApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+ICh7XG4gICAgICAgIHRvdGFsOiArcmVzdWx0LmhlYWRlcnMuZ2V0KCdYLVBhZ2UtQ291bnQnKSxcbiAgICAgICAgZGF0YTogV2F0ZXJwb2xvU3RhdGlzdGljLnRvRnJvbnQocmVzdWx0LmJvZHkpXG4gICAgICB9KSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0V3Jlc3RiYWxsU3RhdGlzdGljKGZpbHRlcnM/OiBTdGF0aXN0aWNGaWx0ZXJzKTogUHJvbWlzZTxQYWdpbmF0ZWRSZXNwb25zZTxXcmVzdGJhbGxTdGF0aXN0aWNbXT4+IHtcbiAgICBjb25zdCBkYXRhID0gYXBwbHlTdGF0aXN0aWNGaWx0ZXJzKGZpbHRlcnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxuICAgICAgYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS93cmVzdGJhbGxfc3RhdGlzdGljL2AsXG4gICAgICBkYXRhLFxuICAgICAge29ic2VydmU6ICdyZXNwb25zZSd9XG4gICAgKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiAoe1xuICAgICAgICB0b3RhbDogK3Jlc3VsdC5oZWFkZXJzLmdldCgnWC1QYWdlLUNvdW50JyksXG4gICAgICAgIGRhdGE6IFdyZXN0YmFsbFN0YXRpc3RpYy50b0Zyb250KHJlc3VsdC5ib2R5KVxuICAgICAgfSkpXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGFzeW5jIGdldFRvdXJuYW1lbnRUZWFtVXNlcnModG91cm5hbWVudFRlYW1JZDogbnVtYmVyLCBpbmNsdWRlczogc3RyaW5nW10gPSBbXSk6IFByb21pc2U8VG91cm5hbWVudFRlYW1Vc2VyW10+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBmb3IgKGNvbnN0IGluY2x1ZGUgb2YgaW5jbHVkZXMpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2luY2x1ZGUnLCBpbmNsdWRlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50X3RlYW0vJHt0b3VybmFtZW50VGVhbUlkfS91c2Vycy9gLCB7cGFyYW1zfSkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gVG91cm5hbWVudFRlYW1Vc2VyLnRvRnJvbnQocmVzdWx0KSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgbXlQZXJtaXNzaW9uKHRvdXJuYW1lbnRJZDogbnVtYmVyKTogUHJvbWlzZTxMZWFndWVVc2VyUGVybWlzc2lvbnNbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudC8ke3RvdXJuYW1lbnRJZH0vcGVybWlzc2lvbi9gKS5waXBlKFxuICAgICAgbWFwKChkYXRhOiBhbnkpID0+IChkYXRhLnBlcm1pc3Npb25zIHx8IFtdKS5tYXAoaXRlbSA9PiBMZWFndWVVc2VyUGVybWlzc2lvbnNbaXRlbV0pKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRUb3VybmFtZW50VGVhbVRvdXJuYW1lbnRzKHRvdXJuYW1lbnRUZWFtSWQ6IG51bWJlcik6IFByb21pc2U8VG91cm5hbWVudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5jb25maWdTZXJ2aWNlLmdldCgnYXBpVXJsJyl9L2FwaS92MS90b3VybmFtZW50X3RlYW0vJHt0b3VybmFtZW50VGVhbUlkfS90b3VybmFtZW50cy9gKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiBUb3VybmFtZW50LnRvRnJvbnQocmVzdWx0KSlcbiAgICApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VG91cm5hbWVudFVzZXJUb3VybmFtZW50cyh0b3VybmFtZW50VGVhbVVzZXJJZDogbnVtYmVyKTogUHJvbWlzZTxUb3VybmFtZW50W10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChgJHt0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0KCdhcGlVcmwnKX0vYXBpL3YxL3RvdXJuYW1lbnRfdGVhbV91c2VyLyR7dG91cm5hbWVudFRlYW1Vc2VySWR9L3RvdXJuYW1lbnRzL2ApLnBpcGUoXG4gICAgICBtYXAocmVzdWx0ID0+IFRvdXJuYW1lbnQudG9Gcm9udChyZXN1bHQpKVxuICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBhc3luYyBnZXRUb3VybmFtZW50VGVhbVVzZXJzTGltaXRhdGlvbih0b3VybmFtZW50VGVhbUlkOiBudW1iZXIpOiBQcm9taXNlPEdhbWVVc2VyTGltaXRhdGlvbnNbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnU2VydmljZS5nZXQoJ2FwaVVybCcpfS9hcGkvdjEvdG91cm5hbWVudF90ZWFtLyR7dG91cm5hbWVudFRlYW1JZH0vdXNlcnNfbGltaXRhdGlvbi9gKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiBHYW1lVXNlckxpbWl0YXRpb25zLnRvRnJvbnQocmVzdWx0KSksXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlHYW1lc0ZpbHRlcnMoZmlsdGVyczogVG91cm5hbWVudEdhbWVzRmlsdGVycywgcGFyYW1zOiBIdHRwUGFyYW1zKTogSHR0cFBhcmFtcyB7XG4gIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRJZHMpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0b3VybmFtZW50X2lkcycsIGZpbHRlcnMudG91cm5hbWVudElkcy5qb2luKCcsJykpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRTdGFnZUlkKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgndG91cm5hbWVudF9zdGFnZV9pZCcsIGZpbHRlcnMudG91cm5hbWVudFN0YWdlSWQudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMudG91cm5hbWVudFJvdW5kSWQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0b3VybmFtZW50X3JvdW5kX2lkJywgZmlsdGVycy50b3VybmFtZW50Um91bmRJZC50b1N0cmluZygpKTtcbiAgfVxuICBpZiAoZmlsdGVycy50b3VybmFtZW50R3JvdXBJZCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvdXJuYW1lbnRfZ3JvdXBfaWQnLCBmaWx0ZXJzLnRvdXJuYW1lbnRHcm91cElkLnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLmRpdmlzaW9uSWQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdkaXZpc2lvbl9pZCcsIGZpbHRlcnMuZGl2aXNpb25JZC50b1N0cmluZygpKTtcbiAgfVxuICBpZiAoZmlsdGVycy50b3VybmFtZW50VG91cikge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3RvdXJuYW1lbnRfdG91cicsIGZpbHRlcnMudG91cm5hbWVudFRvdXIudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMucGxheW9mZlN0YWdlKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgncGxheW9mZl9zdGFnZScsIGZpbHRlcnMucGxheW9mZlN0YWdlLnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnBsYXlvZmZSb3VuZCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3BsYXlvZmZfcm91bmQnLCBmaWx0ZXJzLnBsYXlvZmZSb3VuZC50b1N0cmluZygpKTtcbiAgfVxuICBpZiAoZmlsdGVycy50ZWFtSWQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0ZWFtX2lkJywgZmlsdGVycy50ZWFtSWQudG9TdHJpbmcoKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMuc3RhdHVzKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgnc3RhdHVzJywgR2FtZVN0YXR1c2VzW2ZpbHRlcnMuc3RhdHVzXSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMuc3RhdHVzZXMpIHtcbiAgICBjb25zdCBzdGF0dXNlcyA9IGZpbHRlcnMuc3RhdHVzZXMubWFwKGkgPT4gR2FtZVN0YXR1c2VzW2ldKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdzdGF0dXNlcycsIHN0YXR1c2VzLmpvaW4oJywnKSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMudG91cm5hbWVudENvdXJ0SWQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0b3VybmFtZW50X2NvdXJ0X2lkJywgZmlsdGVycy50b3VybmFtZW50Q291cnRJZC50b1N0cmluZygpKTtcbiAgfVxuICBpZiAoZmlsdGVycy5sZWFndWVQbGF5ZXJJZCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2xlYWd1ZV9wbGF5ZXJfaWQnLCBmaWx0ZXJzLmxlYWd1ZVBsYXllcklkLnRvU3RyaW5nKCkpO1xuICB9XG4gIGlmIChmaWx0ZXJzLnVzZXJJZCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3VzZXJfaWQnLCBmaWx0ZXJzLnVzZXJJZC50b1N0cmluZygpKTtcbiAgfVxuICBpZiAoZmlsdGVycy5xdWVyeSkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ3F1ZXJ5JywgZmlsdGVycy5xdWVyeSk7XG4gIH1cbiAgaWYgKGZpbHRlcnMuZGF0ZV9mcm9tKSB7XG4gICAgcGFyYW1zID0gcGFyYW1zLnNldCgnZGF0ZV9mcm9tJywgZmlsdGVycy5kYXRlX2Zyb20pO1xuICB9XG4gIGlmIChmaWx0ZXJzLmRhdGVfdG8pIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdkYXRlX3RvJywgZmlsdGVycy5kYXRlX3RvKTtcbiAgfVxuICBpZiAoZmlsdGVycy5pc1BsYXlvZmYgIT09IHVuZGVmaW5lZCAmJiBmaWx0ZXJzLmlzUGxheW9mZiAhPT0gbnVsbCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoJ2lzX3BsYXlvZmYnLCBmaWx0ZXJzLmlzUGxheW9mZiA/ICcxJyA6ICcwJyk7XG4gIH1cbiAgcmV0dXJuIHBhcmFtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5U3RhdGlzdGljRmlsdGVycyhmaWx0ZXJzOiBTdGF0aXN0aWNGaWx0ZXJzKTogb2JqZWN0IHtcbiAgY29uc3QgcmF3RmlsdGVycyA9IHt9O1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhmaWx0ZXJzKSkge1xuICAgIGlmIChmaWx0ZXJzW2tleV0pIHtcbiAgICAgIGlmIChrZXkgPT09ICdiYXNrZXRiYWxsX3Bvc2l0aW9uJykge1xuICAgICAgICByYXdGaWx0ZXJzW2tleV0gPSBHYW1lQmFza2V0YmFsbFBvc2l0aW9uW2ZpbHRlcnNba2V5XV07XG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3ZvbGxleWJhbGxfcG9zaXRpb24nKSB7XG4gICAgICAgIHJhd0ZpbHRlcnNba2V5XSA9IEdhbWVWb2xsZXliYWxsUG9zaXRpb25bZmlsdGVyc1trZXldXTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnaG9ja2V5X3Bvc2l0aW9uJykge1xuICAgICAgICByYXdGaWx0ZXJzW2tleV0gPSBHYW1lSG9ja2V5UG9zaXRpb25bZmlsdGVyc1trZXldXTtcbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnZm9vdGJhbGxfcG9zaXRpb24nKSB7XG4gICAgICAgIHJhd0ZpbHRlcnNba2V5XSA9IEdhbWVGb290YmFsbFBvc2l0aW9uW2ZpbHRlcnNba2V5XV07XG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2hhbmRiYWxsX3Bvc2l0aW9uJykge1xuICAgICAgICByYXdGaWx0ZXJzW2tleV0gPSBHYW1lSGFuZGJhbGxQb3NpdGlvbltmaWx0ZXJzW2tleV1dO1xuICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICd3YXRlcnBvbG9fcG9zaXRpb24nKSB7XG4gICAgICAgIHJhd0ZpbHRlcnNba2V5XSA9IEdhbWVXYXRlcnBvbG9Qb3NpdGlvbltmaWx0ZXJzW2tleV1dO1xuICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdydWdieV9wb3NpdGlvbicpIHtcbiAgICAgICAgcmF3RmlsdGVyc1trZXldID0gR2FtZVJ1Z2J5UG9zaXRpb25bZmlsdGVyc1trZXldXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJhd0ZpbHRlcnNba2V5XSA9IGZpbHRlcnNba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZmlsdGVycy5wZXJfZ2FtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmF3RmlsdGVyc1sncGVyX2dhbWUnXSA9IGZpbHRlcnMucGVyX2dhbWUgPyAnMScgOiAnMCc7XG4gIH1cblxuICBpZiAoZmlsdGVycy50b3VybmFtZW50X2lkcykge1xuICAgIHJhd0ZpbHRlcnNbJ3RvdXJuYW1lbnRfaWRzJ10gPSBmaWx0ZXJzLnRvdXJuYW1lbnRfaWRzLmpvaW4oJywnKTtcbiAgfVxuXG4gIGlmIChmaWx0ZXJzLnRvdXJuYW1lbnRfc2Vhc29uX2lkcykge1xuICAgIHJhd0ZpbHRlcnNbJ3RvdXJuYW1lbnRfc2Vhc29uX2lkcyddID0gZmlsdGVycy50b3VybmFtZW50X3NlYXNvbl9pZHMuam9pbignLCcpO1xuICB9XG5cbiAgaWYgKGZpbHRlcnMuaXNfcGxheW9mZiAhPT0gdW5kZWZpbmVkICYmIGZpbHRlcnMuaXNfcGxheW9mZiAhPT0gbnVsbCkge1xuICAgIHJhd0ZpbHRlcnNbJ2lzX3BsYXlvZmYnXSA9IGZpbHRlcnMuaXNfcGxheW9mZiA/ICcxJyA6ICcwJztcbiAgfVxuXG4gIGlmIChmaWx0ZXJzLm9ubHlfY2xvc2VkICE9PSB1bmRlZmluZWQgJiYgZmlsdGVycy5vbmx5X2Nsb3NlZCAhPT0gbnVsbCkge1xuICAgIHJhd0ZpbHRlcnNbJ29ubHlfY2xvc2VkJ10gPSBmaWx0ZXJzLm9ubHlfY2xvc2VkID8gJzEnIDogJzAnO1xuICB9XG5cbiAgaWYgKGZpbHRlcnMuY2hlY2tfaWdub3JlX2dhbWUgIT09IHVuZGVmaW5lZCAmJiBmaWx0ZXJzLmNoZWNrX2lnbm9yZV9nYW1lICE9PSBudWxsKSB7XG4gICAgcmF3RmlsdGVyc1snY2hlY2tfaWdub3JlX2dhbWUnXSA9IGZpbHRlcnMuY2hlY2tfaWdub3JlX2dhbWUgPyAnMScgOiAnMCc7XG4gIH1cblxuICByZXR1cm4gcmF3RmlsdGVycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5U3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMoZmlsdGVyczogU3RhdGlzdGljTGVhZGVyc0ZpbHRlcnMsIHBhcmFtczogSHR0cFBhcmFtcyk6IEh0dHBQYXJhbXMge1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhmaWx0ZXJzKSkge1xuICAgIGlmIChmaWx0ZXJzW2tleV0pIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoa2V5LCBmaWx0ZXJzW2tleV0pO1xuICAgIH1cbiAgfVxuXG4gIGlmIChmaWx0ZXJzLnBlcl9nYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdwZXJfZ2FtZScsIGZpbHRlcnMucGVyX2dhbWUgPyAnMScgOiAnMCcpO1xuICB9XG5cbiAgaWYgKGZpbHRlcnMudG91cm5hbWVudF9pZHMpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCd0b3VybmFtZW50X2lkcycsIGZpbHRlcnMudG91cm5hbWVudF9pZHMuam9pbignLCcpKTtcbiAgfVxuICBpZiAoZmlsdGVycy5maWVsZHMpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdmaWVsZHMnLCBmaWx0ZXJzLmZpZWxkcy5qb2luKCcsJykpO1xuICB9XG4gIHJldHVybiBwYXJhbXM7XG59XG4iXX0=
|
package/fesm2015/mtgame-core.js
CHANGED
|
@@ -6593,6 +6593,9 @@ function applyStatisticFilters(filters) {
|
|
|
6593
6593
|
if (filters.only_closed !== undefined && filters.only_closed !== null) {
|
|
6594
6594
|
rawFilters['only_closed'] = filters.only_closed ? '1' : '0';
|
|
6595
6595
|
}
|
|
6596
|
+
if (filters.check_ignore_game !== undefined && filters.check_ignore_game !== null) {
|
|
6597
|
+
rawFilters['check_ignore_game'] = filters.check_ignore_game ? '1' : '0';
|
|
6598
|
+
}
|
|
6596
6599
|
return rawFilters;
|
|
6597
6600
|
}
|
|
6598
6601
|
function applyStatisticLeadersFilters(filters, params) {
|