@igo2/geo 18.0.6 → 18.0.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.
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9jYXRhbG9nL3NoYXJlZC9jYXRhbG9nLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5U3RhdGUgfSBmcm9tICdAaWdvMi9jb21tb24vZW50aXR5JztcblxuaW1wb3J0IHsgVG9vbHRpcFR5cGUgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzL2xheWVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBRdWVyeUZvcm1hdCB9IGZyb20gJy4uLy4uL3F1ZXJ5L3NoYXJlZC9xdWVyeS5lbnVtcyc7XG5pbXBvcnQgeyBNZXRhZGF0YUxheWVyT3B0aW9ucyB9IGZyb20gJy4vLi4vLi4vbWV0YWRhdGEvc2hhcmVkL21ldGFkYXRhLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBDYXRhbG9nSXRlbVR5cGUsXG4gIENhdGFsb2dRdWVyeUZvcm1hdFR5cGVzLFxuICBUeXBlQ2F0YWxvZ1N0cmluZ3Ncbn0gZnJvbSAnLi9jYXRhbG9nLmVudW0nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkZGVkQ2hhbmdlRW1pdHRlciB7XG4gIGFkZGVkOiBib29sZWFuO1xuICBsYXllcjogQ2F0YWxvZ0l0ZW1MYXllcjtcbiAgZXZlbnQ6IEV2ZW50O1xufVxuZXhwb3J0IGludGVyZmFjZSBBZGRlZENoYW5nZUdyb3VwRW1pdHRlciB7XG4gIGFkZGVkOiBib29sZWFuO1xuICBncm91cDogQ2F0YWxvZ0l0ZW1Hcm91cDtcbiAgZXZlbnQ6IEV2ZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDYXRhbG9nIHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICByZW1vdmFibGU/OiBib29sZWFuO1xuICBleHRlcm5hbFByb3ZpZGVyPzogYm9vbGVhbjtcbiAgaXRlbXM/OiBDYXRhbG9nSXRlbVtdO1xuICB0eXBlPzogVHlwZUNhdGFsb2dTdHJpbmdzO1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuICBtYXRyaXhTZXQ/OiBzdHJpbmc7XG4gIGZvcmNlZFByb3BlcnRpZXM/OiBGb3JjZWRQcm9wZXJ0eVtdO1xuICByZXF1ZXN0RW5jb2Rpbmc/OiBzdHJpbmc7XG4gIHJlZ0ZpbHRlcnM/OiBzdHJpbmdbXTtcbiAgZ3JvdXBJbXBvc2U/OiBDYXRhbG9nSXRlbUdyb3VwOyAvLyBvbmx5IHVzZSBieSBJQ29tcG9zaXRlQ2F0YWxvZyBvYmplY3QgKGlkLCB0aXRsZSwgc29ydERpcmVjdGlvbj8pXG4gIGdyb3VwU2VwYXJhdG9yPzogc3RyaW5nO1xuICBxdWVyeUZvcm1hdD86IFF1ZXJ5Rm9ybWF0IHwgQ2F0YWxvZ1F1ZXJ5Rm9ybWF0VHlwZXM7XG4gIHF1ZXJ5UGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgc291cmNlT3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIHRvb2x0aXBUeXBlPzogVG9vbHRpcFR5cGUuQUJTVFJBQ1QgfCBUb29sdGlwVHlwZS5USVRMRTtcbiAgc29ydERpcmVjdGlvbj86ICdhc2MnIHwgJ2Rlc2MnO1xuICBzZXRDcm9zc09yaWdpbkFub255bW91cz86IGJvb2xlYW47XG4gIHNob3dMZWdlbmQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcmNlZFByb3BlcnR5IHtcbiAgbGF5ZXJOYW1lOiBhbnk7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBtZXRhZGF0YVVybD86IHN0cmluZztcbiAgbWV0YWRhdGFBYnN0cmFjdD86IHN0cmluZztcbiAgbWV0YWRhdGFBYnN0cmFjdEFsbD86IHN0cmluZztcbiAgbWV0YWRhdGFVcmxBbGw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbXBvc2l0ZUNhdGFsb2cgZXh0ZW5kcyBPbWl0PElDYXRhbG9nLCAndXJsJz4ge1xuICBjb21wb3NpdGU6IElDYXRhbG9nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2F0YWxvZ0l0ZW0ge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICB0eXBlPzogQ2F0YWxvZ0l0ZW1UeXBlO1xuICBhZGRyZXNzPzogc3RyaW5nO1xuICBleHRlcm5hbFByb3ZpZGVyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYXRhbG9nSXRlbUxheWVyPEwgPSBNZXRhZGF0YUxheWVyT3B0aW9ucz5cbiAgZXh0ZW5kcyBDYXRhbG9nSXRlbSB7XG4gIG9wdGlvbnM6IEw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2F0YWxvZ0l0ZW1Hcm91cCBleHRlbmRzIENhdGFsb2dJdGVtIHtcbiAgaXRlbXM/OiBDYXRhbG9nSXRlbVtdO1xuICBzb3J0RGlyZWN0aW9uPzogJ2FzYycgfCAnZGVzYyc7IC8vIHVzZSB3aXRoIGdyb3VwSW1wb3NlIGFuZCBJQ29tcG9zaXRlQ2F0YWxvZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhdGFsb2dJdGVtU3RhdGUgZXh0ZW5kcyBFbnRpdHlTdGF0ZSB7XG4gIGFkZGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYXRhbG9nU2VydmljZU9wdGlvbnMge1xuICAvKiogQGRlcHJlY2F0ZWQgVXNlIGJhc2VsYXllcnMgaW5zdGVhZCovXG4gIGJhc2VMYXllcnM/OiBib29sZWFuO1xuICBiYXNlbGF5ZXJzPzogYm9vbGVhbjtcbiAgLyoqIEBkZXByZWNhdGVkIE5vdCB1c2VkIGFueW1vcmUqL1xuICBlbWFpbEFkZHJlc3M/OiBzdHJpbmc7XG4gIHVybD86IHN0cmluZztcbiAgc291cmNlcz86IChJQ2F0YWxvZyB8IElDb21wb3NpdGVDYXRhbG9nKVtdO1xuICAvKiogQGRlcHJlY2F0ZWQgVXNlIHVybCBpbnN0ZWFkICovXG4gIHNvdXJjZXNVcmw/OiBzdHJpbmc7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9jYXRhbG9nL3NoYXJlZC9jYXRhbG9nLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5U3RhdGUgfSBmcm9tICdAaWdvMi9jb21tb24vZW50aXR5JztcblxuaW1wb3J0IHsgVG9vbHRpcFR5cGUgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzL2xheWVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBRdWVyeUZvcm1hdCB9IGZyb20gJy4uLy4uL3F1ZXJ5L3NoYXJlZC9xdWVyeS5lbnVtcyc7XG5pbXBvcnQgeyBNZXRhZGF0YUxheWVyT3B0aW9ucyB9IGZyb20gJy4vLi4vLi4vbWV0YWRhdGEvc2hhcmVkL21ldGFkYXRhLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBDYXRhbG9nSXRlbVR5cGUsXG4gIENhdGFsb2dRdWVyeUZvcm1hdFR5cGVzLFxuICBUeXBlQ2F0YWxvZ1N0cmluZ3Ncbn0gZnJvbSAnLi9jYXRhbG9nLmVudW0nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkZGVkQ2hhbmdlRW1pdHRlciB7XG4gIGFkZGVkOiBib29sZWFuO1xuICBsYXllcjogQ2F0YWxvZ0l0ZW1MYXllcjtcbiAgZXZlbnQ6IEV2ZW50O1xufVxuZXhwb3J0IGludGVyZmFjZSBBZGRlZENoYW5nZUdyb3VwRW1pdHRlciB7XG4gIGFkZGVkOiBib29sZWFuO1xuICBncm91cDogQ2F0YWxvZ0l0ZW1Hcm91cDtcbiAgZXZlbnQ6IEV2ZW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDYXRhbG9nIHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICByZW1vdmFibGU/OiBib29sZWFuO1xuICBleHRlcm5hbFByb3ZpZGVyPzogYm9vbGVhbjtcbiAgaXRlbXM/OiBDYXRhbG9nSXRlbVtdO1xuICB0eXBlPzogVHlwZUNhdGFsb2dTdHJpbmdzO1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuICBtYXRyaXhTZXQ/OiBzdHJpbmc7XG4gIGZvcmNlZFByb3BlcnRpZXM/OiBGb3JjZWRQcm9wZXJ0eVtdO1xuICByZXF1ZXN0RW5jb2Rpbmc/OiBzdHJpbmc7XG4gIHJlZ0ZpbHRlcnM/OiBzdHJpbmdbXTtcbiAgZ3JvdXBJbXBvc2U/OiBDYXRhbG9nSXRlbUdyb3VwOyAvLyBvbmx5IHVzZSBieSBJQ29tcG9zaXRlQ2F0YWxvZyBvYmplY3QgKGlkLCB0aXRsZSwgc29ydERpcmVjdGlvbj8pXG4gIGdyb3VwU2VwYXJhdG9yPzogc3RyaW5nO1xuICBxdWVyeUZvcm1hdD86IFF1ZXJ5Rm9ybWF0IHwgQ2F0YWxvZ1F1ZXJ5Rm9ybWF0VHlwZXM7XG4gIHF1ZXJ5UGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgc291cmNlT3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIHRvb2x0aXBUeXBlPzogVG9vbHRpcFR5cGUuQUJTVFJBQ1QgfCBUb29sdGlwVHlwZS5USVRMRTtcbiAgc29ydERpcmVjdGlvbj86ICdhc2MnIHwgJ2Rlc2MnO1xuICBzZXRDcm9zc09yaWdpbkFub255bW91cz86IGJvb2xlYW47XG4gIHNob3dMZWdlbmQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZvcmNlZFByb3BlcnR5IHtcbiAgbGF5ZXJOYW1lOiBhbnk7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBtZXRhZGF0YVVybD86IHN0cmluZztcbiAgbWV0YWRhdGFBYnN0cmFjdD86IHN0cmluZztcbiAgbWV0YWRhdGFBYnN0cmFjdEFsbD86IHN0cmluZztcbiAgbWV0YWRhdGFVcmxBbGw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbXBvc2l0ZUNhdGFsb2cgZXh0ZW5kcyBPbWl0PElDYXRhbG9nLCAndXJsJz4ge1xuICBjb21wb3NpdGU6IElDYXRhbG9nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2F0YWxvZ0l0ZW0ge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICB0eXBlPzogQ2F0YWxvZ0l0ZW1UeXBlO1xuICBhZGRyZXNzPzogc3RyaW5nO1xuICBleHRlcm5hbFByb3ZpZGVyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYXRhbG9nSXRlbUxheWVyPFxuICBMID0gTWV0YWRhdGFMYXllck9wdGlvbnNcbj4gZXh0ZW5kcyBDYXRhbG9nSXRlbSB7XG4gIG9wdGlvbnM6IEw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2F0YWxvZ0l0ZW1Hcm91cCBleHRlbmRzIENhdGFsb2dJdGVtIHtcbiAgaXRlbXM/OiBDYXRhbG9nSXRlbVtdO1xuICBzb3J0RGlyZWN0aW9uPzogJ2FzYycgfCAnZGVzYyc7IC8vIHVzZSB3aXRoIGdyb3VwSW1wb3NlIGFuZCBJQ29tcG9zaXRlQ2F0YWxvZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhdGFsb2dJdGVtU3RhdGUgZXh0ZW5kcyBFbnRpdHlTdGF0ZSB7XG4gIGFkZGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYXRhbG9nU2VydmljZU9wdGlvbnMge1xuICAvKiogQGRlcHJlY2F0ZWQgVXNlIGJhc2VsYXllcnMgaW5zdGVhZCovXG4gIGJhc2VMYXllcnM/OiBib29sZWFuO1xuICBiYXNlbGF5ZXJzPzogYm9vbGVhbjtcbiAgLyoqIEBkZXByZWNhdGVkIE5vdCB1c2VkIGFueW1vcmUqL1xuICBlbWFpbEFkZHJlc3M/OiBzdHJpbmc7XG4gIHVybD86IHN0cmluZztcbiAgc291cmNlcz86IChJQ2F0YWxvZyB8IElDb21wb3NpdGVDYXRhbG9nKVtdO1xuICAvKiogQGRlcHJlY2F0ZWQgVXNlIHVybCBpbnN0ZWFkICovXG4gIHNvdXJjZXNVcmw/OiBzdHJpbmc7XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge1xuICBFbnRpdHlLZXksXG4gIEVudGl0eVN0b3JlT3B0aW9ucyxcbiAgRW50aXR5U3RvcmVTdHJhdGVneU9wdGlvbnNcbn0gZnJvbSAnQGlnbzIvY29tbW9uL2VudGl0eSc7XG5cbmltcG9ydCBPbEZlYXR1cmUgZnJvbSAnb2wvRmVhdHVyZSc7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IE9sUmVuZGVyRmVhdHVyZSBmcm9tICdvbC9yZW5kZXIvRmVhdHVyZSc7XG5cbmltcG9ydCB7IEdlb0pzb25HZW9tZXRyeVR5cGVzIH0gZnJvbSAnZ2VvanNvbic7XG5cbmltcG9ydCB7IFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXMgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcyc7XG5pbXBvcnQgdHlwZSB7IFZlY3RvckxheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy92ZWN0b3ItbGF5ZXInO1xuaW1wb3J0IHR5cGUgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcCc7XG5pbXBvcnQgeyBGZWF0dXJlTW90aW9uIH0gZnJvbSAnLi9mZWF0dXJlLmVudW1zJztcblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlPFAgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gIHR5cGU6IHN0cmluZztcbiAgcHJvamVjdGlvbj86IHN0cmluZztcbiAgZ2VvbWV0cnk/OiBGZWF0dXJlR2VvbWV0cnk7XG4gIHByb3BlcnRpZXM6IFA7XG4gIGV4dGVudD86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICBtZXRhPzogRmVhdHVyZU1ldGE7XG4gIG9sPzogT2xGZWF0dXJlPE9sR2VvbWV0cnk+IHwgT2xSZW5kZXJGZWF0dXJlO1xuICBzb3VyY2VJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlTWV0YSB7XG4gIGlkOiBFbnRpdHlLZXk7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBtYXBUaXRsZT86IHN0cmluZztcbiAgc291cmNlVGl0bGU/OiBzdHJpbmc7XG4gIG9yZGVyPzogbnVtYmVyO1xuICBpY29uPzogc3RyaW5nO1xuICBzdHlsZT86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGFsaWFzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgcmV2aXNpb24/OiBudW1iZXI7XG4gIGV4Y2x1ZGVBdHRyaWJ1dGU/OiBzdHJpbmdbXTtcbiAgZXhjbHVkZUF0dHJpYnV0ZU9mZmxpbmU/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlR2VvbWV0cnkge1xuICB0eXBlOiBHZW9Kc29uR2VvbWV0cnlUeXBlcztcbiAgY29vcmRpbmF0ZXM6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlU3RvcmVPcHRpb25zIGV4dGVuZHMgRW50aXR5U3RvcmVPcHRpb25zIHtcbiAgbWFwOiBJZ29NYXA7XG4gIGxheWVyPzogVmVjdG9yTGF5ZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZVN0b3JlU3RyYXRlZ3lPcHRpb25zXG4gIGV4dGVuZHMgRW50aXR5U3RvcmVTdHJhdGVneU9wdGlvbnMge1xuICAvLyBXaGVuIHRoZSBzdG9yZSBtb3ZlcyBmZWF0dXJlcyBpbnRvIHZpZXcsIHRoZSB2aWV3IGV4dGVudCwgd2hpY2ggaXMgYWxzbyB0aGUgZmVhdHVyZXMgZXh0ZW50LFxuICAvLyBpcyBzY2FsZWQgYnkgdGhvc2UgZmFjdG9ycywgZWZmZWN0aXZlbHkgcmVzdWx0aW5nIGluIGEgZGVjZW50ZXJlZCB2aWV3IG9yIGEgbW9yZSB6b29tZWQgaW4vb3V0IHZpZXcuXG4gIC8vIFRoZXNlIGZhY3RvcnMgYXJlIGFwcGxpZWQgdG8gdGhlIHRvcCwgcmlnaHQsIGJvdHRvbSBhbmQgbGVmdCBkaXJlY3Rpb25zLCBpbiB0aGF0IG9yZGVyLlxuICAvLyBBIGZhY3RvciBvZiAxIG1lYW5zIHRoZSBkaXN0YW5jZSBmcm9tIHRoZSBjZW50ZXIsIGluIHRoYXQgZGlyZWN0aW9uLCBpcyBkb3VibGVkLlxuICB2aWV3U2NhbGU/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgLy8gRmVhdHVyZXMgZXh0ZW50IHRvIHZpZXcgZXh0ZW50IHJhdGlvIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBzdG9yZSBzaG91bGQgdHJpZ2dlclxuICAvLyBhIG1hcCB6b29tIHdoZW4gZmVhdHVyZXMgYXJlIGFkZGVkIHRvIGl0LlxuICBhcmVhUmF0aW8/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5T3B0aW9uc1xuICBleHRlbmRzIEZlYXR1cmVTdG9yZVN0cmF0ZWd5T3B0aW9ucyB7XG4gIGdldEZlYXR1cmVJZD86IChGZWF0dXJlKSA9PiBFbnRpdHlLZXk7XG4gIG1vdGlvbj86IEZlYXR1cmVNb3Rpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZVN0b3JlUHJvcGVydHlUeXBlU3RyYXRlZ3lPcHRpb25zXG4gIGV4dGVuZHMgRmVhdHVyZVN0b3JlU3RyYXRlZ3lPcHRpb25zIHtcbiAgbWFwOiBJZ29NYXA7XG59XG5cbi8qKiBAZGVwcmVjYXRlZCB1c2UgRmVhdHVyZVN0b3JlU3RyYXRlZ3lPcHRpb25zKi9cbmV4cG9ydCB0eXBlIEZlYXR1cmVTdG9yZUluTWFwRXh0ZW50U3RyYXRlZ3lPcHRpb25zID1cbiAgRmVhdHVyZVN0b3JlU3RyYXRlZ3lPcHRpb25zO1xuXG4vKiogQGRlcHJlY2F0ZWQgdXNlIEZlYXR1cmVTdG9yZVN0cmF0ZWd5T3B0aW9ucyovXG5leHBvcnQgdHlwZSBGZWF0dXJlU3RvcmVJbk1hcFJlc29sdXRpb25TdHJhdGVneU9wdGlvbnMgPVxuICBGZWF0dXJlU3RvcmVTdHJhdGVneU9wdGlvbnM7XG5cbi8qKiBAZGVwcmVjYXRlZCB1c2UgRmVhdHVyZVN0b3JlU3RyYXRlZ3lPcHRpb25zKi9cbmV4cG9ydCB0eXBlIEZlYXR1cmVTdG9yZUxvYWRpbmdMYXllclN0cmF0ZWd5T3B0aW9ucyA9XG4gIEZlYXR1cmVTdG9yZVN0cmF0ZWd5T3B0aW9ucztcblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlU3RvcmVTZWFyY2hJbmRleFN0cmF0ZWd5T3B0aW9uc1xuICBleHRlbmRzIEVudGl0eVN0b3JlU3RyYXRlZ3lPcHRpb25zIHtcbiAgc291cmNlRmllbGRzPzogU291cmNlRmllbGRzT3B0aW9uc1BhcmFtc1tdO1xuICBwZXJjZW50RGlzdGluY3RWYWx1ZVJhdGlvPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5T3B0aW9uc1xuICBleHRlbmRzIEZlYXR1cmVTdG9yZVN0cmF0ZWd5T3B0aW9ucyB7XG4gIG1hcDogSWdvTWFwO1xuICBnZXRGZWF0dXJlSWQ/OiAoRmVhdHVyZSkgPT4gRW50aXR5S2V5O1xuICBtb3Rpb24/OiBGZWF0dXJlTW90aW9uO1xuICBsYXllcj86IFZlY3RvckxheWVyO1xuICBtYW55PzogYm9vbGVhbjtcbiAgaGl0VG9sZXJhbmNlPzogbnVtYmVyO1xuICBkcmFnQm94PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlRm9ybVN1Ym1pdEV2ZW50IHtcbiAgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgZmVhdHVyZTogRmVhdHVyZSB8IHVuZGVmaW5lZDtcbiAgZGF0YTogRmVhdHVyZTtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge1xuICBFbnRpdHlLZXksXG4gIEVudGl0eVN0b3JlT3B0aW9ucyxcbiAgRW50aXR5U3RvcmVTdHJhdGVneU9wdGlvbnNcbn0gZnJvbSAnQGlnbzIvY29tbW9uL2VudGl0eSc7XG5cbmltcG9ydCBPbEZlYXR1cmUgZnJvbSAnb2wvRmVhdHVyZSc7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IE9sUmVuZGVyRmVhdHVyZSBmcm9tICdvbC9yZW5kZXIvRmVhdHVyZSc7XG5cbmltcG9ydCB7IEdlb0pzb25HZW9tZXRyeVR5cGVzIH0gZnJvbSAnZ2VvanNvbic7XG5cbmltcG9ydCB7IFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXMgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcyc7XG5pbXBvcnQgdHlwZSB7IFZlY3RvckxheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy92ZWN0b3ItbGF5ZXInO1xuaW1wb3J0IHR5cGUgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcCc7XG5pbXBvcnQgeyBGZWF0dXJlTW90aW9uIH0gZnJvbSAnLi9mZWF0dXJlLmVudW1zJztcblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlPFAgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB7XG4gIHR5cGU6IHN0cmluZztcbiAgcHJvamVjdGlvbj86IHN0cmluZztcbiAgZ2VvbWV0cnk/OiBGZWF0dXJlR2VvbWV0cnk7XG4gIHByb3BlcnRpZXM6IFA7XG4gIGV4dGVudD86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICBtZXRhPzogRmVhdHVyZU1ldGE7XG4gIG9sPzogT2xGZWF0dXJlPE9sR2VvbWV0cnk+IHwgT2xSZW5kZXJGZWF0dXJlO1xuICBzb3VyY2VJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlTWV0YSB7XG4gIGlkOiBFbnRpdHlLZXk7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBtYXBUaXRsZT86IHN0cmluZztcbiAgc291cmNlVGl0bGU/OiBzdHJpbmc7XG4gIG9yZGVyPzogbnVtYmVyO1xuICBpY29uPzogc3RyaW5nO1xuICBzdHlsZT86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGFsaWFzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgcmV2aXNpb24/OiBudW1iZXI7XG4gIGV4Y2x1ZGVBdHRyaWJ1dGU/OiBzdHJpbmdbXTtcbiAgZXhjbHVkZUF0dHJpYnV0ZU9mZmxpbmU/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlR2VvbWV0cnkge1xuICB0eXBlOiBHZW9Kc29uR2VvbWV0cnlUeXBlcztcbiAgY29vcmRpbmF0ZXM6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlU3RvcmVPcHRpb25zIGV4dGVuZHMgRW50aXR5U3RvcmVPcHRpb25zIHtcbiAgbWFwOiBJZ29NYXA7XG4gIGxheWVyPzogVmVjdG9yTGF5ZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZVN0b3JlU3RyYXRlZ3lPcHRpb25zIGV4dGVuZHMgRW50aXR5U3RvcmVTdHJhdGVneU9wdGlvbnMge1xuICAvLyBXaGVuIHRoZSBzdG9yZSBtb3ZlcyBmZWF0dXJlcyBpbnRvIHZpZXcsIHRoZSB2aWV3IGV4dGVudCwgd2hpY2ggaXMgYWxzbyB0aGUgZmVhdHVyZXMgZXh0ZW50LFxuICAvLyBpcyBzY2FsZWQgYnkgdGhvc2UgZmFjdG9ycywgZWZmZWN0aXZlbHkgcmVzdWx0aW5nIGluIGEgZGVjZW50ZXJlZCB2aWV3IG9yIGEgbW9yZSB6b29tZWQgaW4vb3V0IHZpZXcuXG4gIC8vIFRoZXNlIGZhY3RvcnMgYXJlIGFwcGxpZWQgdG8gdGhlIHRvcCwgcmlnaHQsIGJvdHRvbSBhbmQgbGVmdCBkaXJlY3Rpb25zLCBpbiB0aGF0IG9yZGVyLlxuICAvLyBBIGZhY3RvciBvZiAxIG1lYW5zIHRoZSBkaXN0YW5jZSBmcm9tIHRoZSBjZW50ZXIsIGluIHRoYXQgZGlyZWN0aW9uLCBpcyBkb3VibGVkLlxuICB2aWV3U2NhbGU/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgLy8gRmVhdHVyZXMgZXh0ZW50IHRvIHZpZXcgZXh0ZW50IHJhdGlvIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBzdG9yZSBzaG91bGQgdHJpZ2dlclxuICAvLyBhIG1hcCB6b29tIHdoZW4gZmVhdHVyZXMgYXJlIGFkZGVkIHRvIGl0LlxuICBhcmVhUmF0aW8/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5T3B0aW9ucyBleHRlbmRzIEZlYXR1cmVTdG9yZVN0cmF0ZWd5T3B0aW9ucyB7XG4gIGdldEZlYXR1cmVJZD86IChGZWF0dXJlKSA9PiBFbnRpdHlLZXk7XG4gIG1vdGlvbj86IEZlYXR1cmVNb3Rpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZVN0b3JlUHJvcGVydHlUeXBlU3RyYXRlZ3lPcHRpb25zIGV4dGVuZHMgRmVhdHVyZVN0b3JlU3RyYXRlZ3lPcHRpb25zIHtcbiAgbWFwOiBJZ29NYXA7XG59XG5cbi8qKiBAZGVwcmVjYXRlZCB1c2UgRmVhdHVyZVN0b3JlU3RyYXRlZ3lPcHRpb25zKi9cbmV4cG9ydCB0eXBlIEZlYXR1cmVTdG9yZUluTWFwRXh0ZW50U3RyYXRlZ3lPcHRpb25zID1cbiAgRmVhdHVyZVN0b3JlU3RyYXRlZ3lPcHRpb25zO1xuXG4vKiogQGRlcHJlY2F0ZWQgdXNlIEZlYXR1cmVTdG9yZVN0cmF0ZWd5T3B0aW9ucyovXG5leHBvcnQgdHlwZSBGZWF0dXJlU3RvcmVJbk1hcFJlc29sdXRpb25TdHJhdGVneU9wdGlvbnMgPVxuICBGZWF0dXJlU3RvcmVTdHJhdGVneU9wdGlvbnM7XG5cbi8qKiBAZGVwcmVjYXRlZCB1c2UgRmVhdHVyZVN0b3JlU3RyYXRlZ3lPcHRpb25zKi9cbmV4cG9ydCB0eXBlIEZlYXR1cmVTdG9yZUxvYWRpbmdMYXllclN0cmF0ZWd5T3B0aW9ucyA9XG4gIEZlYXR1cmVTdG9yZVN0cmF0ZWd5T3B0aW9ucztcblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlU3RvcmVTZWFyY2hJbmRleFN0cmF0ZWd5T3B0aW9ucyBleHRlbmRzIEVudGl0eVN0b3JlU3RyYXRlZ3lPcHRpb25zIHtcbiAgc291cmNlRmllbGRzPzogU291cmNlRmllbGRzT3B0aW9uc1BhcmFtc1tdO1xuICBwZXJjZW50RGlzdGluY3RWYWx1ZVJhdGlvPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVTdG9yZVNlbGVjdGlvblN0cmF0ZWd5T3B0aW9ucyBleHRlbmRzIEZlYXR1cmVTdG9yZVN0cmF0ZWd5T3B0aW9ucyB7XG4gIG1hcDogSWdvTWFwO1xuICBnZXRGZWF0dXJlSWQ/OiAoRmVhdHVyZSkgPT4gRW50aXR5S2V5O1xuICBtb3Rpb24/OiBGZWF0dXJlTW90aW9uO1xuICBsYXllcj86IFZlY3RvckxheWVyO1xuICBtYW55PzogYm9vbGVhbjtcbiAgaGl0VG9sZXJhbmNlPzogbnVtYmVyO1xuICBkcmFnQm94PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZWF0dXJlRm9ybVN1Ym1pdEV2ZW50IHtcbiAgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgZmVhdHVyZTogRmVhdHVyZSB8IHVuZGVmaW5lZDtcbiAgZGF0YTogRmVhdHVyZTtcbn1cbiJdfQ==
@@ -128,9 +128,12 @@ export class LayerViewerBottomActionsComponent {
128
128
  changeOpacity(event) {
129
129
  this.opacity = event.value;
130
130
  }
131
- toggleSelectionVisibility() {
132
- this.selected.forEach((layer) => {
133
- layer.visible = !layer.visible;
131
+ toggleSelectionVisibility(layers = this.selected, visibility = this.allSelectionVisibilityHidden) {
132
+ layers.forEach((layer) => {
133
+ layer.visible = visibility;
134
+ if (isLayerGroup(layer)) {
135
+ this.toggleSelectionVisibility(layer.children, visibility);
136
+ }
134
137
  });
135
138
  this.layerChange.emit();
136
139
  }
@@ -204,4 +207,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
204
207
  }], layerChange: [{
205
208
  type: Output
206
209
  }] } });
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItdmlld2VyLWJvdHRvbS1hY3Rpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2xheWVyL2xheWVyLXZpZXdlci1ib3R0b20tYWN0aW9ucy9sYXllci12aWV3ZXItYm90dG9tLWFjdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvbGF5ZXItdmlld2VyLWJvdHRvbS1hY3Rpb25zL2xheWVyLXZpZXdlci1ib3R0b20tYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFtQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFeEQsT0FBTyxLQUFLLFFBQVEsTUFBTSxXQUFXLENB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QUFDLG9CQUFvQixFQUFFLGlCQUFpQixDQUFDLDBCQzVDdEQsNHhLQTJMQSxrNkJEMUpJLElBQUksNEZBRUosZUFBZSwySUFDZixnQkFBZ0IsNFRBQ2hCLGFBQWEsbUxBQ2IsY0FBYywyUEFDZCxhQUFhLHltQkFDYixlQUFlLGthQUNmLGlCQUFpQiw0RkFDakIsY0FBYzs7NEZBSUwsaUNBQWlDO2tCQW5CN0MsU0FBUzsrQkFDRSxpQ0FBaUMsY0FHL0IsSUFBSSxXQUNQO3dCQUNQLElBQUk7d0JBQ0osZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGNBQWM7cUJBQ2YsYUFDVSxDQUFDLG9CQUFvQixFQUFFLGlCQUFpQixDQUFDO3lGQUt6QixHQUFHO3NCQUE3QixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDRSxVQUFVO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDRSxVQUFVO3NCQUFwQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFDaEIsYUFBYTtzQkFBckIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QmFkZ2VNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9iYWRnZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0U2xpZGVyQ2hhbmdlLCBNYXRTbGlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZXInO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbXBvcnQgeyBGb3JtRGlhbG9nU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvbW1vbi9mb3JtJztcbmltcG9ydCB7IFBhbmVsQ29tcG9uZW50IH0gZnJvbSAnQGlnbzIvY29tbW9uL3BhbmVsJztcbmltcG9ydCB7IElnb0xhbmd1YWdlTW9kdWxlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5cbmltcG9ydCAqIGFzIG9sZXh0ZW50IGZyb20gJ29sL2V4dGVudCc7XG5cbmltcG9ydCB0eXBlIHsgTWFwQmFzZSB9IGZyb20gJy4uLy4uL21hcC9zaGFyZWQvbWFwLmFic3RyYWN0JztcbmltcG9ydCB7IExheWVyTGlzdFRvb2xTZXJ2aWNlIH0gZnJvbSAnLi4vbGF5ZXItbGlzdC10b29sJztcbmltcG9ydCB7IExheWVyVmlld2VyT3B0aW9ucyB9IGZyb20gJy4uL2xheWVyLXZpZXdlci9sYXllci12aWV3ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IExheWVyQ29udHJvbGxlciB9IGZyb20gJy4uL3NoYXJlZC9sYXllci1jb250cm9sbGVyJztcbmltcG9ydCB0eXBlIHsgQW55TGF5ZXIsIExheWVyR3JvdXAgfSBmcm9tICcuLi9zaGFyZWQvbGF5ZXJzJztcbmltcG9ydCB7XG4gIExpbmtlZFByb3BlcnRpZXMsXG4gIGlzTGF5ZXJMaW5rZWQsXG4gIGlzTGF5ZXJMaW5rZWRUb2dldGhlclxufSBmcm9tICcuLi9zaGFyZWQvbGF5ZXJzL2xpbmtlZCc7XG5pbXBvcnQgeyBpc0Jhc2VMYXllciwgaXNMYXllckdyb3VwLCBpc0xheWVySXRlbSB9IGZyb20gJy4uL3V0aWxzL2xheWVyLnV0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLWxheWVyLXZpZXdlci1ib3R0b20tYWN0aW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9sYXllci12aWV3ZXItYm90dG9tLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sYXllci12aWV3ZXItYm90dG9tLWFjdGlvbnMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nSWYsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdEJhZGdlTW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgTWF0U2xpZGVyTW9kdWxlLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlLFxuICAgIFBhbmVsQ29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW0xheWVyTGlzdFRvb2xTZXJ2aWNlLCBGb3JtRGlhbG9nU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgTGF5ZXJWaWV3ZXJCb3R0b21BY3Rpb25zQ29tcG9uZW50IHtcbiAgb3JkZXJhYmxlID0gdHJ1ZTtcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBtYXA6IE1hcEJhc2U7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGNvbnRyb2xsZXI6IExheWVyQ29udHJvbGxlcjtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgc2VhcmNoVGVybTogc3RyaW5nO1xuICBASW5wdXQoKSB2aWV3ZXJPcHRpb25zOiBMYXllclZpZXdlck9wdGlvbnM7XG5cbiAgQE91dHB1dCgpIGxheWVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGdldCBsYXllcnNGbGF0dGVuZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5sYXllcnNGbGF0dGVuZWQ7XG4gIH1cblxuICBnZXQgaGFzTXVsdGlwbGVTZWxlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5zZWxlY3RlZC5sZW5ndGggPiAxO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuc2VsZWN0ZWQ7XG4gIH1cblxuICBnZXQgb3BhY2l0eSgpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZCh0aGlzLnNlbGVjdGVkWzBdLm9wYWNpdHkgKiAxMDApO1xuICB9XG4gIHNldCBvcGFjaXR5KG9wYWNpdHk6IG51bWJlcikge1xuICAgIHRoaXMuc2VsZWN0ZWRbMF0ub3BhY2l0eSA9IG9wYWNpdHkgLyAxMDA7XG4gIH1cblxuICBnZXQgYWxsU2VsZWN0aW9uVmlzaWJpbGl0eUhpZGRlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLnNlbGVjdGVkLmV2ZXJ5KChsYXllcikgPT4gIWxheWVyLnZpc2libGUpO1xuICB9XG5cbiAgZ2V0IGlzU2VsZWN0aW9uUmFpc2FibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5zZWxlY3RlZC5ldmVyeSgobGF5ZXIpID0+IHRoaXMuaXNSYWlzYWJsZShsYXllcikpO1xuICB9XG4gIGdldCBpc1NlbGVjdGlvbkxvd2VyYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLnNlbGVjdGVkLmV2ZXJ5KChsYXllcikgPT4gdGhpcy5pc0xvd2VyYWJsZShsYXllcikpO1xuICB9XG5cbiAgZ2V0IGNhblJlbmFtZSgpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMudmlld2VyT3B0aW9ucy5ncm91cC5jYW5SZW5hbWUgfHwgdGhpcy5zZWxlY3RlZC5sZW5ndGggPiAxKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgbGF5ZXIgPSB0aGlzLnNlbGVjdGVkWzBdO1xuICAgIHJldHVybiBpc0xheWVyR3JvdXAobGF5ZXIpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsYXllckxpc3RUb29sU2VydmljZTogTGF5ZXJMaXN0VG9vbFNlcnZpY2UpIHt9XG5cbiAgaXNMYXllckl0ZW0gPSBpc0xheWVySXRlbTtcblxuICBoYW5kbGVSZW5hbWUoKTogdm9pZCB7XG4gICAgY29uc3QgbGF5ZXIgPSB0aGlzLnNlbGVjdGVkWzBdIGFzIExheWVyR3JvdXA7XG4gICAgdGhpcy5sYXllckxpc3RUb29sU2VydmljZS5yZW5hbWVHcm91cChsYXllcikuc3Vic2NyaWJlKChuYW1lKSA9PiB7XG4gICAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGF5ZXIudGl0bGUgPSBuYW1lO1xuICAgICAgdGhpcy5sYXllckNoYW5nZS5lbWl0KCk7XG4gICAgfSk7XG4gIH1cblxuICBpc0xheWVyc1JlbW92YWJsZShsYXllcnM6IEFueUxheWVyW10pOiBib29sZWFuIHtcbiAgICBpZiAobGF5ZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHRoaXMuaXNMYXllclJlbW92YWJsZShsYXllcnNbMF0pO1xuICAgIH1cbiAgICByZXR1cm4gbGF5ZXJzPy5ldmVyeSgobCkgPT4gdGhpcy5pc0xheWVyUmVtb3ZhYmxlKGwpKTtcbiAgfVxuXG4gIHJlbW92ZUxheWVycygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2xsZXIucmVtb3ZlKC4uLnRoaXMuc2VsZWN0ZWQpO1xuICAgIHRoaXMuY29udHJvbGxlci5jbGVhclNlbGVjdGlvbigpO1xuICB9XG5cbiAgaXNFeHRlbnRzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgbGV0IHZhbGlkID0gZmFsc2U7XG4gICAgY29uc3QgbGF5ZXJzRXh0ZW50ID0gb2xleHRlbnQuY3JlYXRlRW1wdHkoKTtcbiAgICBjb25zdCBtYXhMYXllclpvb21FeHRlbnQgPSB0aGlzLm1hcC52aWV3Q29udHJvbGxlci5tYXhMYXllclpvb21FeHRlbnQ7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zZWxlY3RlZC5zb21lKFxuICAgICAgICAobGF5ZXIpID0+XG4gICAgICAgICAgaXNMYXllckl0ZW0obGF5ZXIpICYmIGxheWVyLm9wdGlvbnMuc2hvd0J1dHRvblpvb21Ub0V4dGVudCA9PT0gZmFsc2VcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgIGNvbnN0IGxheWVyRXh0ZW50ID0gbGF5ZXIub3B0aW9ucy5leHRlbnQ7XG5cbiAgICAgIGlmIChsYXllckV4dGVudCAmJiAhbGF5ZXJFeHRlbnQuaW5jbHVkZXMoSW5maW5pdHkpKSB7XG4gICAgICAgIG9sZXh0ZW50LmV4dGVuZChsYXllcnNFeHRlbnQsIGxheWVyRXh0ZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW9sZXh0ZW50LmlzRW1wdHkobGF5ZXJzRXh0ZW50KSkge1xuICAgICAgaWYgKG1heExheWVyWm9vbUV4dGVudCkge1xuICAgICAgICB2YWxpZCA9IG9sZXh0ZW50LmNvbnRhaW5zRXh0ZW50KG1heExheWVyWm9vbUV4dGVudCwgbGF5ZXJzRXh0ZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbGlkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkO1xuICB9XG4gIHpvb21MYXllcnNFeHRlbnRzKCk6IHZvaWQge1xuICAgIGNvbnN0IGxheWVyc0V4dGVudCA9IG9sZXh0ZW50LmNyZWF0ZUVtcHR5KCk7XG5cbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgIGNvbnN0IGxheWVyRXh0ZW50ID0gbGF5ZXIub3B0aW9ucy5leHRlbnQ7XG5cbiAgICAgIGlmIChsYXllckV4dGVudCkge1xuICAgICAgICBvbGV4dGVudC5leHRlbmQobGF5ZXJzRXh0ZW50LCBsYXllckV4dGVudCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLnpvb21Ub0V4dGVudChcbiAgICAgIGxheWVyc0V4dGVudCBhcyBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXVxuICAgICk7XG4gIH1cblxuICByYWlzZVNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLm1hcC5sYXllckNvbnRyb2xsZXIucmFpc2UoLi4udGhpcy5zZWxlY3RlZCk7XG4gIH1cblxuICBsb3dlclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLm1hcC5sYXllckNvbnRyb2xsZXIubG93ZXIoLi4udGhpcy5zZWxlY3RlZCk7XG4gIH1cblxuICBjaGFuZ2VPcGFjaXR5KGV2ZW50OiBNYXRTbGlkZXJDaGFuZ2UpOiB2b2lkIHtcbiAgICB0aGlzLm9wYWNpdHkgPSBldmVudC52YWx1ZTtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdGlvblZpc2liaWxpdHkoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZC5mb3JFYWNoKChsYXllcikgPT4ge1xuICAgICAgbGF5ZXIudmlzaWJsZSA9ICFsYXllci52aXNpYmxlO1xuICAgIH0pO1xuICAgIHRoaXMubGF5ZXJDaGFuZ2UuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0xvd2VyYWJsZShsYXllcjogQW55TGF5ZXIpOiBib29sZWFuIHtcbiAgICBpZiAoaXNCYXNlTGF5ZXIobGF5ZXIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IHJlY2lwaWVudCA9IHRoaXMuZ2V0UmVjaXBpZW50T2ZWaXNpYmxlTGF5ZXIobGF5ZXIpO1xuICAgIGNvbnN0IGluZGV4ID0gcmVjaXBpZW50LmZpbmRJbmRleCgobGF5KSA9PiBsYXkuaWQgPT09IGxheWVyLmlkKTtcbiAgICBpZiAoaW5kZXggPj0gcmVjaXBpZW50Lmxlbmd0aCAtIDEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoaXNMYXllckxpbmtlZChsYXllcikpIHtcbiAgICAgIGNvbnN0IGxheWVyQmVsb3cgPSByZWNpcGllbnRbaW5kZXggKyAxXTtcbiAgICAgIHJldHVybiAhaXNMYXllckxpbmtlZFRvZ2V0aGVyKFxuICAgICAgICBsYXllcixcbiAgICAgICAgbGF5ZXJCZWxvdyxcbiAgICAgICAgdGhpcy5jb250cm9sbGVyLmxheWVyc0ZsYXR0ZW5lZCxcbiAgICAgICAgTGlua2VkUHJvcGVydGllcy5aSU5ERVhcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGlzUmFpc2FibGUobGF5ZXI6IEFueUxheWVyKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzQmFzZUxheWVyKGxheWVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCByZWNpcGllbnQgPSB0aGlzLmdldFJlY2lwaWVudE9mVmlzaWJsZUxheWVyKGxheWVyKTtcbiAgICBjb25zdCBpbmRleCA9IHJlY2lwaWVudC5maW5kSW5kZXgoKGxheSkgPT4gbGF5LmlkID09PSBsYXllci5pZCk7XG4gICAgaWYgKGluZGV4IDw9IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoaXNMYXllckxpbmtlZChsYXllcikpIHtcbiAgICAgIGNvbnN0IGxheWVyQWJvdmUgPSByZWNpcGllbnRbaW5kZXggLSAxXTtcbiAgICAgIHJldHVybiAhaXNMYXllckxpbmtlZFRvZ2V0aGVyKFxuICAgICAgICBsYXllcixcbiAgICAgICAgbGF5ZXJBYm92ZSxcbiAgICAgICAgdGhpcy5jb250cm9sbGVyLmxheWVyc0ZsYXR0ZW5lZCxcbiAgICAgICAgTGlua2VkUHJvcGVydGllcy5aSU5ERVhcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGdldFJlY2lwaWVudE9mVmlzaWJsZUxheWVyKGxheWVyOiBBbnlMYXllcik6IEFueUxheWVyW10ge1xuICAgIHJldHVybiBbLi4udGhpcy5jb250cm9sbGVyLmdldExheWVyUmVjaXBpZW50KGxheWVyKV0uZmlsdGVyKFxuICAgICAgKGxheWVyKSA9PiBsYXllci5zaG93SW5MYXllckxpc3RcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0xheWVyUmVtb3ZhYmxlKGxheWVyOiBBbnlMYXllcik6IGJvb2xlYW4ge1xuICAgIGlmIChpc0xheWVyR3JvdXAobGF5ZXIpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGxheWVyLm9wdGlvbnMucmVtb3ZhYmxlICE9PSBmYWxzZTtcbiAgfVxufVxuIiwiPGlnby1wYW5lbFxuICBjbGFzcz1cImlnby1sYXllci1hY3Rpb25zLWNvbnRhaW5lclwiXG4gIFt0aXRsZV09XCJcbiAgICBoYXNNdWx0aXBsZVNlbGVjdGlvblxuICAgICAgPyAoJ2lnby5nZW8ubGF5ZXIudG9vbHMnIHwgdHJhbnNsYXRlKVxuICAgICAgOiBzZWxlY3RlZFswXS50aXRsZVxuICBcIlxuPlxuICA8ZGl2IGNsYXNzPVwiaWdvLWxheWVyLWJ1dHRvbi1ncm91cFwiPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiaXNMYXllcnNSZW1vdmFibGUoc2VsZWN0ZWQpXCJcbiAgICAgIGNsYXNzPVwiZGVsZXRlLWJ1dHRvblwiXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIGNvbG9yPVwid2FyblwiXG4gICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICBbbWF0VG9vbHRpcF09XCJcbiAgICAgICAgKGhhc011bHRpcGxlU2VsZWN0aW9uXG4gICAgICAgICAgPyBpc0xheWVyc1JlbW92YWJsZShzZWxlY3RlZClcbiAgICAgICAgICAgID8gKCdpZ28uZ2VvLmxheWVyLnJlbW92ZVNlbGVjdGVkTGF5ZXJzJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgIDogKCdpZ28uZ2VvLmxheWVyLnJlbW92ZVNlbGVjdGVkTGF5ZXJzUmVzdHJpY3Rpb24nIHwgdHJhbnNsYXRlKVxuICAgICAgICAgIDogJ2lnby5nZW8ubGF5ZXIucmVtb3ZlTGF5ZXInXG4gICAgICAgICkgfCB0cmFuc2xhdGVcbiAgICAgIFwiXG4gICAgICAoY2xpY2spPVwicmVtb3ZlTGF5ZXJzKClcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvblxuICAgICAgICBhcmlhLWhpZGRlbj1cImZhbHNlXCJcbiAgICAgICAgW21hdEJhZGdlXT1cIichJ1wiXG4gICAgICAgIG1hdEJhZGdlQ29sb3I9XCJ3YXJuXCJcbiAgICAgICAgbWF0QmFkZ2VTaXplPVwibWVkaXVtXCJcbiAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cIiFoYXNNdWx0aXBsZVNlbGVjdGlvbiB8fCBpc0xheWVyc1JlbW92YWJsZShzZWxlY3RlZClcIlxuICAgICAgICA+ZGVsZXRlPC9tYXQtaWNvblxuICAgICAgPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJoYXNNdWx0aXBsZVNlbGVjdGlvblwiXG4gICAgICBjbGFzcz1cImV5ZS1idXR0b25cIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgW2Rpc2FibGVkXT1cInNlbGVjdGVkLmxlbmd0aCA9PT0gMFwiXG4gICAgICBbbWF0VG9vbHRpcF09XCJcbiAgICAgICAgYWxsU2VsZWN0aW9uVmlzaWJpbGl0eUhpZGRlblxuICAgICAgICAgID8gKCdpZ28uZ2VvLmxheWVyLnNob3dTZWxlY3RlZExheWVycycgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgOiAoJ2lnby5nZW8ubGF5ZXIuaGlkZVNlbGVjdGVkTGF5ZXJzJyB8IHRyYW5zbGF0ZSlcbiAgICAgIFwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlU2VsZWN0aW9uVmlzaWJpbGl0eSgpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+e3tcbiAgICAgICAgYWxsU2VsZWN0aW9uVmlzaWJpbGl0eUhpZGRlbiA/ICd2aXNpYmlsaXR5X29mZicgOiAndmlzaWJpbGl0eSdcbiAgICAgIH19PC9tYXQtaWNvbj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiZG93bi1idXR0b25cIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgW21hdFRvb2x0aXBdPVwiXG4gICAgICAgIHNlYXJjaFRlcm1cbiAgICAgICAgICA/ICgnaWdvLmdlby5sYXllci5maWx0ZXJMb3dlckxheWVyJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICA6ICgnaWdvLmdlby5sYXllci5sb3dlckxheWVyJyB8IHRyYW5zbGF0ZSlcbiAgICAgIFwiXG4gICAgICBbZGlzYWJsZWRdPVwiIWlzU2VsZWN0aW9uTG93ZXJhYmxlXCJcbiAgICAgIChjbGljayk9XCJsb3dlclNlbGVjdGlvbigpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb25cbiAgICAgICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXG4gICAgICAgIFttYXRCYWRnZV09XCJzZWFyY2hUZXJtID8gJyEnIDogJydcIlxuICAgICAgICBtYXRCYWRnZUNvbG9yPVwid2FyblwiXG4gICAgICAgIG1hdEJhZGdlU2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCIhaXNTZWxlY3Rpb25Mb3dlcmFibGVcIlxuICAgICAgICA+YXJyb3dfZG93bndhcmQ8L21hdC1pY29uXG4gICAgICA+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cInVwLWJ1dHRvblwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICBbbWF0VG9vbHRpcF09XCJcbiAgICAgICAgc2VhcmNoVGVybVxuICAgICAgICAgID8gKCdpZ28uZ2VvLmxheWVyLmZpbHRlclJhaXNlTGF5ZXInIHwgdHJhbnNsYXRlKVxuICAgICAgICAgIDogKCdpZ28uZ2VvLmxheWVyLnJhaXNlTGF5ZXInIHwgdHJhbnNsYXRlKVxuICAgICAgXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhaXNTZWxlY3Rpb25SYWlzYWJsZVwiXG4gICAgICAoY2xpY2spPVwicmFpc2VTZWxlY3Rpb24oKVwiXG4gICAgPlxuICAgICAgPG1hdC1pY29uXG4gICAgICAgIGFyaWEtaGlkZGVuPVwiZmFsc2VcIlxuICAgICAgICBbbWF0QmFkZ2VdPVwic2VhcmNoVGVybSA/ICchJyA6ICcnXCJcbiAgICAgICAgbWF0QmFkZ2VDb2xvcj1cIndhcm5cIlxuICAgICAgICBtYXRCYWRnZVNpemU9XCJtZWRpdW1cIlxuICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiIWlzU2VsZWN0aW9uUmFpc2FibGVcIlxuICAgICAgICA+YXJyb3dfdXB3YXJkPC9tYXQtaWNvblxuICAgICAgPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2xsZXIuc2VsZWN0ZWQubGVuZ3RoID09PSAxXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwib3BhY2l0eS1idXR0b25cIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJvcGFjaXR5TWVudVwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmxheWVyLm9wYWNpdHknIHwgdHJhbnNsYXRlXCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXG4gICAgICAgICAgW21hdEJhZGdlXT1cIm9wYWNpdHkgPT09IDEwMCA/IG51bGwgOiBvcGFjaXR5XCJcbiAgICAgICAgICBtYXRCYWRnZUNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgbWF0QmFkZ2VTaXplPVwibWVkaXVtXCJcbiAgICAgICAgICA+b3BhY2l0eTwvbWF0LWljb25cbiAgICAgICAgPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxtYXQtbWVudSAjb3BhY2l0eU1lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJwYW5lbC1vcGFjaXR5LW1lbnVcIj5cbiAgICAgICAgPG1hdC1zbGlkZXJcbiAgICAgICAgICBpZD1cIm9wYWNpdHktc2xpZGVyXCJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIGRpc2NyZXRlXG4gICAgICAgICAgc3RlcD1cIjVcIlxuICAgICAgICAgIFttaW5dPVwiMFwiXG4gICAgICAgICAgW21heF09XCIxMDBcIlxuICAgICAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmxheWVyLm9wYWNpdHknIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgICAgICNuZ1NsaWRlclxuICAgICAgICAgID48aW5wdXRcbiAgICAgICAgICAgIG1hdFNsaWRlclRodW1iXG4gICAgICAgICAgICBbdmFsdWVdPVwib3BhY2l0eVwiXG4gICAgICAgICAgICAoaW5wdXQpPVwiXG4gICAgICAgICAgICAgIGNoYW5nZU9wYWNpdHkoe1xuICAgICAgICAgICAgICAgIHNvdXJjZTogbmdTbGlkZXJUaHVtYixcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IG5nU2xpZGVyLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBuZ1NsaWRlclRodW1iLnZhbHVlXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgI25nU2xpZGVyVGh1bWI9XCJtYXRTbGlkZXJUaHVtYlwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9tYXQtc2xpZGVyPlxuICAgICAgPC9tYXQtbWVudT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiaXNFeHRlbnRzVmFsaWQoKVwiXG4gICAgICBjbGFzcz1cInpvb21MYXllci1idXR0b25cIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgW21hdFRvb2x0aXBdPVwiXG4gICAgICAgIChoYXNNdWx0aXBsZVNlbGVjdGlvblxuICAgICAgICAgID8gJ2lnby5nZW8ubGF5ZXIuem9vbUxheWVycydcbiAgICAgICAgICA6ICdpZ28uZ2VvLmxheWVyLnpvb21MYXllcidcbiAgICAgICAgKSB8IHRyYW5zbGF0ZVxuICAgICAgXCJcbiAgICAgIChjbGljayk9XCJ6b29tTGF5ZXJzRXh0ZW50cygpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24gbWF0QmFkZ2VDb2xvcj1cInByaW1hcnlcIiBtYXRCYWRnZVNpemU9XCJtZWRpdW1cIlxuICAgICAgICA+ZnJhbWVfaW5zcGVjdDwvbWF0LWljb25cbiAgICAgID5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiY2FuUmVuYW1lXCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgIFttYXRUb29sdGlwXT1cIidpZ28uZ2VvLmxheWVyLmdyb3VwLnJlbmFtZScgfCB0cmFuc2xhdGVcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZVJlbmFtZSgpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb24+ZWRpdDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9pZ28tcGFuZWw+XG4iXX0=
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItdmlld2VyLWJvdHRvbS1hY3Rpb25zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2xheWVyL2xheWVyLXZpZXdlci1ib3R0b20tYWN0aW9ucy9sYXllci12aWV3ZXItYm90dG9tLWFjdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvbGF5ZXItdmlld2VyLWJvdHRvbS1hY3Rpb25zL2xheWVyLXZpZXdlci1ib3R0b20tYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFtQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFeEQsT0FBTyxLQUFLLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFHdEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTdELE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLHFCQUFxQixFQUN0QixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7O0FBcUI5RSxNQUFNLE9BQU8saUNBQWlDO0lBaUR4QjtJQWhEcEIsU0FBUyxHQUFHLElBQUksQ0FBQztJQUVVLEdBQUcsQ0FBVTtJQUNiLFVBQVUsQ0FBa0I7SUFDNUIsVUFBVSxDQUFTO0lBQ3JDLGFBQWEsQ0FBcUI7SUFFakMsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFFM0MsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUM7SUFDekMsQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxPQUFlO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLE9BQU8sR0FBRyxHQUFHLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksNEJBQTRCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwRSxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxZQUFvQixvQkFBMEM7UUFBMUMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtJQUFHLENBQUM7SUFFbEUsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUUxQixZQUFZO1FBQ1YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQWUsQ0FBQztRQUM3QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzlELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDVixPQUFPO1lBQ1QsQ0FBQztZQUNELEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsTUFBa0I7UUFDbEMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxPQUFPLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNsQixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDNUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQztRQUN0RSxJQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixDQUFDLEtBQUssRUFBRSxFQUFFLENBQ1IsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEtBQUssS0FBSyxDQUN2RSxFQUNELENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUV6QyxJQUFJLFdBQVcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDbkQsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDN0MsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ3BDLElBQUksa0JBQWtCLEVBQUUsQ0FBQztnQkFDdkIsS0FBSyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDcEUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELGlCQUFpQjtRQUNmLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUU1QyxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUV6QyxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNoQixRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQztZQUM3QyxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FDbEMsWUFBZ0QsQ0FDakQsQ0FBQztJQUNKLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxhQUFhLENBQUMsS0FBc0I7UUFDbEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRCx5QkFBeUIsQ0FDdkIsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQ3RCLFVBQVUsR0FBRyxJQUFJLENBQUMsNEJBQTRCO1FBRTlDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN2QixLQUFLLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztZQUMzQixJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUM3RCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBZTtRQUNqQyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoRSxJQUFJLEtBQUssSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN4QyxPQUFPLENBQUMscUJBQXFCLENBQzNCLEtBQUssRUFDTCxVQUFVLEVBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQy9CLGdCQUFnQixDQUFDLE1BQU0sQ0FDeEIsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxVQUFVLENBQUMsS0FBZTtRQUNoQyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoRSxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNmLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN4QyxPQUFPLENBQUMscUJBQXFCLENBQzNCLEtBQUssRUFDTCxVQUFVLEVBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQy9CLGdCQUFnQixDQUFDLE1BQU0sQ0FDeEIsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTywwQkFBMEIsQ0FBQyxLQUFlO1FBQ2hELE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQ3pELENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUNqQyxDQUFDO0lBQ0osQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQWU7UUFDdEMsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQztJQUMzQyxDQUFDO3dHQTNNVSxpQ0FBaUM7NEZBQWpDLGlDQUFpQyxtT0FGakMsQ0FBQyxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQywwQkM1Q3RELDR4S0EyTEEsazZCRDFKSSxJQUFJLDRGQUVKLGVBQWUsMklBQ2YsZ0JBQWdCLDRUQUNoQixhQUFhLG1MQUNiLGNBQWMsMlBBQ2QsYUFBYSx5bUJBQ2IsZUFBZSxrYUFDZixpQkFBaUIsNEZBQ2pCLGNBQWM7OzRGQUlMLGlDQUFpQztrQkFuQjdDLFNBQVM7K0JBQ0UsaUNBQWlDLGNBRy9CLElBQUksV0FDUDt3QkFDUCxJQUFJO3dCQUNKLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixjQUFjO3FCQUNmLGFBQ1UsQ0FBQyxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQzt5RkFLekIsR0FBRztzQkFBN0IsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ0UsVUFBVTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ0UsVUFBVTtzQkFBcEMsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ2hCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYmFkZ2UnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1hdFNsaWRlckNoYW5nZSwgTWF0U2xpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGVyJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcblxuaW1wb3J0IHsgRm9ybURpYWxvZ1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb21tb24vZm9ybSc7XG5pbXBvcnQgeyBQYW5lbENvbXBvbmVudCB9IGZyb20gJ0BpZ28yL2NvbW1vbi9wYW5lbCc7XG5pbXBvcnQgeyBJZ29MYW5ndWFnZU1vZHVsZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuXG5pbXBvcnQgKiBhcyBvbGV4dGVudCBmcm9tICdvbC9leHRlbnQnO1xuXG5pbXBvcnQgdHlwZSB7IE1hcEJhc2UgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcC5hYnN0cmFjdCc7XG5pbXBvcnQgeyBMYXllckxpc3RUb29sU2VydmljZSB9IGZyb20gJy4uL2xheWVyLWxpc3QtdG9vbCc7XG5pbXBvcnQgeyBMYXllclZpZXdlck9wdGlvbnMgfSBmcm9tICcuLi9sYXllci12aWV3ZXIvbGF5ZXItdmlld2VyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBMYXllckNvbnRyb2xsZXIgfSBmcm9tICcuLi9zaGFyZWQvbGF5ZXItY29udHJvbGxlcic7XG5pbXBvcnQgdHlwZSB7IEFueUxheWVyLCBMYXllckdyb3VwIH0gZnJvbSAnLi4vc2hhcmVkL2xheWVycyc7XG5pbXBvcnQge1xuICBMaW5rZWRQcm9wZXJ0aWVzLFxuICBpc0xheWVyTGlua2VkLFxuICBpc0xheWVyTGlua2VkVG9nZXRoZXJcbn0gZnJvbSAnLi4vc2hhcmVkL2xheWVycy9saW5rZWQnO1xuaW1wb3J0IHsgaXNCYXNlTGF5ZXIsIGlzTGF5ZXJHcm91cCwgaXNMYXllckl0ZW0gfSBmcm9tICcuLi91dGlscy9sYXllci51dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1sYXllci12aWV3ZXItYm90dG9tLWFjdGlvbnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGF5ZXItdmlld2VyLWJvdHRvbS1hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGF5ZXItdmlld2VyLWJvdHRvbS1hY3Rpb25zLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0lmLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRCYWRnZU1vZHVsZSxcbiAgICBNYXRNZW51TW9kdWxlLFxuICAgIE1hdFNsaWRlck1vZHVsZSxcbiAgICBJZ29MYW5ndWFnZU1vZHVsZSxcbiAgICBQYW5lbENvbXBvbmVudFxuICBdLFxuICBwcm92aWRlcnM6IFtMYXllckxpc3RUb29sU2VydmljZSwgRm9ybURpYWxvZ1NlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIExheWVyVmlld2VyQm90dG9tQWN0aW9uc0NvbXBvbmVudCB7XG4gIG9yZGVyYWJsZSA9IHRydWU7XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgbWFwOiBNYXBCYXNlO1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjb250cm9sbGVyOiBMYXllckNvbnRyb2xsZXI7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHNlYXJjaFRlcm06IHN0cmluZztcbiAgQElucHV0KCkgdmlld2VyT3B0aW9uczogTGF5ZXJWaWV3ZXJPcHRpb25zO1xuXG4gIEBPdXRwdXQoKSBsYXllckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBnZXQgbGF5ZXJzRmxhdHRlbmVkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIubGF5ZXJzRmxhdHRlbmVkO1xuICB9XG5cbiAgZ2V0IGhhc011bHRpcGxlU2VsZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuc2VsZWN0ZWQubGVuZ3RoID4gMTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLnNlbGVjdGVkO1xuICB9XG5cbiAgZ2V0IG9wYWNpdHkoKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQodGhpcy5zZWxlY3RlZFswXS5vcGFjaXR5ICogMTAwKTtcbiAgfVxuICBzZXQgb3BhY2l0eShvcGFjaXR5OiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdGVkWzBdLm9wYWNpdHkgPSBvcGFjaXR5IC8gMTAwO1xuICB9XG5cbiAgZ2V0IGFsbFNlbGVjdGlvblZpc2liaWxpdHlIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5zZWxlY3RlZC5ldmVyeSgobGF5ZXIpID0+ICFsYXllci52aXNpYmxlKTtcbiAgfVxuXG4gIGdldCBpc1NlbGVjdGlvblJhaXNhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xsZXIuc2VsZWN0ZWQuZXZlcnkoKGxheWVyKSA9PiB0aGlzLmlzUmFpc2FibGUobGF5ZXIpKTtcbiAgfVxuICBnZXQgaXNTZWxlY3Rpb25Mb3dlcmFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5zZWxlY3RlZC5ldmVyeSgobGF5ZXIpID0+IHRoaXMuaXNMb3dlcmFibGUobGF5ZXIpKTtcbiAgfVxuXG4gIGdldCBjYW5SZW5hbWUoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnZpZXdlck9wdGlvbnMuZ3JvdXAuY2FuUmVuYW1lIHx8IHRoaXMuc2VsZWN0ZWQubGVuZ3RoID4gMSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGxheWVyID0gdGhpcy5zZWxlY3RlZFswXTtcbiAgICByZXR1cm4gaXNMYXllckdyb3VwKGxheWVyKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbGF5ZXJMaXN0VG9vbFNlcnZpY2U6IExheWVyTGlzdFRvb2xTZXJ2aWNlKSB7fVxuXG4gIGlzTGF5ZXJJdGVtID0gaXNMYXllckl0ZW07XG5cbiAgaGFuZGxlUmVuYW1lKCk6IHZvaWQge1xuICAgIGNvbnN0IGxheWVyID0gdGhpcy5zZWxlY3RlZFswXSBhcyBMYXllckdyb3VwO1xuICAgIHRoaXMubGF5ZXJMaXN0VG9vbFNlcnZpY2UucmVuYW1lR3JvdXAobGF5ZXIpLnN1YnNjcmliZSgobmFtZSkgPT4ge1xuICAgICAgaWYgKCFuYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxheWVyLnRpdGxlID0gbmFtZTtcbiAgICAgIHRoaXMubGF5ZXJDaGFuZ2UuZW1pdCgpO1xuICAgIH0pO1xuICB9XG5cbiAgaXNMYXllcnNSZW1vdmFibGUobGF5ZXJzOiBBbnlMYXllcltdKTogYm9vbGVhbiB7XG4gICAgaWYgKGxheWVycy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiB0aGlzLmlzTGF5ZXJSZW1vdmFibGUobGF5ZXJzWzBdKTtcbiAgICB9XG4gICAgcmV0dXJuIGxheWVycz8uZXZlcnkoKGwpID0+IHRoaXMuaXNMYXllclJlbW92YWJsZShsKSk7XG4gIH1cblxuICByZW1vdmVMYXllcnMoKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sbGVyLnJlbW92ZSguLi50aGlzLnNlbGVjdGVkKTtcbiAgICB0aGlzLmNvbnRyb2xsZXIuY2xlYXJTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIGlzRXh0ZW50c1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIGxldCB2YWxpZCA9IGZhbHNlO1xuICAgIGNvbnN0IGxheWVyc0V4dGVudCA9IG9sZXh0ZW50LmNyZWF0ZUVtcHR5KCk7XG4gICAgY29uc3QgbWF4TGF5ZXJab29tRXh0ZW50ID0gdGhpcy5tYXAudmlld0NvbnRyb2xsZXIubWF4TGF5ZXJab29tRXh0ZW50O1xuICAgIGlmIChcbiAgICAgIHRoaXMuc2VsZWN0ZWQuc29tZShcbiAgICAgICAgKGxheWVyKSA9PlxuICAgICAgICAgIGlzTGF5ZXJJdGVtKGxheWVyKSAmJiBsYXllci5vcHRpb25zLnNob3dCdXR0b25ab29tVG9FeHRlbnQgPT09IGZhbHNlXG4gICAgICApXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBsYXllciBvZiB0aGlzLnNlbGVjdGVkKSB7XG4gICAgICBjb25zdCBsYXllckV4dGVudCA9IGxheWVyLm9wdGlvbnMuZXh0ZW50O1xuXG4gICAgICBpZiAobGF5ZXJFeHRlbnQgJiYgIWxheWVyRXh0ZW50LmluY2x1ZGVzKEluZmluaXR5KSkge1xuICAgICAgICBvbGV4dGVudC5leHRlbmQobGF5ZXJzRXh0ZW50LCBsYXllckV4dGVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFvbGV4dGVudC5pc0VtcHR5KGxheWVyc0V4dGVudCkpIHtcbiAgICAgIGlmIChtYXhMYXllclpvb21FeHRlbnQpIHtcbiAgICAgICAgdmFsaWQgPSBvbGV4dGVudC5jb250YWluc0V4dGVudChtYXhMYXllclpvb21FeHRlbnQsIGxheWVyc0V4dGVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWxpZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWxpZDtcbiAgfVxuICB6b29tTGF5ZXJzRXh0ZW50cygpOiB2b2lkIHtcbiAgICBjb25zdCBsYXllcnNFeHRlbnQgPSBvbGV4dGVudC5jcmVhdGVFbXB0eSgpO1xuXG4gICAgZm9yIChjb25zdCBsYXllciBvZiB0aGlzLnNlbGVjdGVkKSB7XG4gICAgICBjb25zdCBsYXllckV4dGVudCA9IGxheWVyLm9wdGlvbnMuZXh0ZW50O1xuXG4gICAgICBpZiAobGF5ZXJFeHRlbnQpIHtcbiAgICAgICAgb2xleHRlbnQuZXh0ZW5kKGxheWVyc0V4dGVudCwgbGF5ZXJFeHRlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm1hcC52aWV3Q29udHJvbGxlci56b29tVG9FeHRlbnQoXG4gICAgICBsYXllcnNFeHRlbnQgYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl1cbiAgICApO1xuICB9XG5cbiAgcmFpc2VTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5tYXAubGF5ZXJDb250cm9sbGVyLnJhaXNlKC4uLnRoaXMuc2VsZWN0ZWQpO1xuICB9XG5cbiAgbG93ZXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5tYXAubGF5ZXJDb250cm9sbGVyLmxvd2VyKC4uLnRoaXMuc2VsZWN0ZWQpO1xuICB9XG5cbiAgY2hhbmdlT3BhY2l0eShldmVudDogTWF0U2xpZGVyQ2hhbmdlKTogdm9pZCB7XG4gICAgdGhpcy5vcGFjaXR5ID0gZXZlbnQudmFsdWU7XG4gIH1cblxuICB0b2dnbGVTZWxlY3Rpb25WaXNpYmlsaXR5KFxuICAgIGxheWVycyA9IHRoaXMuc2VsZWN0ZWQsXG4gICAgdmlzaWJpbGl0eSA9IHRoaXMuYWxsU2VsZWN0aW9uVmlzaWJpbGl0eUhpZGRlblxuICApOiB2b2lkIHtcbiAgICBsYXllcnMuZm9yRWFjaCgobGF5ZXIpID0+IHtcbiAgICAgIGxheWVyLnZpc2libGUgPSB2aXNpYmlsaXR5O1xuICAgICAgaWYgKGlzTGF5ZXJHcm91cChsYXllcikpIHtcbiAgICAgICAgdGhpcy50b2dnbGVTZWxlY3Rpb25WaXNpYmlsaXR5KGxheWVyLmNoaWxkcmVuLCB2aXNpYmlsaXR5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmxheWVyQ2hhbmdlLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNMb3dlcmFibGUobGF5ZXI6IEFueUxheWVyKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzQmFzZUxheWVyKGxheWVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCByZWNpcGllbnQgPSB0aGlzLmdldFJlY2lwaWVudE9mVmlzaWJsZUxheWVyKGxheWVyKTtcbiAgICBjb25zdCBpbmRleCA9IHJlY2lwaWVudC5maW5kSW5kZXgoKGxheSkgPT4gbGF5LmlkID09PSBsYXllci5pZCk7XG4gICAgaWYgKGluZGV4ID49IHJlY2lwaWVudC5sZW5ndGggLSAxKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGlzTGF5ZXJMaW5rZWQobGF5ZXIpKSB7XG4gICAgICBjb25zdCBsYXllckJlbG93ID0gcmVjaXBpZW50W2luZGV4ICsgMV07XG4gICAgICByZXR1cm4gIWlzTGF5ZXJMaW5rZWRUb2dldGhlcihcbiAgICAgICAgbGF5ZXIsXG4gICAgICAgIGxheWVyQmVsb3csXG4gICAgICAgIHRoaXMuY29udHJvbGxlci5sYXllcnNGbGF0dGVuZWQsXG4gICAgICAgIExpbmtlZFByb3BlcnRpZXMuWklOREVYXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1JhaXNhYmxlKGxheWVyOiBBbnlMYXllcik6IGJvb2xlYW4ge1xuICAgIGlmIChpc0Jhc2VMYXllcihsYXllcikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgcmVjaXBpZW50ID0gdGhpcy5nZXRSZWNpcGllbnRPZlZpc2libGVMYXllcihsYXllcik7XG4gICAgY29uc3QgaW5kZXggPSByZWNpcGllbnQuZmluZEluZGV4KChsYXkpID0+IGxheS5pZCA9PT0gbGF5ZXIuaWQpO1xuICAgIGlmIChpbmRleCA8PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGlzTGF5ZXJMaW5rZWQobGF5ZXIpKSB7XG4gICAgICBjb25zdCBsYXllckFib3ZlID0gcmVjaXBpZW50W2luZGV4IC0gMV07XG4gICAgICByZXR1cm4gIWlzTGF5ZXJMaW5rZWRUb2dldGhlcihcbiAgICAgICAgbGF5ZXIsXG4gICAgICAgIGxheWVyQWJvdmUsXG4gICAgICAgIHRoaXMuY29udHJvbGxlci5sYXllcnNGbGF0dGVuZWQsXG4gICAgICAgIExpbmtlZFByb3BlcnRpZXMuWklOREVYXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZWNpcGllbnRPZlZpc2libGVMYXllcihsYXllcjogQW55TGF5ZXIpOiBBbnlMYXllcltdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuY29udHJvbGxlci5nZXRMYXllclJlY2lwaWVudChsYXllcildLmZpbHRlcihcbiAgICAgIChsYXllcikgPT4gbGF5ZXIuc2hvd0luTGF5ZXJMaXN0XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNMYXllclJlbW92YWJsZShsYXllcjogQW55TGF5ZXIpOiBib29sZWFuIHtcbiAgICBpZiAoaXNMYXllckdyb3VwKGxheWVyKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBsYXllci5vcHRpb25zLnJlbW92YWJsZSAhPT0gZmFsc2U7XG4gIH1cbn1cbiIsIjxpZ28tcGFuZWxcbiAgY2xhc3M9XCJpZ28tbGF5ZXItYWN0aW9ucy1jb250YWluZXJcIlxuICBbdGl0bGVdPVwiXG4gICAgaGFzTXVsdGlwbGVTZWxlY3Rpb25cbiAgICAgID8gKCdpZ28uZ2VvLmxheWVyLnRvb2xzJyB8IHRyYW5zbGF0ZSlcbiAgICAgIDogc2VsZWN0ZWRbMF0udGl0bGVcbiAgXCJcbj5cbiAgPGRpdiBjbGFzcz1cImlnby1sYXllci1idXR0b24tZ3JvdXBcIj5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cImlzTGF5ZXJzUmVtb3ZhYmxlKHNlbGVjdGVkKVwiXG4gICAgICBjbGFzcz1cImRlbGV0ZS1idXR0b25cIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgW21hdFRvb2x0aXBdPVwiXG4gICAgICAgIChoYXNNdWx0aXBsZVNlbGVjdGlvblxuICAgICAgICAgID8gaXNMYXllcnNSZW1vdmFibGUoc2VsZWN0ZWQpXG4gICAgICAgICAgICA/ICgnaWdvLmdlby5sYXllci5yZW1vdmVTZWxlY3RlZExheWVycycgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICA6ICgnaWdvLmdlby5sYXllci5yZW1vdmVTZWxlY3RlZExheWVyc1Jlc3RyaWN0aW9uJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICA6ICdpZ28uZ2VvLmxheWVyLnJlbW92ZUxheWVyJ1xuICAgICAgICApIHwgdHJhbnNsYXRlXG4gICAgICBcIlxuICAgICAgKGNsaWNrKT1cInJlbW92ZUxheWVycygpXCJcbiAgICA+XG4gICAgICA8bWF0LWljb25cbiAgICAgICAgYXJpYS1oaWRkZW49XCJmYWxzZVwiXG4gICAgICAgIFttYXRCYWRnZV09XCInISdcIlxuICAgICAgICBtYXRCYWRnZUNvbG9yPVwid2FyblwiXG4gICAgICAgIG1hdEJhZGdlU2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgIFttYXRCYWRnZUhpZGRlbl09XCIhaGFzTXVsdGlwbGVTZWxlY3Rpb24gfHwgaXNMYXllcnNSZW1vdmFibGUoc2VsZWN0ZWQpXCJcbiAgICAgICAgPmRlbGV0ZTwvbWF0LWljb25cbiAgICAgID5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiaGFzTXVsdGlwbGVTZWxlY3Rpb25cIlxuICAgICAgY2xhc3M9XCJleWUtYnV0dG9uXCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgIFtkaXNhYmxlZF09XCJzZWxlY3RlZC5sZW5ndGggPT09IDBcIlxuICAgICAgW21hdFRvb2x0aXBdPVwiXG4gICAgICAgIGFsbFNlbGVjdGlvblZpc2liaWxpdHlIaWRkZW5cbiAgICAgICAgICA/ICgnaWdvLmdlby5sYXllci5zaG93U2VsZWN0ZWRMYXllcnMnIHwgdHJhbnNsYXRlKVxuICAgICAgICAgIDogKCdpZ28uZ2VvLmxheWVyLmhpZGVTZWxlY3RlZExheWVycycgfCB0cmFuc2xhdGUpXG4gICAgICBcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlbGVjdGlvblZpc2liaWxpdHkoKVwiXG4gICAgPlxuICAgICAgPG1hdC1pY29uPnt7XG4gICAgICAgIGFsbFNlbGVjdGlvblZpc2liaWxpdHlIaWRkZW4gPyAndmlzaWJpbGl0eV9vZmYnIDogJ3Zpc2liaWxpdHknXG4gICAgICB9fTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImRvd24tYnV0dG9uXCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgIFttYXRUb29sdGlwXT1cIlxuICAgICAgICBzZWFyY2hUZXJtXG4gICAgICAgICAgPyAoJ2lnby5nZW8ubGF5ZXIuZmlsdGVyTG93ZXJMYXllcicgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgOiAoJ2lnby5nZW8ubGF5ZXIubG93ZXJMYXllcicgfCB0cmFuc2xhdGUpXG4gICAgICBcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFpc1NlbGVjdGlvbkxvd2VyYWJsZVwiXG4gICAgICAoY2xpY2spPVwibG93ZXJTZWxlY3Rpb24oKVwiXG4gICAgPlxuICAgICAgPG1hdC1pY29uXG4gICAgICAgIGFyaWEtaGlkZGVuPVwiZmFsc2VcIlxuICAgICAgICBbbWF0QmFkZ2VdPVwic2VhcmNoVGVybSA/ICchJyA6ICcnXCJcbiAgICAgICAgbWF0QmFkZ2VDb2xvcj1cIndhcm5cIlxuICAgICAgICBtYXRCYWRnZVNpemU9XCJtZWRpdW1cIlxuICAgICAgICBbbWF0QmFkZ2VIaWRkZW5dPVwiIWlzU2VsZWN0aW9uTG93ZXJhYmxlXCJcbiAgICAgICAgPmFycm93X2Rvd253YXJkPC9tYXQtaWNvblxuICAgICAgPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJ1cC1idXR0b25cIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgW21hdFRvb2x0aXBdPVwiXG4gICAgICAgIHNlYXJjaFRlcm1cbiAgICAgICAgICA/ICgnaWdvLmdlby5sYXllci5maWx0ZXJSYWlzZUxheWVyJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICA6ICgnaWdvLmdlby5sYXllci5yYWlzZUxheWVyJyB8IHRyYW5zbGF0ZSlcbiAgICAgIFwiXG4gICAgICBbZGlzYWJsZWRdPVwiIWlzU2VsZWN0aW9uUmFpc2FibGVcIlxuICAgICAgKGNsaWNrKT1cInJhaXNlU2VsZWN0aW9uKClcIlxuICAgID5cbiAgICAgIDxtYXQtaWNvblxuICAgICAgICBhcmlhLWhpZGRlbj1cImZhbHNlXCJcbiAgICAgICAgW21hdEJhZGdlXT1cInNlYXJjaFRlcm0gPyAnIScgOiAnJ1wiXG4gICAgICAgIG1hdEJhZGdlQ29sb3I9XCJ3YXJuXCJcbiAgICAgICAgbWF0QmFkZ2VTaXplPVwibWVkaXVtXCJcbiAgICAgICAgW21hdEJhZGdlSGlkZGVuXT1cIiFpc1NlbGVjdGlvblJhaXNhYmxlXCJcbiAgICAgICAgPmFycm93X3Vwd2FyZDwvbWF0LWljb25cbiAgICAgID5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sbGVyLnNlbGVjdGVkLmxlbmd0aCA9PT0gMVwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cIm9wYWNpdHktYnV0dG9uXCJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXG4gICAgICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwib3BhY2l0eU1lbnVcIlxuICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5sYXllci5vcGFjaXR5JyB8IHRyYW5zbGF0ZVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwiZmFsc2VcIlxuICAgICAgICAgIFttYXRCYWRnZV09XCJvcGFjaXR5ID09PSAxMDAgPyBudWxsIDogb3BhY2l0eVwiXG4gICAgICAgICAgbWF0QmFkZ2VDb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIG1hdEJhZGdlU2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgPm9wYWNpdHk8L21hdC1pY29uXG4gICAgICAgID5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8bWF0LW1lbnUgI29wYWNpdHlNZW51PVwibWF0TWVudVwiIGNsYXNzPVwicGFuZWwtb3BhY2l0eS1tZW51XCI+XG4gICAgICAgIDxtYXQtc2xpZGVyXG4gICAgICAgICAgaWQ9XCJvcGFjaXR5LXNsaWRlclwiXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICBkaXNjcmV0ZVxuICAgICAgICAgIHN0ZXA9XCI1XCJcbiAgICAgICAgICBbbWluXT1cIjBcIlxuICAgICAgICAgIFttYXhdPVwiMTAwXCJcbiAgICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5sYXllci5vcGFjaXR5JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICAgICAgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCJcbiAgICAgICAgICAjbmdTbGlkZXJcbiAgICAgICAgICA+PGlucHV0XG4gICAgICAgICAgICBtYXRTbGlkZXJUaHVtYlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wYWNpdHlcIlxuICAgICAgICAgICAgKGlucHV0KT1cIlxuICAgICAgICAgICAgICBjaGFuZ2VPcGFjaXR5KHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IG5nU2xpZGVyVGh1bWIsXG4gICAgICAgICAgICAgICAgcGFyZW50OiBuZ1NsaWRlcixcbiAgICAgICAgICAgICAgICB2YWx1ZTogbmdTbGlkZXJUaHVtYi52YWx1ZVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICNuZ1NsaWRlclRodW1iPVwibWF0U2xpZGVyVGh1bWJcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvbWF0LXNsaWRlcj5cbiAgICAgIDwvbWF0LW1lbnU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cImlzRXh0ZW50c1ZhbGlkKClcIlxuICAgICAgY2xhc3M9XCJ6b29tTGF5ZXItYnV0dG9uXCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiXG4gICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgIFttYXRUb29sdGlwXT1cIlxuICAgICAgICAoaGFzTXVsdGlwbGVTZWxlY3Rpb25cbiAgICAgICAgICA/ICdpZ28uZ2VvLmxheWVyLnpvb21MYXllcnMnXG4gICAgICAgICAgOiAnaWdvLmdlby5sYXllci56b29tTGF5ZXInXG4gICAgICAgICkgfCB0cmFuc2xhdGVcbiAgICAgIFwiXG4gICAgICAoY2xpY2spPVwiem9vbUxheWVyc0V4dGVudHMoKVwiXG4gICAgPlxuICAgICAgPG1hdC1pY29uIG1hdEJhZGdlQ29sb3I9XCJwcmltYXJ5XCIgbWF0QmFkZ2VTaXplPVwibWVkaXVtXCJcbiAgICAgICAgPmZyYW1lX2luc3BlY3Q8L21hdC1pY29uXG4gICAgICA+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICAqbmdJZj1cImNhblJlbmFtZVwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5sYXllci5ncm91cC5yZW5hbWUnIHwgdHJhbnNsYXRlXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVSZW5hbWUoKVwiXG4gICAgPlxuICAgICAgPG1hdC1pY29uPmVkaXQ8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvaWdvLXBhbmVsPlxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWxheWVyLmludGVyZmFjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2hhcmVkL3NvdXJjZXMvaWxheWVyLmludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdNU0RhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvd21zLWRhdGFzb3VyY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IEltYWdlTGF5ZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy9pbWFnZS1sYXllci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMgfSBmcm9tICcuLy4uLy4uLy4uL3F1ZXJ5L3NoYXJlZC9xdWVyeS5pbnRlcmZhY2VzJztcbmltcG9ydCB7IFNlYXJjaFNvdXJjZU9wdGlvbnMgfSBmcm9tICcuL3NvdXJjZS5pbnRlcmZhY2VzJztcblxuZXhwb3J0IGludGVyZmFjZSBJTGF5ZXJTZWFyY2hTb3VyY2VPcHRpb25zIGV4dGVuZHMgU2VhcmNoU291cmNlT3B0aW9ucyB7XG4gIHF1ZXJ5Rm9ybWF0PzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgeyB1cmxzOiBzdHJpbmdbXSB9Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGF5ZXJTZXJ2aWNlUmVzcG9uc2Uge1xuICBpdGVtczogSUxheWVyRGF0YVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMYXllckRhdGEge1xuICBzY29yZTogbnVtYmVyO1xuICBwcm9wZXJ0aWVzOiBJTGF5ZXJEYXRhU291cmNlO1xuICBoaWdobGlnaHQ6IElMYXllckRhdGFIaWdobGlnaHQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxheWVyRGF0YVNvdXJjZSB7XG4gIGlkPzogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBncm91cFRpdGxlOiBzdHJpbmc7XG4gIGFic3RyYWN0OiBzdHJpbmc7XG4gIGZvcm1hdD86ICd3bXMnIHwgJ3dmcyc7XG4gIHVybD86IHN0cmluZztcbiAgdHlwZT86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgcXVlcnlhYmxlPzogYm9vbGVhbjtcbiAgbWV0YWRhdGFVcmw/OiBzdHJpbmc7XG4gIG1heFNjYWxlRGVub20/OiBzdHJpbmc7XG4gIG1pblNjYWxlRGVub20/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxheWVyRGF0YUhpZ2hsaWdodCB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBncm91cFRpdGxlPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgUXVlcnlXTVNEYXRhU291cmNlT3B0aW9uc1xuICBleHRlbmRzIFdNU0RhdGFTb3VyY2VPcHRpb25zLFxuICAgIE9taXQ8UXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMsICd1cmwnPiB7fVxuXG5leHBvcnQgaW50ZXJmYWNlIElMYXllckl0ZW1SZXNwb25zZSBleHRlbmRzIEltYWdlTGF5ZXJPcHRpb25zIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgc291cmNlT3B0aW9uczogUXVlcnlXTVNEYXRhU291cmNlT3B0aW9ucztcbiAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWxheWVyLmludGVyZmFjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9zZWFyY2gvc2hhcmVkL3NvdXJjZXMvaWxheWVyLmludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdNU0RhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvd21zLWRhdGFzb3VyY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IEltYWdlTGF5ZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy9pbWFnZS1sYXllci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMgfSBmcm9tICcuLy4uLy4uLy4uL3F1ZXJ5L3NoYXJlZC9xdWVyeS5pbnRlcmZhY2VzJztcbmltcG9ydCB7IFNlYXJjaFNvdXJjZU9wdGlvbnMgfSBmcm9tICcuL3NvdXJjZS5pbnRlcmZhY2VzJztcblxuZXhwb3J0IGludGVyZmFjZSBJTGF5ZXJTZWFyY2hTb3VyY2VPcHRpb25zIGV4dGVuZHMgU2VhcmNoU291cmNlT3B0aW9ucyB7XG4gIHF1ZXJ5Rm9ybWF0PzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgeyB1cmxzOiBzdHJpbmdbXSB9Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTGF5ZXJTZXJ2aWNlUmVzcG9uc2Uge1xuICBpdGVtczogSUxheWVyRGF0YVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElMYXllckRhdGEge1xuICBzY29yZTogbnVtYmVyO1xuICBwcm9wZXJ0aWVzOiBJTGF5ZXJEYXRhU291cmNlO1xuICBoaWdobGlnaHQ6IElMYXllckRhdGFIaWdobGlnaHQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxheWVyRGF0YVNvdXJjZSB7XG4gIGlkPzogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBncm91cFRpdGxlOiBzdHJpbmc7XG4gIGFic3RyYWN0OiBzdHJpbmc7XG4gIGZvcm1hdD86ICd3bXMnIHwgJ3dmcyc7XG4gIHVybD86IHN0cmluZztcbiAgdHlwZT86IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgcXVlcnlhYmxlPzogYm9vbGVhbjtcbiAgbWV0YWRhdGFVcmw/OiBzdHJpbmc7XG4gIG1heFNjYWxlRGVub20/OiBzdHJpbmc7XG4gIG1pblNjYWxlRGVub20/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxheWVyRGF0YUhpZ2hsaWdodCB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBncm91cFRpdGxlPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgUXVlcnlXTVNEYXRhU291cmNlT3B0aW9uc1xuICBleHRlbmRzIFdNU0RhdGFTb3VyY2VPcHRpb25zLCBPbWl0PFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zLCAndXJsJz4ge31cblxuZXhwb3J0IGludGVyZmFjZSBJTGF5ZXJJdGVtUmVzcG9uc2UgZXh0ZW5kcyBJbWFnZUxheWVyT3B0aW9ucyB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHNvdXJjZU9wdGlvbnM6IFF1ZXJ5V01TRGF0YVNvdXJjZU9wdGlvbnM7XG4gIHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVkcXVlcmllcy5pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvc2VhcmNoL3NoYXJlZC9zb3VyY2VzL3N0b3JlZHF1ZXJpZXMuaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmVhdHVyZUdlb21ldHJ5IH0gZnJvbSAnLi4vLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7IFNlYXJjaFNvdXJjZU9wdGlvbnMgfSBmcm9tICcuL3NvdXJjZS5pbnRlcmZhY2VzJztcblxuZXhwb3J0IGludGVyZmFjZSBTdG9yZWRRdWVyaWVzU2VhcmNoU291cmNlT3B0aW9ucyBleHRlbmRzIFNlYXJjaFNvdXJjZU9wdGlvbnMge1xuICBzdG9yZWRxdWVyeV9pZDogc3RyaW5nO1xuICBmaWVsZHM6IFN0b3JlZFF1ZXJpZXNGaWVsZHNbXTtcbiAgc3JzbmFtZT86IHN0cmluZztcbiAgb3V0cHV0Zm9ybWF0Pzogc3RyaW5nO1xuICByZXN1bHRUaXRsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdG9yZWRRdWVyaWVzRmllbGRzIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZWZhdWx0VmFsdWU6IGFueTtcbiAgc3BsaXRQcmVmaXg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmVkUXVlcmllc0RhdGEge1xuICBpZDogc3RyaW5nO1xuICBnZW9tZXRyeTogRmVhdHVyZUdlb21ldHJ5O1xuICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JlZFF1ZXJpZXNSZXNwb25zZSB7XG4gIGZlYXR1cmVzOiBTdG9yZWRRdWVyaWVzRGF0YVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JlZFF1ZXJpZXNSZXZlcnNlU2VhcmNoU291cmNlT3B0aW9uc1xuICBleHRlbmRzIFNlYXJjaFNvdXJjZU9wdGlvbnMge1xuICBzdG9yZWRxdWVyeV9pZDogc3RyaW5nO1xuICBsb25nRmllbGQ6IHN0cmluZztcbiAgbGF0RmllbGQ6IHN0cmluZztcbiAgc3JzbmFtZT86IHN0cmluZztcbiAgb3V0cHV0Zm9ybWF0Pzogc3RyaW5nO1xuICByZXN1bHRUaXRsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdG9yZWRRdWVyaWVzUmV2ZXJzZURhdGEge1xuICBpZDogc3RyaW5nO1xuICBnZW9tZXRyeTogRmVhdHVyZUdlb21ldHJ5O1xuICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JlZFF1ZXJpZXNSZXZlcnNlUmVzcG9uc2Uge1xuICBmZWF0dXJlczogU3RvcmVkUXVlcmllc0RhdGFbXTtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVkcXVlcmllcy5pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvc2VhcmNoL3NoYXJlZC9zb3VyY2VzL3N0b3JlZHF1ZXJpZXMuaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmVhdHVyZUdlb21ldHJ5IH0gZnJvbSAnLi4vLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7IFNlYXJjaFNvdXJjZU9wdGlvbnMgfSBmcm9tICcuL3NvdXJjZS5pbnRlcmZhY2VzJztcblxuZXhwb3J0IGludGVyZmFjZSBTdG9yZWRRdWVyaWVzU2VhcmNoU291cmNlT3B0aW9ucyBleHRlbmRzIFNlYXJjaFNvdXJjZU9wdGlvbnMge1xuICBzdG9yZWRxdWVyeV9pZDogc3RyaW5nO1xuICBmaWVsZHM6IFN0b3JlZFF1ZXJpZXNGaWVsZHNbXTtcbiAgc3JzbmFtZT86IHN0cmluZztcbiAgb3V0cHV0Zm9ybWF0Pzogc3RyaW5nO1xuICByZXN1bHRUaXRsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdG9yZWRRdWVyaWVzRmllbGRzIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZWZhdWx0VmFsdWU6IGFueTtcbiAgc3BsaXRQcmVmaXg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmVkUXVlcmllc0RhdGEge1xuICBpZDogc3RyaW5nO1xuICBnZW9tZXRyeTogRmVhdHVyZUdlb21ldHJ5O1xuICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JlZFF1ZXJpZXNSZXNwb25zZSB7XG4gIGZlYXR1cmVzOiBTdG9yZWRRdWVyaWVzRGF0YVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JlZFF1ZXJpZXNSZXZlcnNlU2VhcmNoU291cmNlT3B0aW9ucyBleHRlbmRzIFNlYXJjaFNvdXJjZU9wdGlvbnMge1xuICBzdG9yZWRxdWVyeV9pZDogc3RyaW5nO1xuICBsb25nRmllbGQ6IHN0cmluZztcbiAgbGF0RmllbGQ6IHN0cmluZztcbiAgc3JzbmFtZT86IHN0cmluZztcbiAgb3V0cHV0Zm9ybWF0Pzogc3RyaW5nO1xuICByZXN1bHRUaXRsZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdG9yZWRRdWVyaWVzUmV2ZXJzZURhdGEge1xuICBpZDogc3RyaW5nO1xuICBnZW9tZXRyeTogRmVhdHVyZUdlb21ldHJ5O1xuICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JlZFF1ZXJpZXNSZXZlcnNlUmVzcG9uc2Uge1xuICBmZWF0dXJlczogU3RvcmVkUXVlcmllc0RhdGFbXTtcbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjdG9yLXN0eWxlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL3N0eWxlL3NoYXJlZC92ZWN0b3IvdmVjdG9yLXN0eWxlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBPbEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5pbXBvcnQgb2xTdHlsZSBmcm9tICdvbC9zdHlsZS9TdHlsZSc7XG5cbmltcG9ydCB0eXBlIHsgRmVhdHVyZSB9IGZyb20gJy4uLy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUuaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZUNvbW1vblZlY3RvclN0eWxlT3B0aW9uc1xuICBleHRlbmRzIENvbW1vblZlY3RvclN0eWxlT3B0aW9ucyB7XG4gIGZlYXR1cmU6IEZlYXR1cmUgfCBvbEZlYXR1cmU8T2xHZW9tZXRyeT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWdvU3R5bGUgZXh0ZW5kcyBJZ29TdHlsZUJhc2Uge1xuICBjbHVzdGVyQmFzZVN0eWxlPzogUmVjb3JkPHN0cmluZywgYW55PiB8IG9sU3R5bGUgfCBvbFN0eWxlW107XG59XG5leHBvcnQgaW50ZXJmYWNlIElnb1N0eWxlQmFzZSB7XG4gIGVkaXRhYmxlPzogYm9vbGVhbjtcbiAgaG92ZXJTdHlsZT86IFN0eWxlQnlBdHRyaWJ1dGU7XG4gIGlnb1N0eWxlT2JqZWN0PzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgbWFwYm94U3R5bGU/OiBNYXBib3hTdHlsZTtcbiAgc3R5bGVCeUF0dHJpYnV0ZT86IFN0eWxlQnlBdHRyaWJ1dGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheVN0eWxlT3B0aW9ucyB7XG4gIGJhc2U/OiBDb21tb25WZWN0b3JTdHlsZU9wdGlvbnM7XG4gIHNlbGVjdGlvbj86IENvbW1vblZlY3RvclN0eWxlT3B0aW9ucztcbiAgZm9jdXM/OiBDb21tb25WZWN0b3JTdHlsZU9wdGlvbnM7XG59XG5leHBvcnQgaW50ZXJmYWNlIENvbW1vblZlY3RvclN0eWxlT3B0aW9ucyB7XG4gIG1hcmtlckNvbG9yPzogc3RyaW5nIHwgbnVtYmVyW107IC8vIG1hcmtlciBmaWxsXG4gIG1hcmtlck9wYWNpdHk/OiBudW1iZXI7IC8vIG1hcmtlciBvcGFjaXR5LCBub3QgYXBwbGllZCBpZiBhIHJnYmEgaXMgcHJvdmlkZWRcbiAgbWFya2VyT3V0bGluZUNvbG9yPzogc3RyaW5nIHwgbnVtYmVyW107IC8vIG1hcmtlciBjb250b3VyXG4gIGZpbGxDb2xvcj86IHN0cmluZyB8IG51bWJlcltdOyAvLyBwb2x5XG4gIGZpbGxPcGFjaXR5PzogbnVtYmVyOyAvLyBwb2x5IGZpbGwgb3BhY2l0eSwgbm90IGFwcGxpZWQgaWYgYSByZ2JhIGlzIHByb3ZpZGVkXG4gIHN0cm9rZUNvbG9yPzogc3RyaW5nIHwgbnVtYmVyW107IC8vIGxpbmUgYW5kIHBvbHlcbiAgc3Ryb2tlT3BhY2l0eT86IG51bWJlcjsgLy8gbGluZSBhbmQgcG9seSwgbm90IGFwcGxpZWQgaWYgYSByZ2JhIGlzIHByb3ZpZGVkXG4gIHN0cm9rZVdpZHRoPzogbnVtYmVyOyAvLyBsaW5lIGFuZCBwb2x5XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3R5bGVCeUF0dHJpYnV0ZSB7XG4gIGFuY2hvcj86IFtudW1iZXIsIG51bWJlcl1bXTtcbiAgdHlwZT86IHN0cmluZztcbiAgYXR0cmlidXRlPzogc3RyaW5nO1xuICBkYXRhPzogYW55W107XG4gIGZpbGw/OiBzdHJpbmdbXTtcbiAgc3Ryb2tlPzogc3RyaW5nW107XG4gIHdpZHRoPzogbnVtYmVyW107XG4gIHJhZGl1cz86IG51bWJlcltdO1xuICBpY29uPzogc3RyaW5nW107XG4gIHNjYWxlPzogbnVtYmVyW107XG4gIGxhYmVsPzogSWdvTGFiZWw7XG4gIGJhc2VTdHlsZT86IHsgW2tleTogc3RyaW5nXTogYW55OyBhbGxvPzogc3RyaW5nIH07XG4gIGhvdmVyU3R5bGU/OiBTdHlsZUJ5QXR0cmlidXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVN0eWxlIHtcbiAgaWdvTGFiZWw/OiBJZ29MYWJlbDtcbiAgaWdvU3R5bGU/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElnb0xhYmVsIHtcbiAgYXR0cmlidXRlOiBzdHJpbmc7XG4gIHN0eWxlPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgbWluUmVzb2x1dGlvbj86IG51bWJlcjtcbiAgbWF4UmVzb2x1dGlvbj86IG51bWJlcjtcbiAgbWluU2NhbGVEZW5vbT86IG51bWJlcjtcbiAgbWF4U2NhbGVEZW5vbT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBib3hTdHlsZSB7XG4gIHVybDogc3RyaW5nO1xuICBzb3VyY2U6IHN0cmluZztcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjdG9yLXN0eWxlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL3N0eWxlL3NoYXJlZC92ZWN0b3IvdmVjdG9yLXN0eWxlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBPbEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbS9HZW9tZXRyeSc7XG5pbXBvcnQgb2xTdHlsZSBmcm9tICdvbC9zdHlsZS9TdHlsZSc7XG5cbmltcG9ydCB0eXBlIHsgRmVhdHVyZSB9IGZyb20gJy4uLy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUuaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZUNvbW1vblZlY3RvclN0eWxlT3B0aW9ucyBleHRlbmRzIENvbW1vblZlY3RvclN0eWxlT3B0aW9ucyB7XG4gIGZlYXR1cmU6IEZlYXR1cmUgfCBvbEZlYXR1cmU8T2xHZW9tZXRyeT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWdvU3R5bGUgZXh0ZW5kcyBJZ29TdHlsZUJhc2Uge1xuICBjbHVzdGVyQmFzZVN0eWxlPzogUmVjb3JkPHN0cmluZywgYW55PiB8IG9sU3R5bGUgfCBvbFN0eWxlW107XG59XG5leHBvcnQgaW50ZXJmYWNlIElnb1N0eWxlQmFzZSB7XG4gIGVkaXRhYmxlPzogYm9vbGVhbjtcbiAgaG92ZXJTdHlsZT86IFN0eWxlQnlBdHRyaWJ1dGU7XG4gIGlnb1N0eWxlT2JqZWN0PzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgbWFwYm94U3R5bGU/OiBNYXBib3hTdHlsZTtcbiAgc3R5bGVCeUF0dHJpYnV0ZT86IFN0eWxlQnlBdHRyaWJ1dGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheVN0eWxlT3B0aW9ucyB7XG4gIGJhc2U/OiBDb21tb25WZWN0b3JTdHlsZU9wdGlvbnM7XG4gIHNlbGVjdGlvbj86IENvbW1vblZlY3RvclN0eWxlT3B0aW9ucztcbiAgZm9jdXM/OiBDb21tb25WZWN0b3JTdHlsZU9wdGlvbnM7XG59XG5leHBvcnQgaW50ZXJmYWNlIENvbW1vblZlY3RvclN0eWxlT3B0aW9ucyB7XG4gIG1hcmtlckNvbG9yPzogc3RyaW5nIHwgbnVtYmVyW107IC8vIG1hcmtlciBmaWxsXG4gIG1hcmtlck9wYWNpdHk/OiBudW1iZXI7IC8vIG1hcmtlciBvcGFjaXR5LCBub3QgYXBwbGllZCBpZiBhIHJnYmEgaXMgcHJvdmlkZWRcbiAgbWFya2VyT3V0bGluZUNvbG9yPzogc3RyaW5nIHwgbnVtYmVyW107IC8vIG1hcmtlciBjb250b3VyXG4gIGZpbGxDb2xvcj86IHN0cmluZyB8IG51bWJlcltdOyAvLyBwb2x5XG4gIGZpbGxPcGFjaXR5PzogbnVtYmVyOyAvLyBwb2x5IGZpbGwgb3BhY2l0eSwgbm90IGFwcGxpZWQgaWYgYSByZ2JhIGlzIHByb3ZpZGVkXG4gIHN0cm9rZUNvbG9yPzogc3RyaW5nIHwgbnVtYmVyW107IC8vIGxpbmUgYW5kIHBvbHlcbiAgc3Ryb2tlT3BhY2l0eT86IG51bWJlcjsgLy8gbGluZSBhbmQgcG9seSwgbm90IGFwcGxpZWQgaWYgYSByZ2JhIGlzIHByb3ZpZGVkXG4gIHN0cm9rZVdpZHRoPzogbnVtYmVyOyAvLyBsaW5lIGFuZCBwb2x5XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3R5bGVCeUF0dHJpYnV0ZSB7XG4gIGFuY2hvcj86IFtudW1iZXIsIG51bWJlcl1bXTtcbiAgdHlwZT86IHN0cmluZztcbiAgYXR0cmlidXRlPzogc3RyaW5nO1xuICBkYXRhPzogYW55W107XG4gIGZpbGw/OiBzdHJpbmdbXTtcbiAgc3Ryb2tlPzogc3RyaW5nW107XG4gIHdpZHRoPzogbnVtYmVyW107XG4gIHJhZGl1cz86IG51bWJlcltdO1xuICBpY29uPzogc3RyaW5nW107XG4gIHNjYWxlPzogbnVtYmVyW107XG4gIGxhYmVsPzogSWdvTGFiZWw7XG4gIGJhc2VTdHlsZT86IHsgW2tleTogc3RyaW5nXTogYW55OyBhbGxvPzogc3RyaW5nIH07XG4gIGhvdmVyU3R5bGU/OiBTdHlsZUJ5QXR0cmlidXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVN0eWxlIHtcbiAgaWdvTGFiZWw/OiBJZ29MYWJlbDtcbiAgaWdvU3R5bGU/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElnb0xhYmVsIHtcbiAgYXR0cmlidXRlOiBzdHJpbmc7XG4gIHN0eWxlPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgbWluUmVzb2x1dGlvbj86IG51bWJlcjtcbiAgbWF4UmVzb2x1dGlvbj86IG51bWJlcjtcbiAgbWluU2NhbGVEZW5vbT86IG51bWJlcjtcbiAgbWF4U2NhbGVEZW5vbT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBib3hTdHlsZSB7XG4gIHVybDogc3RyaW5nO1xuICBzb3VyY2U6IHN0cmluZztcbn1cbiJdfQ==
@@ -717,4 +717,4 @@ function removeZ(coords) {
717
717
  return coords.slice(0, 2);
718
718
  return coords.map(removeZ);
719
719
  }
720
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGlvbi13b3Jrc3BhY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL3dvcmtzcGFjZS9zaGFyZWQvZWRpdGlvbi13b3Jrc3BhY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQ0FBMEM7QUFDMUMsT0FBTyxFQUNMLFVBQVUsRUFFVixXQUFXLEVBQ1osTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsa0NBQWtDLEVBRWxDLHlCQUF5QixFQUUxQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSXBELE9BQU8sT0FBTyxNQUFNLG1CQUFtQixDQUFDO0FBQ3hDLE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQztBQUloQyxPQUFPLEVBQUUsZUFBZSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFPbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFFM0YsT0FBTyxFQUVMLGFBQWEsRUFDYixZQUFZLEVBQ1osK0JBQStCLEVBQy9CLG1DQUFtQyxF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TUFBTTs7NEZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7QUFnMUJELFNBQVMsZ0NBQWdDLENBQUMsTUFBYztJQUN0RCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FBQyxNQUFXO0lBQzFCLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFDdkMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRO1FBQUUsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3RCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvdHlwZS1idWlsdGlucyAqL1xuaW1wb3J0IHtcbiAgSHR0cENsaWVudCxcbiAgSHR0cEVycm9yUmVzcG9uc2UsXG4gIEh0dHBIZWFkZXJzXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEF1dGhJbnRlcmNlcHRvciB9IGZyb20gJ0BpZ28yL2F1dGgnO1xuaW1wb3J0IHsgQWN0aW9uU3RvcmUgfSBmcm9tICdAaWdvMi9jb21tb24vYWN0aW9uJztcbmltcG9ydCB7XG4gIEVudGl0eVN0b3JlRmlsdGVyU2VsZWN0aW9uU3RyYXRlZ3ksXG4gIEVudGl0eVRhYmxlQnV0dG9uLFxuICBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyLFxuICBFbnRpdHlUYWJsZVRlbXBsYXRlXG59IGZyb20gJ0BpZ28yL2NvbW1vbi9lbnRpdHknO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvY29uZmlnJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9tZXNzYWdlJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9zdG9yYWdlJztcblxuaW1wb3J0IG9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcbmltcG9ydCB7IEZlYXR1cmVMb2FkZXIgfSBmcm9tICdvbC9mZWF0dXJlbG9hZGVyJztcbmltcG9ydCBHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJztcbmltcG9ydCBXS1QgZnJvbSAnb2wvZm9ybWF0L1dLVCc7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IG9sU291cmNlSW1hZ2VXTVMgZnJvbSAnb2wvc291cmNlL0ltYWdlV01TJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHNraXBXaGlsZSwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgUmVsYXRpb25PcHRpb25zLFxuICBTb3VyY2VGaWVsZHNPcHRpb25zUGFyYW1zLFxuICBXTVNEYXRhU291cmNlXG59IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzJztcbmltcG9ydCB7IEZlYXR1cmVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvZmVhdHVyZS1kYXRhc291cmNlJztcbmltcG9ydCB7IFdGU0RhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvd2ZzLWRhdGFzb3VyY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIEZlYXR1cmUsXG4gIEZlYXR1cmVNb3Rpb24sXG4gIEZlYXR1cmVTdG9yZSxcbiAgRmVhdHVyZVN0b3JlSW5NYXBFeHRlbnRTdHJhdGVneSxcbiAgRmVhdHVyZVN0b3JlSW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3ksXG4gIEZlYXR1cmVTdG9yZUxvYWRpbmdMYXllclN0cmF0ZWd5LFxuICBGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneVxufSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZCc7XG5pbXBvcnQgeyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IGlzTGF5ZXJJdGVtIH0gZnJvbSAnLi4vLi4vbGF5ZXInO1xuaW1wb3J0IHtcbiAgR2VvV29ya3NwYWNlT3B0aW9ucyxcbiAgSW1hZ2VMYXllcixcbiAgTGF5ZXIsXG4gIExheWVyU2VydmljZSxcbiAgTGF5ZXJzTGlua1Byb3BlcnRpZXMsXG4gIExpbmtlZFByb3BlcnRpZXMsXG4gIFZlY3RvckxheWVyXG59IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZCc7XG5pbXBvcnQgeyBJZ29NYXAsIE1hcEJhc2UgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkJztcbmltcG9ydCB7IFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vcXVlcnkvc2hhcmVkL3F1ZXJ5LmludGVyZmFjZXMnO1xuaW1wb3J0IHsgU3R5bGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3R5bGUvc3R5bGUtc2VydmljZS9zdHlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IEVkaXRpb25Xb3Jrc3BhY2UgfSBmcm9tICcuL2VkaXRpb24td29ya3NwYWNlJztcbmltcG9ydCB7IGNyZWF0ZUZpbHRlckluTWFwRXh0ZW50T3JSZXNvbHV0aW9uU3RyYXRlZ3kgfSBmcm9tICcuL3dvcmtzcGFjZS51dGlscyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEVkaXRpb25Xb3Jrc3BhY2VTZXJ2aWNlIHtcbiAgcHVibGljIHdzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPih1bmRlZmluZWQpO1xuICBwdWJsaWMgYWRkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVsYXRpb25MYXllcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJbWFnZUxheWVyW10gfCBWZWN0b3JMYXllcltdPihcbiAgICB1bmRlZmluZWRcbiAgKTtcbiAgcHVibGljIHJvd3NJbk1hcEV4dGVudENoZWNrQ29uZGl0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XG4gIHB1YmxpYyB3a3RGb3JtYXQgPSBuZXcgV0tUKCk7XG4gIHB1YmxpYyBnZW9Kc29uRm9ybWF0ID0gbmV3IEdlb0pTT04oKTtcblxuICBnZXQgem9vbUF1dG8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KCd6b29tQXV0bycpIGFzIGJvb2xlYW47XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxheWVyU2VydmljZTogTGF5ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHN0eWxlU2VydmljZTogU3R5bGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBhdXRoSW50ZXJjZXB0b3I/OiBBdXRoSW50ZXJjZXB0b3JcbiAgKSB7fVxuXG4gIGNyZWF0ZVdvcmtzcGFjZShsYXllcjogSW1hZ2VMYXllciwgbWFwOiBJZ29NYXApOiBFZGl0aW9uV29ya3NwYWNlIHtcbiAgICBpZiAoXG4gICAgICBsYXllci5vcHRpb25zLndvcmtzcGFjZT8uZW5hYmxlZCAhPT0gdHJ1ZSB8fFxuICAgICAgbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24uZW5hYmxlZCAhPT0gdHJ1ZVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgd2tzQ29uZmlnO1xuICAgIGlmIChsYXllci5vcHRpb25zLndvcmtzcGFjZSkge1xuICAgICAgd2tzQ29uZmlnID0gbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdrc0NvbmZpZyA9IHt9O1xuICAgIH1cbiAgICB3a3NDb25maWcuc3JjSWQgPSBsYXllci5pZDtcbiAgICB3a3NDb25maWcud29ya3NwYWNlSWQgPSBsYXllci5pZDtcbiAgICB3a3NDb25maWcuZW5hYmxlZCA9IHRydWU7XG4gICAgd2tzQ29uZmlnLnBhZ2VTaXplID0gbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/LnBhZ2VTaXplO1xuICAgIHdrc0NvbmZpZy5wYWdlU2l6ZU9wdGlvbnMgPSBsYXllci5vcHRpb25zLndvcmtzcGFjZT8ucGFnZVNpemVPcHRpb25zO1xuXG4gICAgY29uc3QgZGF0YVNvdXJjZTogV01TRGF0YVNvdXJjZSA9IGxheWVyLmRhdGFTb3VyY2UgYXMgV01TRGF0YVNvdXJjZTtcbiAgICBjb25zdCB3bXNMaW5rSWQgPSBsYXllci5pZCArICcuV21zV29ya3NwYWNlVGFibGVTcmMnO1xuICAgIGNvbnN0IHdmc0xpbmtJZCA9IGxheWVyLmlkICsgJy5XZnNXb3Jrc3BhY2VUYWJsZURlc3QnO1xuICAgIGlmICghbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMpIHtcbiAgICAgIGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzID0geyBsaW5rSWQ6IHdtc0xpbmtJZCwgbGlua3M6IFtdIH07XG4gICAgfVxuICAgIGNvbnN0IGxpbmtQcm9wZXJ0aWVzID0ge1xuICAgICAgc3luY2VkRGVsZXRlOiB0cnVlLFxuICAgICAgbGlua2VkSWRzOiBbd2ZzTGlua0lkXSxcbiAgICAgIHByb3BlcnRpZXM6IFtMaW5rZWRQcm9wZXJ0aWVzLlpJTkRFWCwgTGlua2VkUHJvcGVydGllcy5WSVNJQkxFXVxuICAgIH0gYXMgTGF5ZXJzTGlua1Byb3BlcnRpZXM7XG5cbiAgICBpZiAoIWxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5taW5SZXNvbHV0aW9uKSB7XG4gICAgICBsaW5rUHJvcGVydGllcy5wcm9wZXJ0aWVzLnB1c2goTGlua2VkUHJvcGVydGllcy5NSU5SRVNPTFVUSU9OKTtcbiAgICB9XG4gICAgbGV0IGhhc09nY0ZpbHRlcnMgPSBmYWxzZTtcbiAgICBpZiAoXG4gICAgICAoZGF0YVNvdXJjZS5vcHRpb25zIGFzIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucykub2djRmlsdGVycz8uZW5hYmxlZFxuICAgICkge1xuICAgICAgbGlua1Byb3BlcnRpZXMucHJvcGVydGllcy5wdXNoKExpbmtlZFByb3BlcnRpZXMuT0dDRklMVEVSUyk7XG4gICAgICBoYXNPZ2NGaWx0ZXJzID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCFsYXllci5vcHRpb25zLndvcmtzcGFjZT8ubWF4UmVzb2x1dGlvbikge1xuICAgICAgbGlua1Byb3BlcnRpZXMucHJvcGVydGllcy5wdXNoKExpbmtlZFByb3BlcnRpZXMuTUFYUkVTT0xVVElPTik7XG4gICAgfVxuXG4gICAgbGV0IGNsb25lZExpbmtzOiBMYXllcnNMaW5rUHJvcGVydGllc1tdID0gW107XG4gICAgaWYgKGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtzKSB7XG4gICAgICBjbG9uZWRMaW5rcyA9IEpTT04ucGFyc2UoXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtzKVxuICAgICAgKTtcbiAgICB9XG4gICAgY2xvbmVkTGlua3MucHVzaChsaW5rUHJvcGVydGllcyk7XG5cbiAgICAvLyBUT0RPOiBEw6lteXN0aWZpZXIgY2UgYm91dCBkZSBjb2RlXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtZXhwcmVzc2lvbnNcbiAgICAoKGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtJZCA9IGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtJZFxuICAgICAgPyBsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rSWRcbiAgICAgIDogd21zTGlua0lkKSxcbiAgICAgIChsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rcyA9IGNsb25lZExpbmtzKSk7XG4gICAgaW50ZXJmYWNlIFdGU29wdGlvbnNcbiAgICAgIGV4dGVuZHMgV0ZTRGF0YVNvdXJjZU9wdGlvbnMsXG4gICAgICAgIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyB7fVxuXG4gICAgbGF5ZXIuY3JlYXRlTGluaygpO1xuXG4gICAgbGV0IHdrcztcbiAgICB0aGlzLmxheWVyU2VydmljZVxuICAgICAgLmNyZWF0ZUFzeW5jTGF5ZXIoe1xuICAgICAgICB0aXRsZTogbGF5ZXIudGl0bGUsXG4gICAgICAgIHBhcmVudElkOiBsYXllci5vcHRpb25zLnBhcmVudElkLFxuICAgICAgICB2aXNpYmxlOiBsYXllci52aXNpYmxlLFxuICAgICAgICBpZDogd2ZzTGlua0lkLFxuICAgICAgICBsaW5rZWRMYXllcnM6IHtcbiAgICAgICAgICBsaW5rSWQ6IHdmc0xpbmtJZFxuICAgICAgICB9LFxuICAgICAgICB3b3Jrc3BhY2U6IHtcbiAgICAgICAgICBzcmNJZDogbGF5ZXIuaWQsXG4gICAgICAgICAgd29ya3NwYWNlSWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICBxdWVyeU9wdGlvbnM6IHtcbiAgICAgICAgICAgIG1hcFF1ZXJ5T25PcGVuVGFiOlxuICAgICAgICAgICAgICBsYXllci5vcHRpb25zLndvcmtzcGFjZT8ucXVlcnlPcHRpb25zPy5tYXBRdWVyeU9uT3BlblRhYixcbiAgICAgICAgICAgIHRhYlF1ZXJ5OiBmYWxzZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFnZVNpemU6IGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5wYWdlU2l6ZSxcbiAgICAgICAgICBwYWdlU2l6ZU9wdGlvbnM6IGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5wYWdlU2l6ZU9wdGlvbnNcbiAgICAgICAgfSxcbiAgICAgICAgc2hvd0luTGF5ZXJMaXN0OiBmYWxzZSxcbiAgICAgICAgaXNJZ29JbnRlcm5hbExheWVyOiB0cnVlLFxuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICBtaW5SZXNvbHV0aW9uOlxuICAgICAgICAgIGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5taW5SZXNvbHV0aW9uIHx8IGxheWVyLm1pblJlc29sdXRpb24gfHwgMCxcbiAgICAgICAgbWF4UmVzb2x1dGlvbjpcbiAgICAgICAgICBsYXllci5vcHRpb25zLndvcmtzcGFjZT8ubWF4UmVzb2x1dGlvbiB8fFxuICAgICAgICAgIGxheWVyLm1heFJlc29sdXRpb24gfHxcbiAgICAgICAgICBJbmZpbml0eSxcbiAgICAgICAgc3R5bGU6IHRoaXMuc3R5bGVTZXJ2aWNlLmNyZWF0ZVN0eWxlKHtcbiAgICAgICAgICBmaWxsOiB7XG4gICAgICAgICAgICBjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMSknXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdHJva2U6IHtcbiAgICAgICAgICAgIGNvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAxKSdcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNpcmNsZToge1xuICAgICAgICAgICAgZmlsbDoge1xuICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMSknXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3Ryb2tlOiB7XG4gICAgICAgICAgICAgIGNvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAxKSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByYWRpdXM6IDVcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzb3VyY2VPcHRpb25zOiB7XG4gICAgICAgICAgZG93bmxvYWQ6IGRhdGFTb3VyY2Uub3B0aW9ucy5kb3dubG9hZCxcbiAgICAgICAgICB0eXBlOiAnd2ZzJyxcbiAgICAgICAgICB1cmw6IGRhdGFTb3VyY2Uub3B0aW9ucy51cmxXZnMgfHwgZGF0YVNvdXJjZS5vcHRpb25zLnVybCxcbiAgICAgICAgICBxdWVyeWFibGU6IHRydWUsXG4gICAgICAgICAgcmVsYXRpb25zOiBkYXRhU291cmNlLm9wdGlvbnMucmVsYXRpb25zLFxuICAgICAgICAgIHF1ZXJ5VGl0bGU6IChkYXRhU291cmNlLm9wdGlvbnMgYXMgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMpXG4gICAgICAgICAgICAucXVlcnlUaXRsZSxcbiAgICAgICAgICBwYXJhbXM6IGRhdGFTb3VyY2Uub3B0aW9ucy5wYXJhbXNXRlMsXG4gICAgICAgICAgb2djRmlsdGVyczogT2JqZWN0LmFzc2lnbih7fSwgZGF0YVNvdXJjZS5vZ2NGaWx0ZXJzLCB7XG4gICAgICAgICAgICBlbmFibGVkOiBoYXNPZ2NGaWx0ZXJzXG4gICAgICAgICAgfSksXG4gICAgICAgICAgc291cmNlRmllbGRzOiBkYXRhU291cmNlLm9wdGlvbnMuc291cmNlRmllbGRzIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICBlZGl0aW9uOiBkYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvblxuICAgICAgICB9IGFzIFdGU29wdGlvbnNcbiAgICAgIH0pXG4gICAgICAuc3Vic2NyaWJlKCh3b3Jrc3BhY2VMYXllcjogVmVjdG9yTGF5ZXIpID0+IHtcbiAgICAgICAgbWFwLmxheWVyQ29udHJvbGxlci5hZGQod29ya3NwYWNlTGF5ZXIpO1xuICAgICAgICBsYXllci5vbC5zZXRQcm9wZXJ0aWVzKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxpbmtlZExheWVyczoge1xuICAgICAgICAgICAgICBsaW5rSWQ6IGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtJZCxcbiAgICAgICAgICAgICAgbGlua3M6IGNsb25lZExpbmtzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgICAgICB3b3Jrc3BhY2VMYXllci5kYXRhU291cmNlLm9sLnJlZnJlc2goKTtcblxuICAgICAgICB3a3MgPSBuZXcgRWRpdGlvbldvcmtzcGFjZShcbiAgICAgICAgICB0aGlzLmRpYWxvZyxcbiAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UsXG4gICAgICAgICAgdGhpcy5hZGRpbmckLFxuICAgICAgICAgIChyZWxhdGlvbjogUmVsYXRpb25PcHRpb25zKSA9PiB0aGlzLmdldERvbWFpblZhbHVlcyhyZWxhdGlvbiksXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IGxheWVyLmlkLFxuICAgICAgICAgICAgdGl0bGU6IGxheWVyLnRpdGxlLFxuICAgICAgICAgICAgbGF5ZXI6IHdvcmtzcGFjZUxheWVyLFxuICAgICAgICAgICAgbWFwLFxuICAgICAgICAgICAgZW50aXR5U3RvcmU6IHRoaXMuY3JlYXRlRmVhdHVyZVN0b3JlKHdvcmtzcGFjZUxheWVyLCBtYXApLFxuICAgICAgICAgICAgYWN0aW9uU3RvcmU6IG5ldyBBY3Rpb25TdG9yZShbXSksXG4gICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgIHRhYmxlVGVtcGxhdGU6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jcmVhdGVUYWJsZVRlbXBsYXRlKHdrcywgd29ya3NwYWNlTGF5ZXIpO1xuXG4gICAgICAgIHdvcmtzcGFjZUxheWVyLm9wdGlvbnMud29ya3NwYWNlLndvcmtzcGFjZUlkID0gd29ya3NwYWNlTGF5ZXIuaWQ7XG4gICAgICAgIGxheWVyLm9wdGlvbnMud29ya3NwYWNlID0gT2JqZWN0LmFzc2lnbih7fSwgbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2UsIHtcbiAgICAgICAgICB3a3NDb25maWdcbiAgICAgICAgfSBhcyBHZW9Xb3Jrc3BhY2VPcHRpb25zKTtcblxuICAgICAgICBkZWxldGUgZGF0YVNvdXJjZS5vcHRpb25zLmRvd25sb2FkO1xuICAgICAgICByZXR1cm4gd2tzO1xuICAgICAgfSk7XG4gICAgcmV0dXJuIHdrcztcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmVhdHVyZVN0b3JlKGxheWVyOiBWZWN0b3JMYXllciwgbWFwOiBJZ29NYXApOiBGZWF0dXJlU3RvcmUge1xuICAgIGNvbnN0IHN0b3JlID0gbmV3IEZlYXR1cmVTdG9yZShbXSwgeyBtYXAgfSk7XG4gICAgc3RvcmUuYmluZExheWVyKGxheWVyKTtcblxuICAgIGNvbnN0IGxvYWRpbmdTdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVMb2FkaW5nTGF5ZXJTdHJhdGVneSh7fSk7XG4gICAgY29uc3QgaW5NYXBFeHRlbnRTdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVJbk1hcEV4dGVudFN0cmF0ZWd5KHt9KTtcbiAgICBjb25zdCBpbk1hcFJlc29sdXRpb25TdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVJbk1hcFJlc29sdXRpb25TdHJhdGVneSh7fSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRSZWNvcmRTdHJhdGVneSA9IG5ldyBFbnRpdHlTdG9yZUZpbHRlclNlbGVjdGlvblN0cmF0ZWd5KHt9KTtcbiAgICBjb25zdCBzZWxlY3Rpb25TdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneSh7XG4gICAgICBsYXllcjogbmV3IFZlY3RvckxheWVyKHtcbiAgICAgICAgekluZGV4OiAzMDAsXG4gICAgICAgIHNvdXJjZTogbmV3IEZlYXR1cmVEYXRhU291cmNlKCksXG4gICAgICAgIHN0eWxlOiB1bmRlZmluZWQsXG4gICAgICAgIHNob3dJbkxheWVyTGlzdDogZmFsc2UsXG4gICAgICAgIGV4cG9ydGFibGU6IGZhbHNlLFxuICAgICAgICBicm93c2FibGU6IGZhbHNlXG4gICAgICB9KSxcbiAgICAgIG1hcCxcbiAgICAgIGhpdFRvbGVyYW5jZTogMTUsXG4gICAgICBtb3Rpb246IHRoaXMuem9vbUF1dG8gPyBGZWF0dXJlTW90aW9uLkRlZmF1bHQgOiBGZWF0dXJlTW90aW9uLk5vbmUsXG4gICAgICBtYW55OiB0cnVlLFxuICAgICAgZHJhZ0JveDogdHJ1ZVxuICAgIH0pO1xuICAgIHN0b3JlLmFkZFN0cmF0ZWd5KGxvYWRpbmdTdHJhdGVneSwgdHJ1ZSk7XG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koaW5NYXBFeHRlbnRTdHJhdGVneSwgdHJ1ZSk7XG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koaW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3ksIHRydWUpO1xuICAgIHN0b3JlLmFkZFN0cmF0ZWd5KHNlbGVjdGlvblN0cmF0ZWd5LCB0cnVlKTtcbiAgICBzdG9yZS5hZGRTdHJhdGVneShzZWxlY3RlZFJlY29yZFN0cmF0ZWd5LCBmYWxzZSk7XG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koY3JlYXRlRmlsdGVySW5NYXBFeHRlbnRPclJlc29sdXRpb25TdHJhdGVneSgpLCB0cnVlKTtcbiAgICByZXR1cm4gc3RvcmU7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVRhYmxlVGVtcGxhdGUoXG4gICAgd29ya3NwYWNlOiBFZGl0aW9uV29ya3NwYWNlLFxuICAgIGxheWVyOiBWZWN0b3JMYXllclxuICApOiBFbnRpdHlUYWJsZVRlbXBsYXRlIHtcbiAgICBjb25zdCBmaWVsZHMgPSBsYXllci5kYXRhU291cmNlLm9wdGlvbnMuc291cmNlRmllbGRzIHx8IFtdO1xuXG4gICAgY29uc3QgcmVsYXRpb25zID0gbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLnJlbGF0aW9ucyB8fCBbXTtcblxuICAgIGNvbnN0IHJlbmRlcmVyVHlwZSA9IEVudGl0eVRhYmxlQ29sdW1uUmVuZGVyZXIuVW5zYW5pdGl6ZWRIVE1MO1xuICAgIGxldCBidXR0b25zID0gW107XG4gICAgbGV0IGNvbHVtbnMgPSBbXTtcbiAgICBsZXQgcmVsYXRpb25zQ29sdW1uID0gW107XG5cbiAgICBidXR0b25zID0gW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnZWRpdGlvbicsXG4gICAgICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gICAgICAgIHJlbmRlcmVyOiBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyLkJ1dHRvbkdyb3VwLFxuICAgICAgICBwcmltYXJ5OiBmYWxzZSxcbiAgICAgICAgdmFsdWVBY2Nlc3NvcjogKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGVkaXRNb2RlOiBmYWxzZSxcbiAgICAgICAgICAgICAgaWNvbjogJ2VkaXQnLFxuICAgICAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICBkaXNhYmxlZDpcbiAgICAgICAgICAgICAgICBsYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5tb2RpZnlCdXR0b24gPT09IGZhbHNlXG4gICAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICAgIGNsaWNrOiAoZmVhdHVyZSkgPT4ge1xuICAgICAgICAgICAgICAgIHdvcmtzcGFjZS5lZGl0RmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2UpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBlZGl0TW9kZTogZmFsc2UsXG4gICAgICAgICAgICAgIGljb246ICdkZWxldGUnLFxuICAgICAgICAgICAgICBjb2xvcjogJ3dhcm4nLFxuICAgICAgICAgICAgICBkaXNhYmxlZDpcbiAgICAgICAgICAgICAgICBsYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5kZWxldGVCdXR0b24gPT09IGZhbHNlXG4gICAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICAgIGNsaWNrOiAoZmVhdHVyZSkgPT4ge1xuICAgICAgICAgICAgICAgIHdvcmtzcGFjZS5kZWxldGVGZWF0dXJlKGZlYXR1cmUsIHdvcmtzcGFjZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGVkaXRNb2RlOiB0cnVlLFxuICAgICAgICAgICAgICBpY29uOiAnY2hlY2snLFxuICAgICAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5sb2FkaW5nLFxuICAgICAgICAgICAgICBjbGljazogKGZlYXR1cmUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmVGZWF0dXJlKGZlYXR1cmUsIHdvcmtzcGFjZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGVkaXRNb2RlOiB0cnVlLFxuICAgICAgICAgICAgICBpY29uOiAnY2xvc2UnLFxuICAgICAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5sb2FkaW5nLFxuICAgICAgICAgICAgICBjbGljazogKGZlYXR1cmUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbEVkaXQod29ya3NwYWNlLCBmZWF0dXJlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0gYXMgRW50aXR5VGFibGVCdXR0b25bXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF07XG5cbiAgICBpZiAoZmllbGRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgd29ya3NwYWNlLmVudGl0eVN0b3JlLmVudGl0aWVzJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBza2lwV2hpbGUoKHZhbCkgPT4gdmFsLmxlbmd0aCA9PT0gMCksXG4gICAgICAgICAgdGFrZSgxKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGVudGl0aWVzKSA9PiB7XG4gICAgICAgICAgY29uc3Qgb2wgPSAoZW50aXRpZXNbMF0gYXMgRmVhdHVyZSkub2wgYXMgb2xGZWF0dXJlPE9sR2VvbWV0cnk+O1xuICAgICAgICAgIGNvbnN0IGNvbHVtbnNGcm9tRmVhdHVyZXMgPSBvbFxuICAgICAgICAgICAgLmdldEtleXMoKVxuICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgKGNvbCkgPT5cbiAgICAgICAgICAgICAgICAhY29sLnN0YXJ0c1dpdGgoJ18nKSAmJlxuICAgICAgICAgICAgICAgIGNvbCAhPT0gJ2dlb21ldHJ5JyAmJlxuICAgICAgICAgICAgICAgIGNvbCAhPT0gb2wuZ2V0R2VvbWV0cnlOYW1lKCkgJiZcbiAgICAgICAgICAgICAgICAhY29sLm1hdGNoKC9ib3VuZGVkYnkvZ2kpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAubWFwKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBgcHJvcGVydGllcy4ke2tleX1gLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBrZXksXG4gICAgICAgICAgICAgICAgcmVuZGVyZXI6IHJlbmRlcmVyVHlwZVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgd29ya3NwYWNlLm1ldGEudGFibGVUZW1wbGF0ZSA9IHtcbiAgICAgICAgICAgIHNlbGVjdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBzb3J0OiB0cnVlLFxuICAgICAgICAgICAgY29sdW1uczogY29sdW1uc0Zyb21GZWF0dXJlc1xuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbHVtbnMgPSBmaWVsZHMubWFwKChmaWVsZDogU291cmNlRmllbGRzT3B0aW9uc1BhcmFtcykgPT4ge1xuICAgICAgY29uc3QgY29sdW1uID0ge1xuICAgICAgICBuYW1lOiBgcHJvcGVydGllcy4ke2ZpZWxkLm5hbWV9YCxcbiAgICAgICAgdGl0bGU6IGZpZWxkLmFsaWFzID8gZmllbGQuYWxpYXMgOiBmaWVsZC5uYW1lLFxuICAgICAgICByZW5kZXJlcjogcmVuZGVyZXJUeXBlLFxuICAgICAgICB2YWx1ZUFjY2Vzc29yOiB1bmRlZmluZWQsXG4gICAgICAgIGNlbGxDbGFzc0Z1bmM6ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBjZWxsQ2xhc3MgPSB7fTtcbiAgICAgICAgICBpZiAoZmllbGQudHlwZSkge1xuICAgICAgICAgICAgY2VsbENsYXNzW2BjbGFzc18ke2ZpZWxkLnR5cGV9YF0gPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGNlbGxDbGFzcztcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHByaW1hcnk6IGZpZWxkLnByaW1hcnkgPT09IHRydWUgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgIHZpc2libGU6IGZpZWxkLnZpc2libGUsXG4gICAgICAgIHZhbGlkYXRpb246IGZpZWxkLnZhbGlkYXRpb24sXG4gICAgICAgIGxpbmtDb2x1bW5Gb3JjZTogZmllbGQubGlua0NvbHVtbkZvcmNlLFxuICAgICAgICB0eXBlOiBmaWVsZC50eXBlLFxuICAgICAgICBkb21haW5WYWx1ZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgcmVsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgbXVsdGlwbGU6IGZpZWxkLm11bHRpcGxlLFxuICAgICAgICBzdGVwOiBmaWVsZC5zdGVwLFxuICAgICAgICB0b29sdGlwOiBmaWVsZC50b29sdGlwXG4gICAgICB9O1xuXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2xpc3QnIHx8IGZpZWxkLnR5cGUgPT09ICdhdXRvY29tcGxldGUnKSB7XG4gICAgICAgIHRoaXMuZ2V0RG9tYWluVmFsdWVzKGZpZWxkLnJlbGF0aW9uKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIGNvbHVtbi5kb21haW5WYWx1ZXMgPSByZXN1bHQ7XG4gICAgICAgICAgY29sdW1uLnJlbGF0aW9uID0gZmllbGQucmVsYXRpb247XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICB9KTtcblxuICAgIHJlbGF0aW9uc0NvbHVtbiA9IHJlbGF0aW9ucy5tYXAoKHJlbGF0aW9uOiBSZWxhdGlvbk9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IGBwcm9wZXJ0aWVzLiR7cmVsYXRpb24ubmFtZX1gLFxuICAgICAgICB0aXRsZTogcmVsYXRpb24uYWxpYXMgPyByZWxhdGlvbi5hbGlhcyA6IHJlbGF0aW9uLm5hbWUsXG4gICAgICAgIHJlbmRlcmVyOiBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyLkljb24sXG4gICAgICAgIGljb246IHJlbGF0aW9uLmljb24sXG4gICAgICAgIHBhcmVudDogcmVsYXRpb24ucGFyZW50LFxuICAgICAgICB0eXBlOiAncmVsYXRpb24nLFxuICAgICAgICB0b29sdGlwOiByZWxhdGlvbi50b29sdGlwLFxuICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuYWRkaW5nJC5nZXRWYWx1ZSgpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy53cyQubmV4dChyZWxhdGlvbi50aXRsZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjZWxsQ2xhc3NGdW5jOiAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgY2xhc3NfaWNvbjogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgY29sdW1ucy5wdXNoKC4uLnJlbGF0aW9uc0NvbHVtbik7XG4gICAgY29sdW1ucy5wdXNoKC4uLmJ1dHRvbnMpO1xuXG4gICAgd29ya3NwYWNlLm1ldGEudGFibGVUZW1wbGF0ZSA9IHtcbiAgICAgIHNlbGVjdGlvbjogZmFsc2UsXG4gICAgICBzb3J0OiB0cnVlLFxuICAgICAgY29sdW1uc1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc2F2ZUZlYXR1cmUoZmVhdHVyZSwgd29ya3NwYWNlOiBFZGl0aW9uV29ya3NwYWNlKSB7XG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlRmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2UpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5zYW5pdGl6ZVBhcmFtZXRlcihmZWF0dXJlLCB3b3Jrc3BhY2UpO1xuXG4gICAgY29uc3QgYmFzZVVybCA9IHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5iYXNlVXJsO1xuICAgIGxldCB1cmwgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCdlZGl0aW9uLnVybCcpO1xuXG4gICAgaWYgKCF1cmwpIHtcbiAgICAgIHVybCA9IGJhc2VVcmw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVybCArPSBiYXNlVXJsID8gYmFzZVVybCA6ICcnO1xuICAgIH1cblxuICAgIGlmIChmZWF0dXJlLm5ld0ZlYXR1cmUpIHtcbiAgICAgIHVybCArPSB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24uYWRkVXJsO1xuXG4gICAgICBjb25zdCBhZGRIZWFkZXJzID0gd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLmFkZEhlYWRlcnM7XG4gICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKGFkZEhlYWRlcnMpO1xuXG4gICAgICB0aGlzLmFkZEZlYXR1cmUoZmVhdHVyZSwgd29ya3NwYWNlLCB1cmwsIGhlYWRlcnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoXG4gICAgICAgIHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5tb2RpZnlQcm90b2NvbCAhPT0gJ3Bvc3QnXG4gICAgICApIHtcbiAgICAgICAgdXJsICs9XG4gICAgICAgICAgJz8nICtcbiAgICAgICAgICB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24ubW9kaWZ5VXJsICtcbiAgICAgICAgICBmZWF0dXJlLmlka2V5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXJsICs9IHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5tb2RpZnlVcmw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb3RvY29sZSA9XG4gICAgICAgIHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5tb2RpZnlQcm90b2NvbDtcbiAgICAgIGNvbnN0IG1vZGlmeUhlYWRlcnMgPVxuICAgICAgICB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24ubW9kaWZ5SGVhZGVycztcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMobW9kaWZ5SGVhZGVycyk7XG5cbiAgICAgIHRoaXMubW9kaWZ5RmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2UsIHVybCwgaGVhZGVycywgcHJvdG9jb2xlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkRmVhdHVyZShcbiAgICBmZWF0dXJlLFxuICAgIHdvcmtzcGFjZTogRWRpdGlvbldvcmtzcGFjZSxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICkge1xuICAgIGlmICh3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24uaGFzR2VvbWV0cnkpIHtcbiAgICAgIGNvbnN0IHByb2pEZXN0ID1cbiAgICAgICAgd29ya3NwYWNlLmxheWVyLm9wdGlvbnMuc291cmNlT3B0aW9ucy5lZGl0aW9uLmdlb21EYXRhYmFzZVByb2o7XG4gICAgICBmZWF0dXJlLnByb3BlcnRpZXNbXG4gICAgICAgIHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMucGFyYW1zLmZpZWxkTmFtZUdlb21ldHJ5XG4gICAgICBdID1cbiAgICAgICAgJ1NSSUQ9JyArXG4gICAgICAgIHByb2pEZXN0LnJlcGxhY2UoJ0VQU0c6JywgJycpICtcbiAgICAgICAgJzsnICtcbiAgICAgICAgdGhpcy53a3RGb3JtYXQud3JpdGVHZW9tZXRyeShcbiAgICAgICAgICB0aGlzLmdlb0pzb25Gb3JtYXRcbiAgICAgICAgICAgIC5yZWFkRmVhdHVyZShmZWF0dXJlLmdlb21ldHJ5KVxuICAgICAgICAgICAgLmdldEdlb21ldHJ5KClcbiAgICAgICAgICAgIC50cmFuc2Zvcm0oJ0VQU0c6NDMyNicsIHByb2pEZXN0KSxcbiAgICAgICAgICB7IGRhdGFQcm9qZWN0aW9uOiBwcm9qRGVzdCB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBmZWF0dXJlLnByb3BlcnRpZXMpIHtcbiAgICAgIGZvciAoY29uc3Qgc2Ygb2Ygd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5zb3VyY2VGaWVsZHMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChzZi5uYW1lID09PSBwcm9wZXJ0eSAmJiBzZi52YWxpZGF0aW9uPy5yZWFkb25seSkgfHxcbiAgICAgICAgICAoc2YubmFtZSA9PT0gcHJvcGVydHkgJiYgc2YudmFsaWRhdGlvbj8uc2VuZCA9PT0gZmFsc2UpXG4gICAgICAgICkge1xuICAgICAgICAgIGRlbGV0ZSBmZWF0dXJlLnByb3BlcnRpZXNbcHJvcGVydHldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KGAke3VybH1gLCBmZWF0dXJlLnByb3BlcnRpZXMsIHsgaGVhZGVyczogaGVhZGVycyB9KVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHdvcmtzcGFjZS5lbnRpdHlTdG9yZS5zdGF0ZVZpZXcuY2xlYXIoKTtcbiAgICAgICAgICB3b3Jrc3BhY2UuZGVsZXRlRHJhd2luZ3MoKTtcbiAgICAgICAgICB3b3Jrc3BhY2UuZW50aXR5U3RvcmUuZGVsZXRlKGZlYXR1cmUpO1xuXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKCdpZ28uZ2VvLndvcmtzcGFjZS5hZGRTdWNjZXNzJyk7XG5cbiAgICAgICAgICB0aGlzLnJlZnJlc2hNYXAod29ya3NwYWNlLmxheWVyIGFzIFZlY3RvckxheWVyLCB3b3Jrc3BhY2UubGF5ZXIubWFwKTtcbiAgICAgICAgICB0aGlzLmFkZGluZyQubmV4dChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5yb3dzSW5NYXBFeHRlbnRDaGVja0NvbmRpdGlvbiQubmV4dCh0cnVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgZXJyb3IuZXJyb3IuY2F1Z2h0ID0gdHJ1ZTtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlcyA9IHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5tZXNzYWdlcztcbiAgICAgICAgICBpZiAobWVzc2FnZXMpIHtcbiAgICAgICAgICAgIGxldCB0ZXh0O1xuICAgICAgICAgICAgbWVzc2FnZXMuZm9yRWFjaCgobWVzc2FnZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhtZXNzYWdlKVswXTtcbiAgICAgICAgICAgICAgaWYgKGVycm9yLmVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIHRleHQgPSBtZXNzYWdlW2tleV07XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcih0ZXh0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoIXRleHQpIHtcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcignaWdvLmdlby53b3Jrc3BhY2UuYWRkRXJyb3InKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcignaWdvLmdlby53b3Jrc3BhY2UuYWRkRXJyb3InKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlRmVhdHVyZSh3b3Jrc3BhY2U6IEVkaXRpb25Xb3Jrc3BhY2UsIHVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmh0dHAuZGVsZXRlKGAke3VybH1gLCB7fSkuc3Vic2NyaWJlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKCdpZ28uZ2VvLndvcmtzcGFjZS5kZWxldGVTdWNjZXNzJyk7XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoTWFwKHdvcmtzcGFjZS5sYXllciBhcyBWZWN0b3JMYXllciwgd29ya3NwYWNlLmxheWVyLm1hcCk7XG4gICAgICAgIGNvbnN0IHJlbGF0aW9ucyA9XG4gICAgICAgICAgd29ya3NwYWNlLmxheWVyLm9wdGlvbnMuc291cmNlT3B0aW9ucz8ucmVsYXRpb25zID8/IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHJlbGF0aW9uIG9mIHJlbGF0aW9ucykge1xuICAgICAgICAgIGNvbnN0IGxheWVyID0gd29ya3NwYWNlLm1hcC5sYXllckNvbnRyb2xsZXIuYWxsLmZpbmQoXG4gICAgICAgICAgICAobGF5ZXIpID0+IGlzTGF5ZXJJdGVtKGxheWVyKSAmJiBsYXllci50aXRsZSA9PT0gcmVsYXRpb24udGl0bGVcbiAgICAgICAgICApIGFzIExheWVyO1xuICAgICAgICAgIGxheWVyPy5kYXRhU291cmNlLm9sLnJlZnJlc2goKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgZXJyb3IuZXJyb3IuY2F1Z2h0ID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgbWVzc2FnZXMgPSB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24ubWVzc2FnZXM7XG4gICAgICAgIGlmIChtZXNzYWdlcykge1xuICAgICAgICAgIGxldCB0ZXh0O1xuICAgICAgICAgIG1lc3NhZ2VzLmZvckVhY2goKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKG1lc3NhZ2UpWzBdO1xuICAgICAgICAgICAgaWYgKGVycm9yLmVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgICB0ZXh0ID0gbWVzc2FnZVtrZXldO1xuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKHRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmICghdGV4dCkge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcignaWdvLmdlby53b3Jrc3BhY2UuYWRkRXJyb3InKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcignaWdvLmdlby53b3Jrc3BhY2UuYWRkRXJyb3InKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbW9kaWZ5RmVhdHVyZShcbiAgICBmZWF0dXJlLFxuICAgIHdvcmtzcGFjZTogRWRpdGlvbldvcmtzcGFjZSxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIHByb3RvY29sZSA9ICdwYXRjaCdcbiAgKSB7XG4gICAgaWYgKHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5oYXNHZW9tZXRyeSkge1xuICAgICAgY29uc3QgcHJvakRlc3QgPVxuICAgICAgICB3b3Jrc3BhY2UubGF5ZXIub3B0aW9ucy5zb3VyY2VPcHRpb25zLmVkaXRpb24uZ2VvbURhdGFiYXNlUHJvajtcbiAgICAgIC8vIFJlbW92ZSAzZSBkaW1lbnNpb25cbiAgICAgIGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMgPSByZW1vdmVaKGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMpO1xuICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzW1xuICAgICAgICB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLnBhcmFtcy5maWVsZE5hbWVHZW9tZXRyeVxuICAgICAgXSA9XG4gICAgICAgICdTUklEPScgK1xuICAgICAgICBwcm9qRGVzdC5yZXBsYWNlKCdFUFNHOicsICcnKSArXG4gICAgICAgICc7JyArXG4gICAgICAgIHRoaXMud2t0Rm9ybWF0LndyaXRlR2VvbWV0cnkoXG4gICAgICAgICAgdGhpcy5nZW9Kc29uRm9ybWF0XG4gICAgICAgICAgICAucmVhZEZlYXR1cmUoZmVhdHVyZS5nZW9tZXRyeSlcbiAgICAgICAgICAgIC5nZXRHZW9tZXRyeSgpXG4gICAgICAgICAgICAudHJhbnNmb3JtKCdFUFNHOjQzMjYnLCBwcm9qRGVzdCksXG4gICAgICAgICAgeyBkYXRhUHJvamVjdGlvbjogcHJvakRlc3QgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gZmVhdHVyZS5wcm9wZXJ0aWVzKSB7XG4gICAgICBmb3IgKGNvbnN0IHNmIG9mIHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuc291cmNlRmllbGRzKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAoc2YubmFtZSA9PT0gcHJvcGVydHkgJiYgc2YudmFsaWRhdGlvbj8ucmVhZG9ubHkpIHx8XG4gICAgICAgICAgKHNmLm5hbWUgPT09IHByb3BlcnR5ICYmIHNmLnZhbGlkYXRpb24/LnNlbmQgPT09IGZhbHNlKSB8fFxuICAgICAgICAgIHByb3BlcnR5ID09PSAnYm91bmRlZEJ5J1xuICAgICAgICApIHtcbiAgICAgICAgICBkZWxldGUgZmVhdHVyZS5wcm9wZXJ0aWVzW3Byb3BlcnR5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5odHRwW3Byb3RvY29sZV0oYCR7dXJsfWAsIGZlYXR1cmUucHJvcGVydGllcywge1xuICAgICAgaGVhZGVyczogaGVhZGVyc1xuICAgIH0pLnN1YnNjcmliZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2FuY2VsRWRpdCh3b3Jrc3BhY2UsIGZlYXR1cmUsIHRydWUpO1xuXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3VjY2VzcygnaWdvLmdlby53b3Jrc3BhY2UubW9kaWZ5U3VjY2VzcycpO1xuXG4gICAgICAgIHRoaXMucmVmcmVzaE1hcCh3b3Jrc3BhY2UubGF5ZXIgYXMgVmVjdG9yTGF5ZXIsIHdvcmtzcGFjZS5sYXllci5tYXApO1xuXG4gICAgICAgIGNvbnN0IHJlbGF0aW9uTGF5ZXJzID0gW107XG4gICAgICAgIHdvcmtzcGFjZS5sYXllci5vcHRpb25zLnNvdXJjZU9wdGlvbnMucmVsYXRpb25zPy5mb3JFYWNoKChyZWxhdGlvbikgPT4ge1xuICAgICAgICAgIHdvcmtzcGFjZS5tYXAubGF5ZXJDb250cm9sbGVyLmFsbC5mb3JFYWNoKChsYXllcikgPT4ge1xuICAgICAgICAgICAgaWYgKGlzTGF5ZXJJdGVtKGxheWVyKSAmJiBsYXllci50aXRsZSA9PT0gcmVsYXRpb24udGl0bGUpIHtcbiAgICAgICAgICAgICAgcmVsYXRpb25MYXllcnMucHVzaChsYXllcik7XG4gICAgICAgICAgICAgIGxheWVyLmRhdGFTb3VyY2Uub2wucmVmcmVzaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWxhdGlvbkxheWVycyQubmV4dChyZWxhdGlvbkxheWVycyk7XG4gICAgICB9LFxuICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICBlcnJvci5lcnJvci5jYXVnaHQgPSB0cnVlO1xuICAgICAgICBjb25zdCBtZXNzYWdlcyA9IHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5tZXNzYWdlcztcbiAgICAgICAgaWYgKG1lc3NhZ2VzKSB7XG4gICAgICAgICAgbGV0IHRleHQ7XG4gICAgICAgICAgbWVzc2FnZXMuZm9yRWFjaCgobWVzc2FnZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMobWVzc2FnZSlbMF07XG4gICAgICAgICAgICBpZiAoZXJyb3IuZXJyb3IubWVzc2FnZS5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICAgIHRleHQgPSBtZXNzYWdlW2tleV07XG4gICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IodGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKCF0ZXh0KSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKCdpZ28uZ2VvLndvcmtzcGFjZS5hZGRFcnJvcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKCdpZ28uZ2VvLndvcmtzcGFjZS5hZGRFcnJvcicpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGNhbmNlbEVkaXQod29ya3NwYWNlOiBFZGl0aW9uV29ya3NwYWNlLCBmZWF0dXJlLCBmcm9tU2F2ZSA9IGZhbHNlKSB7XG4gICAgZmVhdHVyZS5lZGl0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5hZGRpbmckLm5leHQoZmFsc2UpO1xuICAgIHdvcmtzcGFjZS5kZWxldGVEcmF3aW5ncygpO1xuICAgIHdvcmtzcGFjZS5lbnRpdHlTdG9yZS5zdGF0ZVZpZXcuY2xlYXIoKTtcblxuICAgIGlmIChmZWF0dXJlLm5ld0ZlYXR1cmUpIHtcbiAgICAgIHdvcmtzcGFjZS5lbnRpdHlTdG9yZS5kZWxldGUoZmVhdHVyZSk7XG4gICAgICB3b3Jrc3BhY2UuZGVhY3RpdmF0ZURyYXdDb250cm9sKCk7XG5cbiAgICAgIHRoaXMucm93c0luTWFwRXh0ZW50Q2hlY2tDb25kaXRpb24kLm5leHQodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghZnJvbVNhdmUpIHtcbiAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzID0gZmVhdHVyZS5vcmlnaW5hbF9wcm9wZXJ0aWVzO1xuICAgICAgICBmZWF0dXJlLmdlb21ldHJ5ID0gZmVhdHVyZS5vcmlnaW5hbF9nZW9tZXRyeTtcbiAgICAgIH1cbiAgICAgIGRlbGV0ZSBmZWF0dXJlLm9yaWdpbmFsX3Byb3BlcnRpZXM7XG4gICAgICBkZWxldGUgZmVhdHVyZS5vcmlnaW5hbF9nZW9tZXRyeTtcbiAgICB9XG4gIH1cblxuICBnZXREb21haW5WYWx1ZXMocmVsYXRpb246IFJlbGF0aW9uT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHVybCA9IHJlbGF0aW9uLnVybDtcbiAgICBpZiAoIXVybCkge1xuICAgICAgdXJsID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygnZWRpdGlvbi51cmwnKVxuICAgICAgICA/IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ2VkaXRpb24udXJsJykgKyByZWxhdGlvbi50YWJsZVxuICAgICAgICA6IHJlbGF0aW9uLnRhYmxlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4odXJsKS5waXBlKFxuICAgICAgbWFwKChyZXN1bHQpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICBlcnIuZXJyb3IuY2F1Z2h0ID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qXG4gICAqIFJlZnJlc2ggYm90aCB3bXMgYW5kIHdmcyBsYXllclxuICAgKiBBIG5ldyB3ZnMgbG9hZGVyIGlzIHVzZWQgdG8gZW5zdXJlIGNhY2hlIGlzIG5vdCByZXRyaWV2aW5nIG9sZCBkYXRhXG4gICAqIFdNUyBwYXJhbXMgYXJlIHVwZGF0ZWQgdG8gZW5zdXJlIGxheWVyIGlzIGNvcnJlY3RseSByZWZyZXNoZWRcbiAgICovXG4gIHJlZnJlc2hNYXAobGF5ZXI6IFZlY3RvckxheWVyLCBtYXA6IE1hcEJhc2UpIHtcbiAgICBjb25zdCB3ZnNPbExheWVyID0gbGF5ZXIuZGF0YVNvdXJjZS5vbDtcbiAgICBjb25zdCBsb2FkZXI6IEZlYXR1cmVMb2FkZXIgPSAoXG4gICAgICBleHRlbnQsXG4gICAgICByZXNvbHV0aW9uLFxuICAgICAgcHJvaixcbiAgICAgIHN1Y2Nlc3MsXG4gICAgICBmYWlsdXJlXG4gICAgKSA9PiB7XG4gICAgICBsYXllci5jdXN0b21XRlNMb2FkZXIoXG4gICAgICAgIGxheWVyLm9sLmdldFNvdXJjZSgpLFxuICAgICAgICBsYXllci5vcHRpb25zLnNvdXJjZU9wdGlvbnMgYXMgV0ZTRGF0YVNvdXJjZU9wdGlvbnMsXG4gICAgICAgIHRoaXMuYXV0aEludGVyY2VwdG9yLFxuICAgICAgICBleHRlbnQsXG4gICAgICAgIHJlc29sdXRpb24sXG4gICAgICAgIHByb2osXG4gICAgICAgIHN1Y2Nlc3MsXG4gICAgICAgIGZhaWx1cmUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgfTtcbiAgICB3ZnNPbExheWVyLnNldExvYWRlcihsb2FkZXIpO1xuICAgIHdmc09sTGF5ZXIucmVmcmVzaCgpO1xuXG4gICAgZm9yIChjb25zdCBsYXkgb2YgbWFwLmxheWVyQ29udHJvbGxlci5hbGwpIHtcbiAgICAgIGlmIChcbiAgICAgICAgaXNMYXllckl0ZW0obGF5KSAmJlxuICAgICAgICBsYXkuaWQgIT09IGxheWVyLmlkICYmXG4gICAgICAgIGxheS5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua0lkLmluY2x1ZGVzKFxuICAgICAgICAgIGxheWVyLmlkLnN1YnN0cigwLCBsYXllci5pZC5pbmRleE9mKCcuJykgLSAxKVxuICAgICAgICApICYmXG4gICAgICAgIGxheS5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua0lkLmluY2x1ZGVzKCdXbXNXb3Jrc3BhY2VUYWJsZVNyYycpXG4gICAgICApIHtcbiAgICAgICAgY29uc3Qgd21zT2xMYXllciA9IGxheS5kYXRhU291cmNlLm9sIGFzIG9sU291cmNlSW1hZ2VXTVM7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHdtc09sTGF5ZXIuZ2V0UGFyYW1zKCk7XG4gICAgICAgIHBhcmFtcy5fdCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICB3bXNPbExheWVyLnVwZGF0ZVBhcmFtcyhwYXJhbXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlRmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2U6IEVkaXRpb25Xb3Jrc3BhY2UpIHtcbiAgICBsZXQga2V5O1xuICAgIGxldCB2YWxpZCA9IHRydWU7XG4gICAgd29ya3NwYWNlLm1ldGEudGFibGVUZW1wbGF0ZS5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgaWYgKGNvbHVtbi5oYXNPd25Qcm9wZXJ0eSgndmFsaWRhdGlvbicpICYmIGNvbHVtbi52YWxpZGF0aW9uKSB7XG4gICAgICAgIGtleSA9IGdldENvbHVtbktleVdpdGhvdXRQcm9wZXJ0aWVzVGFnKGNvbHVtbi5uYW1lKTtcbiAgICAgICAgT2JqZWN0LmtleXMoY29sdW1uLnZhbGlkYXRpb24pLmZvckVhY2goKHR5cGUpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ21hbmRhdG9yeSc6IHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdICYmXG4gICAgICAgICAgICAgICAgKCFmZWF0dXJlLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSB8fFxuICAgICAgICAgICAgICAgICAgIWZlYXR1cmUucHJvcGVydGllc1trZXldKVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAnaWdvLmdlby5mb3JtVmFsaWRhdGlvbi5tYW5kYXRvcnknLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgeyBjb2x1bW46IGNvbHVtbi50aXRsZSB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ21pblZhbHVlJzoge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkgJiZcbiAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNba2V5XSAmJlxuICAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllc1trZXldIDwgY29sdW1uLnZhbGlkYXRpb25bdHlwZV1cbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgJ2lnby5nZW8uZm9ybVZhbGlkYXRpb24ubWluVmFsdWUnLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbi50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ21heFZhbHVlJzoge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkgJiZcbiAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNba2V5XSAmJlxuICAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllc1trZXldID4gY29sdW1uLnZhbGlkYXRpb25bdHlwZV1cbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgJ2lnby5nZW8uZm9ybVZhbGlkYXRpb24ubWF4VmFsdWUnLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbi50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ21pbkxlbmd0aCc6IHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzW2tleV0gJiZcbiAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNba2V5XS5sZW5ndGggPCBjb2x1bW4udmFsaWRhdGlvblt0eXBlXVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAnaWdvLmdlby5mb3JtVmFsaWRhdGlvbi5taW5MZW5ndGgnLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbi50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ21heExlbmd0aCc6IHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzW2tleV0gJiZcbiAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNba2V5XS5sZW5ndGggPiBjb2x1bW4udmFsaWRhdGlvblt0eXBlXVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAnaWdvLmdlby5mb3JtVmFsaWRhdGlvbi5tYXhMZW5ndGgnLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbi50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB2YWxpZDtcbiAgfVxuXG4gIHNhbml0aXplUGFyYW1ldGVyKGZlYXR1cmUsIHdvcmtzcGFjZTogRWRpdGlvbldvcmtzcGFjZSkge1xuICAgIHdvcmtzcGFjZS5tZXRhLnRhYmxlVGVtcGxhdGUuY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgY29sdW1uLnR5cGUgPT09ICdsaXN0JyAmJlxuICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNbZ2V0Q29sdW1uS2V5V2l0aG91dFByb3BlcnRpZXNUYWcoY29sdW1uLm5hbWUpXVxuICAgICAgKSB7XG4gICAgICAgIGZlYXR1cmUucHJvcGVydGllc1tnZXRDb2x1bW5LZXlXaXRob3V0UHJvcGVydGllc1RhZyhjb2x1bW4ubmFtZSldID1cbiAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNbXG4gICAgICAgICAgICBnZXRDb2x1bW5LZXlXaXRob3V0UHJvcGVydGllc1RhZyhjb2x1bW4ubmFtZSlcbiAgICAgICAgICBdLnRvU3RyaW5nKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0Q29sdW1uS2V5V2l0aG91dFByb3BlcnRpZXNUYWcoY29sdW1uOiBzdHJpbmcpIHtcbiAgaWYgKGNvbHVtbi5pbmNsdWRlcygncHJvcGVydGllcy4nKSkge1xuICAgIHJldHVybiBjb2x1bW4uc3BsaXQoJy4nKVsxXTtcbiAgfVxuICByZXR1cm4gY29sdW1uO1xufVxuXG5mdW5jdGlvbiByZW1vdmVaKGNvb3JkczogYW55KSB7XG4gIGlmIChjb29yZHMubGVuZ3RoID09PSAwKSByZXR1cm4gY29vcmRzO1xuICBpZiAodHlwZW9mIGNvb3Jkc1swXSA9PT0gJ251bWJlcicpIHJldHVybiBjb29yZHMuc2xpY2UoMCwgMik7XG4gIHJldHVybiBjb29yZHMubWFwKHJlbW92ZVopO1xufVxuIl19
720
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGlvbi13b3Jrc3BhY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL3dvcmtzcGFjZS9zaGFyZWQvZWRpdGlvbi13b3Jrc3BhY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQ0FBMEM7QUFDMUMsT0FBTyxFQUNMLFVBQVUsRUFFVixXQUFXLEVBQ1osTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsa0NBQWtDLEVBRWxDLHlCQUF5QixFQUUxQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSXBELE9BQU8sT0FBTyxNQUFNLG1CQUFtQixDQUFDO0FBQ3hDLE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQztBQUloQyxPQUFPLEVBQUUsZUFBZSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFPbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFFM0YsT0FBTyxFQUVMLGFBQWEsRUFDYixZQUFZLEVBQ1osK0JBQStCLEVBQy9CLG1DQUFtQyxF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TUFBTTs7NEZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7QUErMEJELFNBQVMsZ0NBQWdDLENBQUMsTUFBYztJQUN0RCxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FBQyxNQUFXO0lBQzFCLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFDdkMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRO1FBQUUsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3RCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvdHlwZS1idWlsdGlucyAqL1xuaW1wb3J0IHtcbiAgSHR0cENsaWVudCxcbiAgSHR0cEVycm9yUmVzcG9uc2UsXG4gIEh0dHBIZWFkZXJzXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEF1dGhJbnRlcmNlcHRvciB9IGZyb20gJ0BpZ28yL2F1dGgnO1xuaW1wb3J0IHsgQWN0aW9uU3RvcmUgfSBmcm9tICdAaWdvMi9jb21tb24vYWN0aW9uJztcbmltcG9ydCB7XG4gIEVudGl0eVN0b3JlRmlsdGVyU2VsZWN0aW9uU3RyYXRlZ3ksXG4gIEVudGl0eVRhYmxlQnV0dG9uLFxuICBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyLFxuICBFbnRpdHlUYWJsZVRlbXBsYXRlXG59IGZyb20gJ0BpZ28yL2NvbW1vbi9lbnRpdHknO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvY29uZmlnJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9tZXNzYWdlJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9zdG9yYWdlJztcblxuaW1wb3J0IG9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcbmltcG9ydCB7IEZlYXR1cmVMb2FkZXIgfSBmcm9tICdvbC9mZWF0dXJlbG9hZGVyJztcbmltcG9ydCBHZW9KU09OIGZyb20gJ29sL2Zvcm1hdC9HZW9KU09OJztcbmltcG9ydCBXS1QgZnJvbSAnb2wvZm9ybWF0L1dLVCc7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IG9sU291cmNlSW1hZ2VXTVMgZnJvbSAnb2wvc291cmNlL0ltYWdlV01TJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHNraXBXaGlsZSwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgUmVsYXRpb25PcHRpb25zLFxuICBTb3VyY2VGaWVsZHNPcHRpb25zUGFyYW1zLFxuICBXTVNEYXRhU291cmNlXG59IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzJztcbmltcG9ydCB7IEZlYXR1cmVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvZmVhdHVyZS1kYXRhc291cmNlJztcbmltcG9ydCB7IFdGU0RhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvd2ZzLWRhdGFzb3VyY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIEZlYXR1cmUsXG4gIEZlYXR1cmVNb3Rpb24sXG4gIEZlYXR1cmVTdG9yZSxcbiAgRmVhdHVyZVN0b3JlSW5NYXBFeHRlbnRTdHJhdGVneSxcbiAgRmVhdHVyZVN0b3JlSW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3ksXG4gIEZlYXR1cmVTdG9yZUxvYWRpbmdMYXllclN0cmF0ZWd5LFxuICBGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneVxufSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZCc7XG5pbXBvcnQgeyBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IGlzTGF5ZXJJdGVtIH0gZnJvbSAnLi4vLi4vbGF5ZXInO1xuaW1wb3J0IHtcbiAgR2VvV29ya3NwYWNlT3B0aW9ucyxcbiAgSW1hZ2VMYXllcixcbiAgTGF5ZXIsXG4gIExheWVyU2VydmljZSxcbiAgTGF5ZXJzTGlua1Byb3BlcnRpZXMsXG4gIExpbmtlZFByb3BlcnRpZXMsXG4gIFZlY3RvckxheWVyXG59IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZCc7XG5pbXBvcnQgeyBJZ29NYXAsIE1hcEJhc2UgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkJztcbmltcG9ydCB7IFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zIH0gZnJvbSAnLi4vLi4vcXVlcnkvc2hhcmVkL3F1ZXJ5LmludGVyZmFjZXMnO1xuaW1wb3J0IHsgU3R5bGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3R5bGUvc3R5bGUtc2VydmljZS9zdHlsZS5zZXJ2aWNlJztcbmltcG9ydCB7IEVkaXRpb25Xb3Jrc3BhY2UgfSBmcm9tICcuL2VkaXRpb24td29ya3NwYWNlJztcbmltcG9ydCB7IGNyZWF0ZUZpbHRlckluTWFwRXh0ZW50T3JSZXNvbHV0aW9uU3RyYXRlZ3kgfSBmcm9tICcuL3dvcmtzcGFjZS51dGlscyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEVkaXRpb25Xb3Jrc3BhY2VTZXJ2aWNlIHtcbiAgcHVibGljIHdzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPih1bmRlZmluZWQpO1xuICBwdWJsaWMgYWRkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVsYXRpb25MYXllcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJbWFnZUxheWVyW10gfCBWZWN0b3JMYXllcltdPihcbiAgICB1bmRlZmluZWRcbiAgKTtcbiAgcHVibGljIHJvd3NJbk1hcEV4dGVudENoZWNrQ29uZGl0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XG4gIHB1YmxpYyB3a3RGb3JtYXQgPSBuZXcgV0tUKCk7XG4gIHB1YmxpYyBnZW9Kc29uRm9ybWF0ID0gbmV3IEdlb0pTT04oKTtcblxuICBnZXQgem9vbUF1dG8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KCd6b29tQXV0bycpIGFzIGJvb2xlYW47XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxheWVyU2VydmljZTogTGF5ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICBwcml2YXRlIHN0eWxlU2VydmljZTogU3R5bGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBhdXRoSW50ZXJjZXB0b3I/OiBBdXRoSW50ZXJjZXB0b3JcbiAgKSB7fVxuXG4gIGNyZWF0ZVdvcmtzcGFjZShsYXllcjogSW1hZ2VMYXllciwgbWFwOiBJZ29NYXApOiBFZGl0aW9uV29ya3NwYWNlIHtcbiAgICBpZiAoXG4gICAgICBsYXllci5vcHRpb25zLndvcmtzcGFjZT8uZW5hYmxlZCAhPT0gdHJ1ZSB8fFxuICAgICAgbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24uZW5hYmxlZCAhPT0gdHJ1ZVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgd2tzQ29uZmlnO1xuICAgIGlmIChsYXllci5vcHRpb25zLndvcmtzcGFjZSkge1xuICAgICAgd2tzQ29uZmlnID0gbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdrc0NvbmZpZyA9IHt9O1xuICAgIH1cbiAgICB3a3NDb25maWcuc3JjSWQgPSBsYXllci5pZDtcbiAgICB3a3NDb25maWcud29ya3NwYWNlSWQgPSBsYXllci5pZDtcbiAgICB3a3NDb25maWcuZW5hYmxlZCA9IHRydWU7XG4gICAgd2tzQ29uZmlnLnBhZ2VTaXplID0gbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/LnBhZ2VTaXplO1xuICAgIHdrc0NvbmZpZy5wYWdlU2l6ZU9wdGlvbnMgPSBsYXllci5vcHRpb25zLndvcmtzcGFjZT8ucGFnZVNpemVPcHRpb25zO1xuXG4gICAgY29uc3QgZGF0YVNvdXJjZTogV01TRGF0YVNvdXJjZSA9IGxheWVyLmRhdGFTb3VyY2UgYXMgV01TRGF0YVNvdXJjZTtcbiAgICBjb25zdCB3bXNMaW5rSWQgPSBsYXllci5pZCArICcuV21zV29ya3NwYWNlVGFibGVTcmMnO1xuICAgIGNvbnN0IHdmc0xpbmtJZCA9IGxheWVyLmlkICsgJy5XZnNXb3Jrc3BhY2VUYWJsZURlc3QnO1xuICAgIGlmICghbGF5ZXIub3B0aW9ucy5saW5rZWRMYXllcnMpIHtcbiAgICAgIGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzID0geyBsaW5rSWQ6IHdtc0xpbmtJZCwgbGlua3M6IFtdIH07XG4gICAgfVxuICAgIGNvbnN0IGxpbmtQcm9wZXJ0aWVzID0ge1xuICAgICAgc3luY2VkRGVsZXRlOiB0cnVlLFxuICAgICAgbGlua2VkSWRzOiBbd2ZzTGlua0lkXSxcbiAgICAgIHByb3BlcnRpZXM6IFtMaW5rZWRQcm9wZXJ0aWVzLlpJTkRFWCwgTGlua2VkUHJvcGVydGllcy5WSVNJQkxFXVxuICAgIH0gYXMgTGF5ZXJzTGlua1Byb3BlcnRpZXM7XG5cbiAgICBpZiAoIWxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5taW5SZXNvbHV0aW9uKSB7XG4gICAgICBsaW5rUHJvcGVydGllcy5wcm9wZXJ0aWVzLnB1c2goTGlua2VkUHJvcGVydGllcy5NSU5SRVNPTFVUSU9OKTtcbiAgICB9XG4gICAgbGV0IGhhc09nY0ZpbHRlcnMgPSBmYWxzZTtcbiAgICBpZiAoXG4gICAgICAoZGF0YVNvdXJjZS5vcHRpb25zIGFzIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucykub2djRmlsdGVycz8uZW5hYmxlZFxuICAgICkge1xuICAgICAgbGlua1Byb3BlcnRpZXMucHJvcGVydGllcy5wdXNoKExpbmtlZFByb3BlcnRpZXMuT0dDRklMVEVSUyk7XG4gICAgICBoYXNPZ2NGaWx0ZXJzID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCFsYXllci5vcHRpb25zLndvcmtzcGFjZT8ubWF4UmVzb2x1dGlvbikge1xuICAgICAgbGlua1Byb3BlcnRpZXMucHJvcGVydGllcy5wdXNoKExpbmtlZFByb3BlcnRpZXMuTUFYUkVTT0xVVElPTik7XG4gICAgfVxuXG4gICAgbGV0IGNsb25lZExpbmtzOiBMYXllcnNMaW5rUHJvcGVydGllc1tdID0gW107XG4gICAgaWYgKGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtzKSB7XG4gICAgICBjbG9uZWRMaW5rcyA9IEpTT04ucGFyc2UoXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtzKVxuICAgICAgKTtcbiAgICB9XG4gICAgY2xvbmVkTGlua3MucHVzaChsaW5rUHJvcGVydGllcyk7XG5cbiAgICAvLyBUT0RPOiBEw6lteXN0aWZpZXIgY2UgYm91dCBkZSBjb2RlXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtZXhwcmVzc2lvbnNcbiAgICAoKGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtJZCA9IGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtJZFxuICAgICAgPyBsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rSWRcbiAgICAgIDogd21zTGlua0lkKSxcbiAgICAgIChsYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rcyA9IGNsb25lZExpbmtzKSk7XG4gICAgaW50ZXJmYWNlIFdGU29wdGlvbnNcbiAgICAgIGV4dGVuZHMgV0ZTRGF0YVNvdXJjZU9wdGlvbnMsIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyB7fVxuXG4gICAgbGF5ZXIuY3JlYXRlTGluaygpO1xuXG4gICAgbGV0IHdrcztcbiAgICB0aGlzLmxheWVyU2VydmljZVxuICAgICAgLmNyZWF0ZUFzeW5jTGF5ZXIoe1xuICAgICAgICB0aXRsZTogbGF5ZXIudGl0bGUsXG4gICAgICAgIHBhcmVudElkOiBsYXllci5vcHRpb25zLnBhcmVudElkLFxuICAgICAgICB2aXNpYmxlOiBsYXllci52aXNpYmxlLFxuICAgICAgICBpZDogd2ZzTGlua0lkLFxuICAgICAgICBsaW5rZWRMYXllcnM6IHtcbiAgICAgICAgICBsaW5rSWQ6IHdmc0xpbmtJZFxuICAgICAgICB9LFxuICAgICAgICB3b3Jrc3BhY2U6IHtcbiAgICAgICAgICBzcmNJZDogbGF5ZXIuaWQsXG4gICAgICAgICAgd29ya3NwYWNlSWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICBxdWVyeU9wdGlvbnM6IHtcbiAgICAgICAgICAgIG1hcFF1ZXJ5T25PcGVuVGFiOlxuICAgICAgICAgICAgICBsYXllci5vcHRpb25zLndvcmtzcGFjZT8ucXVlcnlPcHRpb25zPy5tYXBRdWVyeU9uT3BlblRhYixcbiAgICAgICAgICAgIHRhYlF1ZXJ5OiBmYWxzZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFnZVNpemU6IGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5wYWdlU2l6ZSxcbiAgICAgICAgICBwYWdlU2l6ZU9wdGlvbnM6IGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5wYWdlU2l6ZU9wdGlvbnNcbiAgICAgICAgfSxcbiAgICAgICAgc2hvd0luTGF5ZXJMaXN0OiBmYWxzZSxcbiAgICAgICAgaXNJZ29JbnRlcm5hbExheWVyOiB0cnVlLFxuICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICBtaW5SZXNvbHV0aW9uOlxuICAgICAgICAgIGxheWVyLm9wdGlvbnMud29ya3NwYWNlPy5taW5SZXNvbHV0aW9uIHx8IGxheWVyLm1pblJlc29sdXRpb24gfHwgMCxcbiAgICAgICAgbWF4UmVzb2x1dGlvbjpcbiAgICAgICAgICBsYXllci5vcHRpb25zLndvcmtzcGFjZT8ubWF4UmVzb2x1dGlvbiB8fFxuICAgICAgICAgIGxheWVyLm1heFJlc29sdXRpb24gfHxcbiAgICAgICAgICBJbmZpbml0eSxcbiAgICAgICAgc3R5bGU6IHRoaXMuc3R5bGVTZXJ2aWNlLmNyZWF0ZVN0eWxlKHtcbiAgICAgICAgICBmaWxsOiB7XG4gICAgICAgICAgICBjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMSknXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdHJva2U6IHtcbiAgICAgICAgICAgIGNvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAxKSdcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNpcmNsZToge1xuICAgICAgICAgICAgZmlsbDoge1xuICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMSknXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3Ryb2tlOiB7XG4gICAgICAgICAgICAgIGNvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAxKSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByYWRpdXM6IDVcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzb3VyY2VPcHRpb25zOiB7XG4gICAgICAgICAgZG93bmxvYWQ6IGRhdGFTb3VyY2Uub3B0aW9ucy5kb3dubG9hZCxcbiAgICAgICAgICB0eXBlOiAnd2ZzJyxcbiAgICAgICAgICB1cmw6IGRhdGFTb3VyY2Uub3B0aW9ucy51cmxXZnMgfHwgZGF0YVNvdXJjZS5vcHRpb25zLnVybCxcbiAgICAgICAgICBxdWVyeWFibGU6IHRydWUsXG4gICAgICAgICAgcmVsYXRpb25zOiBkYXRhU291cmNlLm9wdGlvbnMucmVsYXRpb25zLFxuICAgICAgICAgIHF1ZXJ5VGl0bGU6IChkYXRhU291cmNlLm9wdGlvbnMgYXMgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMpXG4gICAgICAgICAgICAucXVlcnlUaXRsZSxcbiAgICAgICAgICBwYXJhbXM6IGRhdGFTb3VyY2Uub3B0aW9ucy5wYXJhbXNXRlMsXG4gICAgICAgICAgb2djRmlsdGVyczogT2JqZWN0LmFzc2lnbih7fSwgZGF0YVNvdXJjZS5vZ2NGaWx0ZXJzLCB7XG4gICAgICAgICAgICBlbmFibGVkOiBoYXNPZ2NGaWx0ZXJzXG4gICAgICAgICAgfSksXG4gICAgICAgICAgc291cmNlRmllbGRzOiBkYXRhU291cmNlLm9wdGlvbnMuc291cmNlRmllbGRzIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICBlZGl0aW9uOiBkYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvblxuICAgICAgICB9IGFzIFdGU29wdGlvbnNcbiAgICAgIH0pXG4gICAgICAuc3Vic2NyaWJlKCh3b3Jrc3BhY2VMYXllcjogVmVjdG9yTGF5ZXIpID0+IHtcbiAgICAgICAgbWFwLmxheWVyQ29udHJvbGxlci5hZGQod29ya3NwYWNlTGF5ZXIpO1xuICAgICAgICBsYXllci5vbC5zZXRQcm9wZXJ0aWVzKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxpbmtlZExheWVyczoge1xuICAgICAgICAgICAgICBsaW5rSWQ6IGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtJZCxcbiAgICAgICAgICAgICAgbGlua3M6IGNsb25lZExpbmtzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgICAgICB3b3Jrc3BhY2VMYXllci5kYXRhU291cmNlLm9sLnJlZnJlc2goKTtcblxuICAgICAgICB3a3MgPSBuZXcgRWRpdGlvbldvcmtzcGFjZShcbiAgICAgICAgICB0aGlzLmRpYWxvZyxcbiAgICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2UsXG4gICAgICAgICAgdGhpcy5hZGRpbmckLFxuICAgICAgICAgIChyZWxhdGlvbjogUmVsYXRpb25PcHRpb25zKSA9PiB0aGlzLmdldERvbWFpblZhbHVlcyhyZWxhdGlvbiksXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IGxheWVyLmlkLFxuICAgICAgICAgICAgdGl0bGU6IGxheWVyLnRpdGxlLFxuICAgICAgICAgICAgbGF5ZXI6IHdvcmtzcGFjZUxheWVyLFxuICAgICAgICAgICAgbWFwLFxuICAgICAgICAgICAgZW50aXR5U3RvcmU6IHRoaXMuY3JlYXRlRmVhdHVyZVN0b3JlKHdvcmtzcGFjZUxheWVyLCBtYXApLFxuICAgICAgICAgICAgYWN0aW9uU3RvcmU6IG5ldyBBY3Rpb25TdG9yZShbXSksXG4gICAgICAgICAgICBtZXRhOiB7XG4gICAgICAgICAgICAgIHRhYmxlVGVtcGxhdGU6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jcmVhdGVUYWJsZVRlbXBsYXRlKHdrcywgd29ya3NwYWNlTGF5ZXIpO1xuXG4gICAgICAgIHdvcmtzcGFjZUxheWVyLm9wdGlvbnMud29ya3NwYWNlLndvcmtzcGFjZUlkID0gd29ya3NwYWNlTGF5ZXIuaWQ7XG4gICAgICAgIGxheWVyLm9wdGlvbnMud29ya3NwYWNlID0gT2JqZWN0LmFzc2lnbih7fSwgbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2UsIHtcbiAgICAgICAgICB3a3NDb25maWdcbiAgICAgICAgfSBhcyBHZW9Xb3Jrc3BhY2VPcHRpb25zKTtcblxuICAgICAgICBkZWxldGUgZGF0YVNvdXJjZS5vcHRpb25zLmRvd25sb2FkO1xuICAgICAgICByZXR1cm4gd2tzO1xuICAgICAgfSk7XG4gICAgcmV0dXJuIHdrcztcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmVhdHVyZVN0b3JlKGxheWVyOiBWZWN0b3JMYXllciwgbWFwOiBJZ29NYXApOiBGZWF0dXJlU3RvcmUge1xuICAgIGNvbnN0IHN0b3JlID0gbmV3IEZlYXR1cmVTdG9yZShbXSwgeyBtYXAgfSk7XG4gICAgc3RvcmUuYmluZExheWVyKGxheWVyKTtcblxuICAgIGNvbnN0IGxvYWRpbmdTdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVMb2FkaW5nTGF5ZXJTdHJhdGVneSh7fSk7XG4gICAgY29uc3QgaW5NYXBFeHRlbnRTdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVJbk1hcEV4dGVudFN0cmF0ZWd5KHt9KTtcbiAgICBjb25zdCBpbk1hcFJlc29sdXRpb25TdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVJbk1hcFJlc29sdXRpb25TdHJhdGVneSh7fSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRSZWNvcmRTdHJhdGVneSA9IG5ldyBFbnRpdHlTdG9yZUZpbHRlclNlbGVjdGlvblN0cmF0ZWd5KHt9KTtcbiAgICBjb25zdCBzZWxlY3Rpb25TdHJhdGVneSA9IG5ldyBGZWF0dXJlU3RvcmVTZWxlY3Rpb25TdHJhdGVneSh7XG4gICAgICBsYXllcjogbmV3IFZlY3RvckxheWVyKHtcbiAgICAgICAgekluZGV4OiAzMDAsXG4gICAgICAgIHNvdXJjZTogbmV3IEZlYXR1cmVEYXRhU291cmNlKCksXG4gICAgICAgIHN0eWxlOiB1bmRlZmluZWQsXG4gICAgICAgIHNob3dJbkxheWVyTGlzdDogZmFsc2UsXG4gICAgICAgIGV4cG9ydGFibGU6IGZhbHNlLFxuICAgICAgICBicm93c2FibGU6IGZhbHNlXG4gICAgICB9KSxcbiAgICAgIG1hcCxcbiAgICAgIGhpdFRvbGVyYW5jZTogMTUsXG4gICAgICBtb3Rpb246IHRoaXMuem9vbUF1dG8gPyBGZWF0dXJlTW90aW9uLkRlZmF1bHQgOiBGZWF0dXJlTW90aW9uLk5vbmUsXG4gICAgICBtYW55OiB0cnVlLFxuICAgICAgZHJhZ0JveDogdHJ1ZVxuICAgIH0pO1xuICAgIHN0b3JlLmFkZFN0cmF0ZWd5KGxvYWRpbmdTdHJhdGVneSwgdHJ1ZSk7XG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koaW5NYXBFeHRlbnRTdHJhdGVneSwgdHJ1ZSk7XG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koaW5NYXBSZXNvbHV0aW9uU3RyYXRlZ3ksIHRydWUpO1xuICAgIHN0b3JlLmFkZFN0cmF0ZWd5KHNlbGVjdGlvblN0cmF0ZWd5LCB0cnVlKTtcbiAgICBzdG9yZS5hZGRTdHJhdGVneShzZWxlY3RlZFJlY29yZFN0cmF0ZWd5LCBmYWxzZSk7XG4gICAgc3RvcmUuYWRkU3RyYXRlZ3koY3JlYXRlRmlsdGVySW5NYXBFeHRlbnRPclJlc29sdXRpb25TdHJhdGVneSgpLCB0cnVlKTtcbiAgICByZXR1cm4gc3RvcmU7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVRhYmxlVGVtcGxhdGUoXG4gICAgd29ya3NwYWNlOiBFZGl0aW9uV29ya3NwYWNlLFxuICAgIGxheWVyOiBWZWN0b3JMYXllclxuICApOiBFbnRpdHlUYWJsZVRlbXBsYXRlIHtcbiAgICBjb25zdCBmaWVsZHMgPSBsYXllci5kYXRhU291cmNlLm9wdGlvbnMuc291cmNlRmllbGRzIHx8IFtdO1xuXG4gICAgY29uc3QgcmVsYXRpb25zID0gbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLnJlbGF0aW9ucyB8fCBbXTtcblxuICAgIGNvbnN0IHJlbmRlcmVyVHlwZSA9IEVudGl0eVRhYmxlQ29sdW1uUmVuZGVyZXIuVW5zYW5pdGl6ZWRIVE1MO1xuICAgIGxldCBidXR0b25zID0gW107XG4gICAgbGV0IGNvbHVtbnMgPSBbXTtcbiAgICBsZXQgcmVsYXRpb25zQ29sdW1uID0gW107XG5cbiAgICBidXR0b25zID0gW1xuICAgICAge1xuICAgICAgICBuYW1lOiAnZWRpdGlvbicsXG4gICAgICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gICAgICAgIHJlbmRlcmVyOiBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyLkJ1dHRvbkdyb3VwLFxuICAgICAgICBwcmltYXJ5OiBmYWxzZSxcbiAgICAgICAgdmFsdWVBY2Nlc3NvcjogKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGVkaXRNb2RlOiBmYWxzZSxcbiAgICAgICAgICAgICAgaWNvbjogJ2VkaXQnLFxuICAgICAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICBkaXNhYmxlZDpcbiAgICAgICAgICAgICAgICBsYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5tb2RpZnlCdXR0b24gPT09IGZhbHNlXG4gICAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICAgIGNsaWNrOiAoZmVhdHVyZSkgPT4ge1xuICAgICAgICAgICAgICAgIHdvcmtzcGFjZS5lZGl0RmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2UpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBlZGl0TW9kZTogZmFsc2UsXG4gICAgICAgICAgICAgIGljb246ICdkZWxldGUnLFxuICAgICAgICAgICAgICBjb2xvcjogJ3dhcm4nLFxuICAgICAgICAgICAgICBkaXNhYmxlZDpcbiAgICAgICAgICAgICAgICBsYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5kZWxldGVCdXR0b24gPT09IGZhbHNlXG4gICAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICAgIGNsaWNrOiAoZmVhdHVyZSkgPT4ge1xuICAgICAgICAgICAgICAgIHdvcmtzcGFjZS5kZWxldGVGZWF0dXJlKGZlYXR1cmUsIHdvcmtzcGFjZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGVkaXRNb2RlOiB0cnVlLFxuICAgICAgICAgICAgICBpY29uOiAnY2hlY2snLFxuICAgICAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5sb2FkaW5nLFxuICAgICAgICAgICAgICBjbGljazogKGZlYXR1cmUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmVGZWF0dXJlKGZlYXR1cmUsIHdvcmtzcGFjZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGVkaXRNb2RlOiB0cnVlLFxuICAgICAgICAgICAgICBpY29uOiAnY2xvc2UnLFxuICAgICAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5sb2FkaW5nLFxuICAgICAgICAgICAgICBjbGljazogKGZlYXR1cmUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbEVkaXQod29ya3NwYWNlLCBmZWF0dXJlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0gYXMgRW50aXR5VGFibGVCdXR0b25bXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF07XG5cbiAgICBpZiAoZmllbGRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgd29ya3NwYWNlLmVudGl0eVN0b3JlLmVudGl0aWVzJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBza2lwV2hpbGUoKHZhbCkgPT4gdmFsLmxlbmd0aCA9PT0gMCksXG4gICAgICAgICAgdGFrZSgxKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGVudGl0aWVzKSA9PiB7XG4gICAgICAgICAgY29uc3Qgb2wgPSAoZW50aXRpZXNbMF0gYXMgRmVhdHVyZSkub2wgYXMgb2xGZWF0dXJlPE9sR2VvbWV0cnk+O1xuICAgICAgICAgIGNvbnN0IGNvbHVtbnNGcm9tRmVhdHVyZXMgPSBvbFxuICAgICAgICAgICAgLmdldEtleXMoKVxuICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgKGNvbCkgPT5cbiAgICAgICAgICAgICAgICAhY29sLnN0YXJ0c1dpdGgoJ18nKSAmJlxuICAgICAgICAgICAgICAgIGNvbCAhPT0gJ2dlb21ldHJ5JyAmJlxuICAgICAgICAgICAgICAgIGNvbCAhPT0gb2wuZ2V0R2VvbWV0cnlOYW1lKCkgJiZcbiAgICAgICAgICAgICAgICAhY29sLm1hdGNoKC9ib3VuZGVkYnkvZ2kpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAubWFwKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBgcHJvcGVydGllcy4ke2tleX1gLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBrZXksXG4gICAgICAgICAgICAgICAgcmVuZGVyZXI6IHJlbmRlcmVyVHlwZVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgd29ya3NwYWNlLm1ldGEudGFibGVUZW1wbGF0ZSA9IHtcbiAgICAgICAgICAgIHNlbGVjdGlvbjogZmFsc2UsXG4gICAgICAgICAgICBzb3J0OiB0cnVlLFxuICAgICAgICAgICAgY29sdW1uczogY29sdW1uc0Zyb21GZWF0dXJlc1xuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbHVtbnMgPSBmaWVsZHMubWFwKChmaWVsZDogU291cmNlRmllbGRzT3B0aW9uc1BhcmFtcykgPT4ge1xuICAgICAgY29uc3QgY29sdW1uID0ge1xuICAgICAgICBuYW1lOiBgcHJvcGVydGllcy4ke2ZpZWxkLm5hbWV9YCxcbiAgICAgICAgdGl0bGU6IGZpZWxkLmFsaWFzID8gZmllbGQuYWxpYXMgOiBmaWVsZC5uYW1lLFxuICAgICAgICByZW5kZXJlcjogcmVuZGVyZXJUeXBlLFxuICAgICAgICB2YWx1ZUFjY2Vzc29yOiB1bmRlZmluZWQsXG4gICAgICAgIGNlbGxDbGFzc0Z1bmM6ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBjZWxsQ2xhc3MgPSB7fTtcbiAgICAgICAgICBpZiAoZmllbGQudHlwZSkge1xuICAgICAgICAgICAgY2VsbENsYXNzW2BjbGFzc18ke2ZpZWxkLnR5cGV9YF0gPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGNlbGxDbGFzcztcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHByaW1hcnk6IGZpZWxkLnByaW1hcnkgPT09IHRydWUgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgIHZpc2libGU6IGZpZWxkLnZpc2libGUsXG4gICAgICAgIHZhbGlkYXRpb246IGZpZWxkLnZhbGlkYXRpb24sXG4gICAgICAgIGxpbmtDb2x1bW5Gb3JjZTogZmllbGQubGlua0NvbHVtbkZvcmNlLFxuICAgICAgICB0eXBlOiBmaWVsZC50eXBlLFxuICAgICAgICBkb21haW5WYWx1ZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgcmVsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgbXVsdGlwbGU6IGZpZWxkLm11bHRpcGxlLFxuICAgICAgICBzdGVwOiBmaWVsZC5zdGVwLFxuICAgICAgICB0b29sdGlwOiBmaWVsZC50b29sdGlwXG4gICAgICB9O1xuXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ2xpc3QnIHx8IGZpZWxkLnR5cGUgPT09ICdhdXRvY29tcGxldGUnKSB7XG4gICAgICAgIHRoaXMuZ2V0RG9tYWluVmFsdWVzKGZpZWxkLnJlbGF0aW9uKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgIGNvbHVtbi5kb21haW5WYWx1ZXMgPSByZXN1bHQ7XG4gICAgICAgICAgY29sdW1uLnJlbGF0aW9uID0gZmllbGQucmVsYXRpb247XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICB9KTtcblxuICAgIHJlbGF0aW9uc0NvbHVtbiA9IHJlbGF0aW9ucy5tYXAoKHJlbGF0aW9uOiBSZWxhdGlvbk9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IGBwcm9wZXJ0aWVzLiR7cmVsYXRpb24ubmFtZX1gLFxuICAgICAgICB0aXRsZTogcmVsYXRpb24uYWxpYXMgPyByZWxhdGlvbi5hbGlhcyA6IHJlbGF0aW9uLm5hbWUsXG4gICAgICAgIHJlbmRlcmVyOiBFbnRpdHlUYWJsZUNvbHVtblJlbmRlcmVyLkljb24sXG4gICAgICAgIGljb246IHJlbGF0aW9uLmljb24sXG4gICAgICAgIHBhcmVudDogcmVsYXRpb24ucGFyZW50LFxuICAgICAgICB0eXBlOiAncmVsYXRpb24nLFxuICAgICAgICB0b29sdGlwOiByZWxhdGlvbi50b29sdGlwLFxuICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuYWRkaW5nJC5nZXRWYWx1ZSgpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy53cyQubmV4dChyZWxhdGlvbi50aXRsZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjZWxsQ2xhc3NGdW5jOiAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgY2xhc3NfaWNvbjogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgY29sdW1ucy5wdXNoKC4uLnJlbGF0aW9uc0NvbHVtbik7XG4gICAgY29sdW1ucy5wdXNoKC4uLmJ1dHRvbnMpO1xuXG4gICAgd29ya3NwYWNlLm1ldGEudGFibGVUZW1wbGF0ZSA9IHtcbiAgICAgIHNlbGVjdGlvbjogZmFsc2UsXG4gICAgICBzb3J0OiB0cnVlLFxuICAgICAgY29sdW1uc1xuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc2F2ZUZlYXR1cmUoZmVhdHVyZSwgd29ya3NwYWNlOiBFZGl0aW9uV29ya3NwYWNlKSB7XG4gICAgaWYgKCF0aGlzLnZhbGlkYXRlRmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2UpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5zYW5pdGl6ZVBhcmFtZXRlcihmZWF0dXJlLCB3b3Jrc3BhY2UpO1xuXG4gICAgY29uc3QgYmFzZVVybCA9IHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5iYXNlVXJsO1xuICAgIGxldCB1cmwgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCdlZGl0aW9uLnVybCcpO1xuXG4gICAgaWYgKCF1cmwpIHtcbiAgICAgIHVybCA9IGJhc2VVcmw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVybCArPSBiYXNlVXJsID8gYmFzZVVybCA6ICcnO1xuICAgIH1cblxuICAgIGlmIChmZWF0dXJlLm5ld0ZlYXR1cmUpIHtcbiAgICAgIHVybCArPSB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24uYWRkVXJsO1xuXG4gICAgICBjb25zdCBhZGRIZWFkZXJzID0gd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5lZGl0aW9uLmFkZEhlYWRlcnM7XG4gICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKGFkZEhlYWRlcnMpO1xuXG4gICAgICB0aGlzLmFkZEZlYXR1cmUoZmVhdHVyZSwgd29ya3NwYWNlLCB1cmwsIGhlYWRlcnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoXG4gICAgICAgIHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5tb2RpZnlQcm90b2NvbCAhPT0gJ3Bvc3QnXG4gICAgICApIHtcbiAgICAgICAgdXJsICs9XG4gICAgICAgICAgJz8nICtcbiAgICAgICAgICB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24ubW9kaWZ5VXJsICtcbiAgICAgICAgICBmZWF0dXJlLmlka2V5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXJsICs9IHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5tb2RpZnlVcmw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb3RvY29sZSA9XG4gICAgICAgIHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5tb2RpZnlQcm90b2NvbDtcbiAgICAgIGNvbnN0IG1vZGlmeUhlYWRlcnMgPVxuICAgICAgICB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24ubW9kaWZ5SGVhZGVycztcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMobW9kaWZ5SGVhZGVycyk7XG5cbiAgICAgIHRoaXMubW9kaWZ5RmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2UsIHVybCwgaGVhZGVycywgcHJvdG9jb2xlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkRmVhdHVyZShcbiAgICBmZWF0dXJlLFxuICAgIHdvcmtzcGFjZTogRWRpdGlvbldvcmtzcGFjZSxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICkge1xuICAgIGlmICh3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24uaGFzR2VvbWV0cnkpIHtcbiAgICAgIGNvbnN0IHByb2pEZXN0ID1cbiAgICAgICAgd29ya3NwYWNlLmxheWVyLm9wdGlvbnMuc291cmNlT3B0aW9ucy5lZGl0aW9uLmdlb21EYXRhYmFzZVByb2o7XG4gICAgICBmZWF0dXJlLnByb3BlcnRpZXNbXG4gICAgICAgIHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMucGFyYW1zLmZpZWxkTmFtZUdlb21ldHJ5XG4gICAgICBdID1cbiAgICAgICAgJ1NSSUQ9JyArXG4gICAgICAgIHByb2pEZXN0LnJlcGxhY2UoJ0VQU0c6JywgJycpICtcbiAgICAgICAgJzsnICtcbiAgICAgICAgdGhpcy53a3RGb3JtYXQud3JpdGVHZW9tZXRyeShcbiAgICAgICAgICB0aGlzLmdlb0pzb25Gb3JtYXRcbiAgICAgICAgICAgIC5yZWFkRmVhdHVyZShmZWF0dXJlLmdlb21ldHJ5KVxuICAgICAgICAgICAgLmdldEdlb21ldHJ5KClcbiAgICAgICAgICAgIC50cmFuc2Zvcm0oJ0VQU0c6NDMyNicsIHByb2pEZXN0KSxcbiAgICAgICAgICB7IGRhdGFQcm9qZWN0aW9uOiBwcm9qRGVzdCB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBmZWF0dXJlLnByb3BlcnRpZXMpIHtcbiAgICAgIGZvciAoY29uc3Qgc2Ygb2Ygd29ya3NwYWNlLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy5zb3VyY2VGaWVsZHMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChzZi5uYW1lID09PSBwcm9wZXJ0eSAmJiBzZi52YWxpZGF0aW9uPy5yZWFkb25seSkgfHxcbiAgICAgICAgICAoc2YubmFtZSA9PT0gcHJvcGVydHkgJiYgc2YudmFsaWRhdGlvbj8uc2VuZCA9PT0gZmFsc2UpXG4gICAgICAgICkge1xuICAgICAgICAgIGRlbGV0ZSBmZWF0dXJlLnByb3BlcnRpZXNbcHJvcGVydHldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KGAke3VybH1gLCBmZWF0dXJlLnByb3BlcnRpZXMsIHsgaGVhZGVyczogaGVhZGVycyB9KVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHdvcmtzcGFjZS5lbnRpdHlTdG9yZS5zdGF0ZVZpZXcuY2xlYXIoKTtcbiAgICAgICAgICB3b3Jrc3BhY2UuZGVsZXRlRHJhd2luZ3MoKTtcbiAgICAgICAgICB3b3Jrc3BhY2UuZW50aXR5U3RvcmUuZGVsZXRlKGZlYXR1cmUpO1xuXG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKCdpZ28uZ2VvLndvcmtzcGFjZS5hZGRTdWNjZXNzJyk7XG5cbiAgICAgICAgICB0aGlzLnJlZnJlc2hNYXAod29ya3NwYWNlLmxheWVyIGFzIFZlY3RvckxheWVyLCB3b3Jrc3BhY2UubGF5ZXIubWFwKTtcbiAgICAgICAgICB0aGlzLmFkZGluZyQubmV4dChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5yb3dzSW5NYXBFeHRlbnRDaGVja0NvbmRpdGlvbiQubmV4dCh0cnVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgZXJyb3IuZXJyb3IuY2F1Z2h0ID0gdHJ1ZTtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlcyA9IHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5tZXNzYWdlcztcbiAgICAgICAgICBpZiAobWVzc2FnZXMpIHtcbiAgICAgICAgICAgIGxldCB0ZXh0O1xuICAgICAgICAgICAgbWVzc2FnZXMuZm9yRWFjaCgobWVzc2FnZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhtZXNzYWdlKVswXTtcbiAgICAgICAgICAgICAgaWYgKGVycm9yLmVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIHRleHQgPSBtZXNzYWdlW2tleV07XG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcih0ZXh0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoIXRleHQpIHtcbiAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcignaWdvLmdlby53b3Jrc3BhY2UuYWRkRXJyb3InKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcignaWdvLmdlby53b3Jrc3BhY2UuYWRkRXJyb3InKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlRmVhdHVyZSh3b3Jrc3BhY2U6IEVkaXRpb25Xb3Jrc3BhY2UsIHVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmh0dHAuZGVsZXRlKGAke3VybH1gLCB7fSkuc3Vic2NyaWJlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKCdpZ28uZ2VvLndvcmtzcGFjZS5kZWxldGVTdWNjZXNzJyk7XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoTWFwKHdvcmtzcGFjZS5sYXllciBhcyBWZWN0b3JMYXllciwgd29ya3NwYWNlLmxheWVyLm1hcCk7XG4gICAgICAgIGNvbnN0IHJlbGF0aW9ucyA9XG4gICAgICAgICAgd29ya3NwYWNlLmxheWVyLm9wdGlvbnMuc291cmNlT3B0aW9ucz8ucmVsYXRpb25zID8/IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHJlbGF0aW9uIG9mIHJlbGF0aW9ucykge1xuICAgICAgICAgIGNvbnN0IGxheWVyID0gd29ya3NwYWNlLm1hcC5sYXllckNvbnRyb2xsZXIuYWxsLmZpbmQoXG4gICAgICAgICAgICAobGF5ZXIpID0+IGlzTGF5ZXJJdGVtKGxheWVyKSAmJiBsYXllci50aXRsZSA9PT0gcmVsYXRpb24udGl0bGVcbiAgICAgICAgICApIGFzIExheWVyO1xuICAgICAgICAgIGxheWVyPy5kYXRhU291cmNlLm9sLnJlZnJlc2goKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgZXJyb3IuZXJyb3IuY2F1Z2h0ID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgbWVzc2FnZXMgPSB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLmVkaXRpb24ubWVzc2FnZXM7XG4gICAgICAgIGlmIChtZXNzYWdlcykge1xuICAgICAgICAgIGxldCB0ZXh0O1xuICAgICAgICAgIG1lc3NhZ2VzLmZvckVhY2goKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKG1lc3NhZ2UpWzBdO1xuICAgICAgICAgICAgaWYgKGVycm9yLmVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgICB0ZXh0ID0gbWVzc2FnZVtrZXldO1xuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKHRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmICghdGV4dCkge1xuICAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcignaWdvLmdlby53b3Jrc3BhY2UuYWRkRXJyb3InKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcignaWdvLmdlby53b3Jrc3BhY2UuYWRkRXJyb3InKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbW9kaWZ5RmVhdHVyZShcbiAgICBmZWF0dXJlLFxuICAgIHdvcmtzcGFjZTogRWRpdGlvbldvcmtzcGFjZSxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIHByb3RvY29sZSA9ICdwYXRjaCdcbiAgKSB7XG4gICAgaWYgKHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5oYXNHZW9tZXRyeSkge1xuICAgICAgY29uc3QgcHJvakRlc3QgPVxuICAgICAgICB3b3Jrc3BhY2UubGF5ZXIub3B0aW9ucy5zb3VyY2VPcHRpb25zLmVkaXRpb24uZ2VvbURhdGFiYXNlUHJvajtcbiAgICAgIC8vIFJlbW92ZSAzZSBkaW1lbnNpb25cbiAgICAgIGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMgPSByZW1vdmVaKGZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXMpO1xuICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzW1xuICAgICAgICB3b3Jrc3BhY2UubGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLnBhcmFtcy5maWVsZE5hbWVHZW9tZXRyeVxuICAgICAgXSA9XG4gICAgICAgICdTUklEPScgK1xuICAgICAgICBwcm9qRGVzdC5yZXBsYWNlKCdFUFNHOicsICcnKSArXG4gICAgICAgICc7JyArXG4gICAgICAgIHRoaXMud2t0Rm9ybWF0LndyaXRlR2VvbWV0cnkoXG4gICAgICAgICAgdGhpcy5nZW9Kc29uRm9ybWF0XG4gICAgICAgICAgICAucmVhZEZlYXR1cmUoZmVhdHVyZS5nZW9tZXRyeSlcbiAgICAgICAgICAgIC5nZXRHZW9tZXRyeSgpXG4gICAgICAgICAgICAudHJhbnNmb3JtKCdFUFNHOjQzMjYnLCBwcm9qRGVzdCksXG4gICAgICAgICAgeyBkYXRhUHJvamVjdGlvbjogcHJvakRlc3QgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gZmVhdHVyZS5wcm9wZXJ0aWVzKSB7XG4gICAgICBmb3IgKGNvbnN0IHNmIG9mIHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuc291cmNlRmllbGRzKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAoc2YubmFtZSA9PT0gcHJvcGVydHkgJiYgc2YudmFsaWRhdGlvbj8ucmVhZG9ubHkpIHx8XG4gICAgICAgICAgKHNmLm5hbWUgPT09IHByb3BlcnR5ICYmIHNmLnZhbGlkYXRpb24/LnNlbmQgPT09IGZhbHNlKSB8fFxuICAgICAgICAgIHByb3BlcnR5ID09PSAnYm91bmRlZEJ5J1xuICAgICAgICApIHtcbiAgICAgICAgICBkZWxldGUgZmVhdHVyZS5wcm9wZXJ0aWVzW3Byb3BlcnR5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5odHRwW3Byb3RvY29sZV0oYCR7dXJsfWAsIGZlYXR1cmUucHJvcGVydGllcywge1xuICAgICAgaGVhZGVyczogaGVhZGVyc1xuICAgIH0pLnN1YnNjcmliZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2FuY2VsRWRpdCh3b3Jrc3BhY2UsIGZlYXR1cmUsIHRydWUpO1xuXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2Uuc3VjY2VzcygnaWdvLmdlby53b3Jrc3BhY2UubW9kaWZ5U3VjY2VzcycpO1xuXG4gICAgICAgIHRoaXMucmVmcmVzaE1hcCh3b3Jrc3BhY2UubGF5ZXIgYXMgVmVjdG9yTGF5ZXIsIHdvcmtzcGFjZS5sYXllci5tYXApO1xuXG4gICAgICAgIGNvbnN0IHJlbGF0aW9uTGF5ZXJzID0gW107XG4gICAgICAgIHdvcmtzcGFjZS5sYXllci5vcHRpb25zLnNvdXJjZU9wdGlvbnMucmVsYXRpb25zPy5mb3JFYWNoKChyZWxhdGlvbikgPT4ge1xuICAgICAgICAgIHdvcmtzcGFjZS5tYXAubGF5ZXJDb250cm9sbGVyLmFsbC5mb3JFYWNoKChsYXllcikgPT4ge1xuICAgICAgICAgICAgaWYgKGlzTGF5ZXJJdGVtKGxheWVyKSAmJiBsYXllci50aXRsZSA9PT0gcmVsYXRpb24udGl0bGUpIHtcbiAgICAgICAgICAgICAgcmVsYXRpb25MYXllcnMucHVzaChsYXllcik7XG4gICAgICAgICAgICAgIGxheWVyLmRhdGFTb3VyY2Uub2wucmVmcmVzaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWxhdGlvbkxheWVycyQubmV4dChyZWxhdGlvbkxheWVycyk7XG4gICAgICB9LFxuICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICBlcnJvci5lcnJvci5jYXVnaHQgPSB0cnVlO1xuICAgICAgICBjb25zdCBtZXNzYWdlcyA9IHdvcmtzcGFjZS5sYXllci5kYXRhU291cmNlLm9wdGlvbnMuZWRpdGlvbi5tZXNzYWdlcztcbiAgICAgICAgaWYgKG1lc3NhZ2VzKSB7XG4gICAgICAgICAgbGV0IHRleHQ7XG4gICAgICAgICAgbWVzc2FnZXMuZm9yRWFjaCgobWVzc2FnZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMobWVzc2FnZSlbMF07XG4gICAgICAgICAgICBpZiAoZXJyb3IuZXJyb3IubWVzc2FnZS5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICAgIHRleHQgPSBtZXNzYWdlW2tleV07XG4gICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IodGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKCF0ZXh0KSB7XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKCdpZ28uZ2VvLndvcmtzcGFjZS5hZGRFcnJvcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKCdpZ28uZ2VvLndvcmtzcGFjZS5hZGRFcnJvcicpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGNhbmNlbEVkaXQod29ya3NwYWNlOiBFZGl0aW9uV29ya3NwYWNlLCBmZWF0dXJlLCBmcm9tU2F2ZSA9IGZhbHNlKSB7XG4gICAgZmVhdHVyZS5lZGl0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5hZGRpbmckLm5leHQoZmFsc2UpO1xuICAgIHdvcmtzcGFjZS5kZWxldGVEcmF3aW5ncygpO1xuICAgIHdvcmtzcGFjZS5lbnRpdHlTdG9yZS5zdGF0ZVZpZXcuY2xlYXIoKTtcblxuICAgIGlmIChmZWF0dXJlLm5ld0ZlYXR1cmUpIHtcbiAgICAgIHdvcmtzcGFjZS5lbnRpdHlTdG9yZS5kZWxldGUoZmVhdHVyZSk7XG4gICAgICB3b3Jrc3BhY2UuZGVhY3RpdmF0ZURyYXdDb250cm9sKCk7XG5cbiAgICAgIHRoaXMucm93c0luTWFwRXh0ZW50Q2hlY2tDb25kaXRpb24kLm5leHQodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghZnJvbVNhdmUpIHtcbiAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzID0gZmVhdHVyZS5vcmlnaW5hbF9wcm9wZXJ0aWVzO1xuICAgICAgICBmZWF0dXJlLmdlb21ldHJ5ID0gZmVhdHVyZS5vcmlnaW5hbF9nZW9tZXRyeTtcbiAgICAgIH1cbiAgICAgIGRlbGV0ZSBmZWF0dXJlLm9yaWdpbmFsX3Byb3BlcnRpZXM7XG4gICAgICBkZWxldGUgZmVhdHVyZS5vcmlnaW5hbF9nZW9tZXRyeTtcbiAgICB9XG4gIH1cblxuICBnZXREb21haW5WYWx1ZXMocmVsYXRpb246IFJlbGF0aW9uT3B0aW9ucyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHVybCA9IHJlbGF0aW9uLnVybDtcbiAgICBpZiAoIXVybCkge1xuICAgICAgdXJsID0gdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygnZWRpdGlvbi51cmwnKVxuICAgICAgICA/IHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ2VkaXRpb24udXJsJykgKyByZWxhdGlvbi50YWJsZVxuICAgICAgICA6IHJlbGF0aW9uLnRhYmxlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4odXJsKS5waXBlKFxuICAgICAgbWFwKChyZXN1bHQpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICBlcnIuZXJyb3IuY2F1Z2h0ID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qXG4gICAqIFJlZnJlc2ggYm90aCB3bXMgYW5kIHdmcyBsYXllclxuICAgKiBBIG5ldyB3ZnMgbG9hZGVyIGlzIHVzZWQgdG8gZW5zdXJlIGNhY2hlIGlzIG5vdCByZXRyaWV2aW5nIG9sZCBkYXRhXG4gICAqIFdNUyBwYXJhbXMgYXJlIHVwZGF0ZWQgdG8gZW5zdXJlIGxheWVyIGlzIGNvcnJlY3RseSByZWZyZXNoZWRcbiAgICovXG4gIHJlZnJlc2hNYXAobGF5ZXI6IFZlY3RvckxheWVyLCBtYXA6IE1hcEJhc2UpIHtcbiAgICBjb25zdCB3ZnNPbExheWVyID0gbGF5ZXIuZGF0YVNvdXJjZS5vbDtcbiAgICBjb25zdCBsb2FkZXI6IEZlYXR1cmVMb2FkZXIgPSAoXG4gICAgICBleHRlbnQsXG4gICAgICByZXNvbHV0aW9uLFxuICAgICAgcHJvaixcbiAgICAgIHN1Y2Nlc3MsXG4gICAgICBmYWlsdXJlXG4gICAgKSA9PiB7XG4gICAgICBsYXllci5jdXN0b21XRlNMb2FkZXIoXG4gICAgICAgIGxheWVyLm9sLmdldFNvdXJjZSgpLFxuICAgICAgICBsYXllci5vcHRpb25zLnNvdXJjZU9wdGlvbnMgYXMgV0ZTRGF0YVNvdXJjZU9wdGlvbnMsXG4gICAgICAgIHRoaXMuYXV0aEludGVyY2VwdG9yLFxuICAgICAgICBleHRlbnQsXG4gICAgICAgIHJlc29sdXRpb24sXG4gICAgICAgIHByb2osXG4gICAgICAgIHN1Y2Nlc3MsXG4gICAgICAgIGZhaWx1cmUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgfTtcbiAgICB3ZnNPbExheWVyLnNldExvYWRlcihsb2FkZXIpO1xuICAgIHdmc09sTGF5ZXIucmVmcmVzaCgpO1xuXG4gICAgZm9yIChjb25zdCBsYXkgb2YgbWFwLmxheWVyQ29udHJvbGxlci5hbGwpIHtcbiAgICAgIGlmIChcbiAgICAgICAgaXNMYXllckl0ZW0obGF5KSAmJlxuICAgICAgICBsYXkuaWQgIT09IGxheWVyLmlkICYmXG4gICAgICAgIGxheS5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua0lkLmluY2x1ZGVzKFxuICAgICAgICAgIGxheWVyLmlkLnN1YnN0cigwLCBsYXllci5pZC5pbmRleE9mKCcuJykgLSAxKVxuICAgICAgICApICYmXG4gICAgICAgIGxheS5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua0lkLmluY2x1ZGVzKCdXbXNXb3Jrc3BhY2VUYWJsZVNyYycpXG4gICAgICApIHtcbiAgICAgICAgY29uc3Qgd21zT2xMYXllciA9IGxheS5kYXRhU291cmNlLm9sIGFzIG9sU291cmNlSW1hZ2VXTVM7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHdtc09sTGF5ZXIuZ2V0UGFyYW1zKCk7XG4gICAgICAgIHBhcmFtcy5fdCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICB3bXNPbExheWVyLnVwZGF0ZVBhcmFtcyhwYXJhbXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlRmVhdHVyZShmZWF0dXJlLCB3b3Jrc3BhY2U6IEVkaXRpb25Xb3Jrc3BhY2UpIHtcbiAgICBsZXQga2V5O1xuICAgIGxldCB2YWxpZCA9IHRydWU7XG4gICAgd29ya3NwYWNlLm1ldGEudGFibGVUZW1wbGF0ZS5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgaWYgKGNvbHVtbi5oYXNPd25Qcm9wZXJ0eSgndmFsaWRhdGlvbicpICYmIGNvbHVtbi52YWxpZGF0aW9uKSB7XG4gICAgICAgIGtleSA9IGdldENvbHVtbktleVdpdGhvdXRQcm9wZXJ0aWVzVGFnKGNvbHVtbi5uYW1lKTtcbiAgICAgICAgT2JqZWN0LmtleXMoY29sdW1uLnZhbGlkYXRpb24pLmZvckVhY2goKHR5cGUpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ21hbmRhdG9yeSc6IHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdICYmXG4gICAgICAgICAgICAgICAgKCFmZWF0dXJlLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkoa2V5KSB8fFxuICAgICAgICAgICAgICAgICAgIWZlYXR1cmUucHJvcGVydGllc1trZXldKVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAnaWdvLmdlby5mb3JtVmFsaWRhdGlvbi5tYW5kYXRvcnknLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgeyBjb2x1bW46IGNvbHVtbi50aXRsZSB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ21pblZhbHVlJzoge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkgJiZcbiAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNba2V5XSAmJlxuICAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllc1trZXldIDwgY29sdW1uLnZhbGlkYXRpb25bdHlwZV1cbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgJ2lnby5nZW8uZm9ybVZhbGlkYXRpb24ubWluVmFsdWUnLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbi50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ21heFZhbHVlJzoge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkgJiZcbiAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNba2V5XSAmJlxuICAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllc1trZXldID4gY29sdW1uLnZhbGlkYXRpb25bdHlwZV1cbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgJ2lnby5nZW8uZm9ybVZhbGlkYXRpb24ubWF4VmFsdWUnLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbi50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ21pbkxlbmd0aCc6IHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzW2tleV0gJiZcbiAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNba2V5XS5sZW5ndGggPCBjb2x1bW4udmFsaWRhdGlvblt0eXBlXVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAnaWdvLmdlby5mb3JtVmFsaWRhdGlvbi5taW5MZW5ndGgnLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbi50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ21heExlbmd0aCc6IHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGZlYXR1cmUucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmXG4gICAgICAgICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzW2tleV0gJiZcbiAgICAgICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNba2V5XS5sZW5ndGggPiBjb2x1bW4udmFsaWRhdGlvblt0eXBlXVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAnaWdvLmdlby5mb3JtVmFsaWRhdGlvbi5tYXhMZW5ndGgnLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbi50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGNvbHVtbi52YWxpZGF0aW9uW3R5cGVdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB2YWxpZDtcbiAgfVxuXG4gIHNhbml0aXplUGFyYW1ldGVyKGZlYXR1cmUsIHdvcmtzcGFjZTogRWRpdGlvbldvcmtzcGFjZSkge1xuICAgIHdvcmtzcGFjZS5tZXRhLnRhYmxlVGVtcGxhdGUuY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgY29sdW1uLnR5cGUgPT09ICdsaXN0JyAmJlxuICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNbZ2V0Q29sdW1uS2V5V2l0aG91dFByb3BlcnRpZXNUYWcoY29sdW1uLm5hbWUpXVxuICAgICAgKSB7XG4gICAgICAgIGZlYXR1cmUucHJvcGVydGllc1tnZXRDb2x1bW5LZXlXaXRob3V0UHJvcGVydGllc1RhZyhjb2x1bW4ubmFtZSldID1cbiAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNbXG4gICAgICAgICAgICBnZXRDb2x1bW5LZXlXaXRob3V0UHJvcGVydGllc1RhZyhjb2x1bW4ubmFtZSlcbiAgICAgICAgICBdLnRvU3RyaW5nKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0Q29sdW1uS2V5V2l0aG91dFByb3BlcnRpZXNUYWcoY29sdW1uOiBzdHJpbmcpIHtcbiAgaWYgKGNvbHVtbi5pbmNsdWRlcygncHJvcGVydGllcy4nKSkge1xuICAgIHJldHVybiBjb2x1bW4uc3BsaXQoJy4nKVsxXTtcbiAgfVxuICByZXR1cm4gY29sdW1uO1xufVxuXG5mdW5jdGlvbiByZW1vdmVaKGNvb3JkczogYW55KSB7XG4gIGlmIChjb29yZHMubGVuZ3RoID09PSAwKSByZXR1cm4gY29vcmRzO1xuICBpZiAodHlwZW9mIGNvb3Jkc1swXSA9PT0gJ251bWJlcicpIHJldHVybiBjb29yZHMuc2xpY2UoMCwgMik7XG4gIHJldHVybiBjb29yZHMubWFwKHJlbW92ZVopO1xufVxuIl19