@talrace/ngx-noder 0.0.11 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font/font.component.mjs +2 -2
- package/esm2022/lib/editor/execution/edit.session.mjs +3 -3
- package/esm2022/lib/editor/execution/editor.mjs +12 -12
- package/esm2022/lib/editor/gadgets/history/operation-history.mjs +17 -18
- package/esm2022/lib/editor/operations/helpers/content-operations.helper.mjs +4 -4
- package/esm2022/lib/editor/operations/operations-helper.helper.mjs +7 -6
- package/esm2022/lib/editor/operations/save-commands.helper.mjs +4 -4
- package/esm2022/lib/models/generated/delete.model.mjs +1 -1
- package/esm2022/lib/models/generated/link-data.model.mjs +1 -1
- package/esm2022/lib/models/generated/link.model.mjs +1 -1
- package/fesm2022/talrace-ngx-noder.mjs +41 -42
- package/fesm2022/talrace-ngx-noder.mjs.map +1 -1
- package/lib/editor/execution/editor.d.ts +1 -1
- package/lib/editor/gadgets/history/operation-history.d.ts +2 -2
- package/lib/editor/operations/helpers/content-operations.helper.d.ts +1 -1
- package/lib/editor/operations/operations-helper.helper.d.ts +1 -1
- package/lib/editor/operations/save-commands.helper.d.ts +1 -1
- package/lib/models/generated/delete.model.d.ts +1 -1
- package/package.json +1 -1
|
@@ -36,7 +36,7 @@ export class OperationsHelper {
|
|
|
36
36
|
this.deleteRestore(contents, command.restore);
|
|
37
37
|
break;
|
|
38
38
|
case CommandType.Delete:
|
|
39
|
-
this.delete(contents, command.delete.startIndex, command.delete.
|
|
39
|
+
this.delete(contents, command.delete.startIndex, command.delete.count);
|
|
40
40
|
break;
|
|
41
41
|
case CommandType.ReplaceByText: {
|
|
42
42
|
const model = command.replaceByText;
|
|
@@ -324,7 +324,7 @@ export class OperationsHelper {
|
|
|
324
324
|
}
|
|
325
325
|
static deleteRestore(document, model) {
|
|
326
326
|
if (model.startIndex !== model.endIndex) {
|
|
327
|
-
this.delete(document, model.startIndex, model.endIndex);
|
|
327
|
+
this.delete(document, model.startIndex, model.endIndex - model.startIndex + 1);
|
|
328
328
|
}
|
|
329
329
|
this.restore(document, model);
|
|
330
330
|
}
|
|
@@ -340,9 +340,10 @@ export class OperationsHelper {
|
|
|
340
340
|
IndexedElementOperationsHelper.restore(document.tabs, model.startIndex, model.text.length, model.tabs);
|
|
341
341
|
LinkOperationsHelper.restore(document.links, model.startIndex, model.text.length, model.links);
|
|
342
342
|
}
|
|
343
|
-
static delete(document, startIndex,
|
|
344
|
-
document.content = ContentOperationsHelper.removeContent(document.content, startIndex,
|
|
343
|
+
static delete(document, startIndex, count) {
|
|
344
|
+
document.content = ContentOperationsHelper.removeContent(document.content, startIndex, count);
|
|
345
345
|
document.contentLength = document.content.length;
|
|
346
|
+
const endIndex = startIndex + count - 1;
|
|
346
347
|
FormatOperationsHelper.removeContent(document.formats, startIndex, endIndex);
|
|
347
348
|
IndexedElementOperationsHelper.removeContent(document.paragraphs, startIndex, endIndex);
|
|
348
349
|
IndexedElementOperationsHelper.removeContent(document.images, startIndex, endIndex);
|
|
@@ -365,7 +366,7 @@ export class OperationsHelper {
|
|
|
365
366
|
LinkOperationsHelper.replaceContent(document.links, startIndex, endIndex, text.length);
|
|
366
367
|
}
|
|
367
368
|
static replace(document, model, contentWidth) {
|
|
368
|
-
this.delete(document, model.delete.startIndex, model.delete.
|
|
369
|
+
this.delete(document, model.delete.startIndex, model.delete.count);
|
|
369
370
|
if (model.insertText) {
|
|
370
371
|
this.insertText(document, model.insertText.text, model.insertText.insertIndex);
|
|
371
372
|
}
|
|
@@ -436,4 +437,4 @@ export class OperationsHelper {
|
|
|
436
437
|
TableOperationsHelper.resizeTableColumns(document.tables, resizeTableColumns);
|
|
437
438
|
}
|
|
438
439
|
}
|
|
439
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9ucy1oZWxwZXIuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvZWRpdG9yL29wZXJhdGlvbnMvb3BlcmF0aW9ucy1oZWxwZXIuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFOUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDMUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLDBCQUEwQixFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRzFJLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBSTdGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBR3hFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRWxGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBTWxGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FB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M0IsV0FBbUIsRUFDbkIsVUFBa0IsRUFDbEIsUUFBZ0IsRUFDaEIsWUFBb0I7UUFFcEIscUJBQXFCLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMvRyxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUEyQixFQUFFLFdBQW1CLEVBQUUsUUFBb0I7UUFDdEYscUJBQXFCLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsUUFBMkIsRUFBRSxrQkFBMkM7UUFDOUYscUJBQXFCLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGx5RWxlbWVudFN0eWxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2FwcGx5LWVsZW1lbnQtc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgQXBwbHlJbWFnZVN0eWxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2FwcGx5LWltYWdlLXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IEJyZWFrT3BlcmF0aW9uc0hlbHBlciB9IGZyb20gJy4vaGVscGVycy9icmVhay1vcGVyYXRpb25zLmhlbHBlcic7XG5pbXBvcnQgeyBCcmVha1R5cGVzIH0gZnJvbSAnLi4vZ2FkZ2V0cy9wYWdlLWJyZWFrL2JyZWFrLXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgQ2VsbE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9jZWxsLm1vZGVsJztcbmltcG9ydCB7IENvbW1hbmRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvY29tbWFuZC5tb2RlbCc7XG5pbXBvcnQgeyBDb21tYW5kVHlwZSB9IGZyb20gJy4vZW51bXMvY29tbWFuZC10eXBlLmVudW0nO1xuaW1wb3J0IHsgQ29udGVudE9wZXJhdGlvbnNIZWxwZXIgfSBmcm9tICcuL2hlbHBlcnMvY29udGVudC1vcGVyYXRpb25zLmhlbHBlcic7XG5pbXBvcnQgeyBDb250ZW50c0ludGVyZmFjZSB9IGZyb20gJy4uL2NvbnRlbnQvY29udGVudHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IENVU1RPTV9FTEVNRU5UX01BUktFUiB9IGZyb20gJy4uL2NvbXBvbmVudHMvc2hhcmVkL2N1c3RvbS1jb250ZW50LW1hcmtlcnMuY29uc3QnO1xuaW1wb3J0IHsgREVGQVVMVF9URVhUX1NUWUxFLCBIWVBFUkxJTktfRk9OVF9DT0xPUiwgSFlQRVJMSU5LX0hFQURJTkdfU1RZTEVfSUQsIE5FV19MSU5FX01BUktVUCB9IGZyb20gJy4uL2NvbnRlbnQvY29uc3RhbnRzL2VkaXRvci5jb25zdCc7XG5pbXBvcnQgeyBEb2N4TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2RvY3gubW9kZWwnO1xuaW1wb3J0IHsgRm9ybWF0TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2Zvcm1hdC5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtYXRPcGVyYXRpb25zSGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzL2Zvcm1hdC1vcGVyYXRpb25zLmhlbHBlcic7XG5pbXBvcnQgeyBJbWFnZURhdGFNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW1hZ2UtZGF0YS5tb2RlbCc7XG5pbXBvcnQgeyBJbWFnZU9wZXJhdGlvbnNIZWxwZXIgfSBmcm9tICcuL2hlbHBlcnMvaW1hZ2Utb3BlcmF0aW9ucy5oZWxwZXInO1xuaW1wb3J0IHsgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzL2luZGV4ZWQtZWxlbWVudC1vcGVyYXRpb25zLmhlbHBlcic7XG5pbXBvcnQgeyBJbnNlcnRFbGVtZW50TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC1lbGVtZW50Lm1vZGVsJztcbmltcG9ydCB7IEluc2VydFBhcmFncmFwaE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtcGFyYWdyYXBoLm1vZGVsJztcbmltcG9ydCB7IEluc2VydFRhYmxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC10YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBMaW5rT3BlcmF0aW9uc0hlbHBlciB9IGZyb20gJy4vaGVscGVycy9saW5rLW9wZXJhdGlvbnMuaGVscGVyJztcbmltcG9ydCB7IE51bWJlcmluZ0xldmVsTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL251bWJlcmluZy1sZXZlbC5tb2RlbCc7XG5pbXBvcnQgeyBOdW1iZXJpbmdNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvbnVtYmVyaW5nLm1vZGVsJztcbmltcG9ydCB7IE51bWJlcmluZ09wZXJhdGlvbnNIZWxwZXIgfSBmcm9tICcuL2hlbHBlcnMvbnVtYmVyaW5nLW9wZXJhdGlvbnMuaGVscGVyJztcbmltcG9ydCB7IFBhcmFncmFwaE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9wYXJhZ3JhcGgubW9kZWwnO1xuaW1wb3J0IHsgUGFyYWdyYXBoT3BlcmF0aW9uc0hlbHBlciB9IGZyb20gJy4vaGVscGVycy9wYXJhZ3JhcGgtb3BlcmF0aW9ucy5oZWxwZXInO1xuaW1wb3J0IHsgUGFyYWdyYXBoU3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcGFyYWdyYXBoLXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IFJlcGxhY2VNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVwbGFjZS5tb2RlbCc7XG5pbXBvcnQgeyBSZXNpemVUYWJsZUNvbHVtbnNNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVzaXplLXRhYmxlLWNvbHVtbnMubW9kZWwnO1xuaW1wb3J0IHsgUmVzdG9yZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXN0b3JlLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3RhYmxlLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlT3BlcmF0aW9uc0hlbHBlciB9IGZyb20gJy4vaGVscGVycy90YWJsZS1vcGVyYXRpb25zLmhlbHBlcic7XG5pbXBvcnQgeyBUYWJPcGVyYXRpb25zSGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzL3RhYi1vcGVyYXRpb25zLmhlbHBlcic7XG5pbXBvcnQgeyBUYXJnZXRPcGVyYXRpb25zSGVscGVyIH0gZnJvbSAnLi90YXJnZXQtb3BlcmF0aW9ucy5oZWxwZXInO1xuaW1wb3J0IHsgVGV4dFN0eWxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3RleHQtc3R5bGUubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgT3BlcmF0aW9uc0hlbHBlciB7XG4gICAgc3RhdGljIGFwcGx5T3BlcmF0aW9ucyhkb2N1bWVudDogRG9jeE1vZGVsLCBjb21tYW5kczogQ29tbWFuZE1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgY29tbWFuZHMuZm9yRWFjaChjb21tYW5kID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRzID0gdGhpcy5nZXRUYXJnZXRDb250ZW50cyhkb2N1bWVudCwgY29tbWFuZCk7XG4gICAgICAgICAgICBzd2l0Y2ggKGNvbW1hbmQuY29tbWFuZFR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRUeXBlLkluc2VydFRleHQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0VGV4dChjb250ZW50cywgY29tbWFuZC5pbnNlcnRUZXh0LnRleHQsIGNvbW1hbmQuaW5zZXJ0VGV4dC5pbnNlcnRJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZFR5cGUuSW5zZXJ0UGFyYWdyYXBoOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9IHRoaXMuZ2V0Q29udGVudFdpZHRoKGRvY3VtZW50LCBjb250ZW50cyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0UGFyYWdyYXBoKGNvbnRlbnRzLCBjb21tYW5kLmluc2VydFBhcmFncmFwaC5pbnNlcnRJbmRleCwgY29tbWFuZC5pbnNlcnRQYXJhZ3JhcGgsIGNvbnRlbnRXaWR0aCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRUeXBlLkluc2VydFN0eWxlZFRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSBjb21tYW5kLmluc2VydFN0eWxlZFRleHQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0U3R5bGVkVGV4dChjb250ZW50cywgbW9kZWwudGV4dCwgbW9kZWwuaW5zZXJ0SW5kZXgsIG1vZGVsLnRleHRTdHlsZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRUeXBlLlJlc3RvcmU6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlUmVzdG9yZShjb250ZW50cywgY29tbWFuZC5yZXN0b3JlKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kVHlwZS5EZWxldGU6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlKGNvbnRlbnRzLCBjb21tYW5kLmRlbGV0ZS5zdGFydEluZGV4LCBjb21tYW5kLmRlbGV0ZS5lbmRJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZFR5cGUuUmVwbGFjZUJ5VGV4dDoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IGNvbW1hbmQucmVwbGFjZUJ5VGV4dDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXBsYWNlVGV4dChjb250ZW50cywgbW9kZWwuc3RhcnRJbmRleCwgbW9kZWwuZW5kSW5kZXgsIG1vZGVsLnRleHQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kVHlwZS5BcHBseVRleHRTdHlsZToge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IGNvbW1hbmQuYXBwbHlUZXh0U3R5bGU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlUZXh0U3R5bGUoY29udGVudHMsIG1vZGVsLnN0YXJ0SW5kZXgsIG1vZGVsLmVuZEluZGV4LCBtb2RlbC50ZXh0U3R5bGUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kVHlwZS5SZXN0b3JlVGV4dFN0eWxlczoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IGNvbW1hbmQucmVzdG9yZVRleHRTdHlsZXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzdG9yZVRleHRTdHlsZXMoY29udGVudHMsIG1vZGVsLmZvcm1hdHMpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kVHlwZS5SZXN0b3JlUGFyYWdyYXBoU3R5bGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gY29tbWFuZC5yZXN0b3JlUGFyYWdyYXBoU3R5bGVzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3RvcmVQYXJhZ3JhcGhTdHlsZXMoY29udGVudHMsIG1vZGVsLnBhcmFncmFwaHMpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kVHlwZS5BcHBseVBhcmFncmFwaFN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gY29tbWFuZC5hcHBseVBhcmFncmFwaFN0eWxlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5UGFyYWdyYXBoU3R5bGUoY29udGVudHMsIG1vZGVsLnN0YXJ0SW5kZXgsIG1vZGVsLmVuZEluZGV4LCBtb2RlbC5wYXJhZ3JhcGhTdHlsZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRUeXBlLkFwcGx5RWxlbWVudFN0eWxlOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5RWxlbWVudFN0eWxlKGNvbnRlbnRzLCBjb21tYW5kLmFwcGx5RWxlbWVudFN0eWxlKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kVHlwZS5JbnNlcnRFbGVtZW50OiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gY29tbWFuZC5pbnNlcnRFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydEVsZW1lbnQoY29udGVudHMsIG1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZFR5cGUuSW5zZXJ0QnJlYWs6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSBjb21tYW5kLmluc2VydEJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXh0ID0gbW9kZWwuaXNPbk5ld1BhcmFncmFwaCA/IGAke05FV19MSU5FX01BUktVUH0ke0NVU1RPTV9FTEVNRU5UX01BUktFUn1gIDogQ1VTVE9NX0VMRU1FTlRfTUFSS0VSO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydEJyZWFrKGRvY3VtZW50LCB0ZXh0LCBtb2RlbC5pbnNlcnRJbmRleCwgbW9kZWwuYnJlYWtUeXBlIGFzIEJyZWFrVHlwZXMpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kVHlwZS5BZGROdW1iZXJpbmc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSBjb21tYW5kLmFkZE51bWJlcmluZztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGROdW1iZXJpbmcoY29udGVudHMsIGRvY3VtZW50Lm51bWJlcmluZ3MsIG1vZGVsLnN0YXJ0SW5kZXgsIG1vZGVsLmVuZEluZGV4LCBtb2RlbC5sZXZlbHMpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kVHlwZS5SZXN0b3JlTnVtYmVyaW5nczoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IGNvbW1hbmQucmVzdG9yZU51bWJlcmluZ3M7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzdG9yZU51bWJlcmluZ3MoY29udGVudHMsIGRvY3VtZW50Lm51bWJlcmluZ3MsIG1vZGVsLnBhcmFncmFwaHMsIG1vZGVsLm51bWJlcmluZ3MpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kVHlwZS5JbnNlcnRUYWI6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSBjb21tYW5kLmluc2VydFRhYjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRUYWIoY29udGVudHMsIG1vZGVsLmluc2VydEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZFR5cGUuSW5zZXJ0TGluazoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IGNvbW1hbmQuaW5zZXJ0TGluaztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRMaW5rKFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RlbC5saW5rRGF0YU1vZGVsLnRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RlbC5saW5rRGF0YU1vZGVsLmxpbmssXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RlbC5pbnNlcnRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUZXh0U3R5bGVNb2RlbCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uREVGQVVMVF9URVhUX1NUWUxFLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRpbmdTdHlsZUlkOiBIWVBFUkxJTktfSEVBRElOR19TVFlMRV9JRCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlcmxpbmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udENvbG9yOiBIWVBFUkxJTktfRk9OVF9DT0xPUlxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZFR5cGUuSW5zZXJ0VGFibGVDb2x1bW5zOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gY29tbWFuZC5pbnNlcnRUYWJsZUNvbHVtbnM7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9IHRoaXMuZ2V0Q29udGVudFdpZHRoKGRvY3VtZW50LCBjb250ZW50cyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0VGFibGVDb2x1bW5zKFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RlbC5pbnNlcnRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsLmNvbHVtbnNDb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsLnRhcmdldEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwuaW5oZXJpdEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFdpZHRoXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRUeXBlLkluc2VydFRhYmxlUm93czoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IGNvbW1hbmQuaW5zZXJ0VGFibGVSb3dzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydFRhYmxlUm93cyhjb250ZW50cywgbW9kZWwuaW5zZXJ0SW5kZXgsIG1vZGVsLnJvd3NDb3VudCwgbW9kZWwudGFyZ2V0SW5kZXgsIG1vZGVsLmluaGVyaXRJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRUeXBlLlJlbW92ZVRhYmxlQ29sdW1uczoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IGNvbW1hbmQucmVtb3ZlVGFibGVDb2x1bW5zO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50V2lkdGggPSB0aGlzLmdldENvbnRlbnRXaWR0aChkb2N1bWVudCwgY29udGVudHMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVRhYmxlQ29sdW1ucyhjb250ZW50cywgbW9kZWwuaW5zZXJ0SW5kZXgsIG1vZGVsLnN0YXJ0SW5kZXgsIG1vZGVsLmVuZEluZGV4LCBjb250ZW50V2lkdGgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kVHlwZS5SZW1vdmVUYWJsZVJvd3M6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSBjb21tYW5kLnJlbW92ZVRhYmxlUm93cztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVUYWJsZVJvd3MoY29udGVudHMsIG1vZGVsLmluc2VydEluZGV4LCBtb2RlbC5zdGFydEluZGV4LCBtb2RlbC5lbmRJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRUeXBlLlJlc2l6ZVRhYmxlQ29sdW1uczoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IGNvbW1hbmQucmVzaXplVGFibGVDb2x1bW5zO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZVRhYmxlQ29sdW1ucyhjb250ZW50cywgbW9kZWwpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kVHlwZS5SZXN0b3JlVGFibGU6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSBjb21tYW5kLnJlc3RvcmVUYWJsZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN0b3JlVGFibGUoY29udGVudHMsIG1vZGVsLmluc2VydEluZGV4LCBtb2RlbC5vbGRUYWJsZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRUeXBlLkluc2VydFRhYmxlOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gY29tbWFuZC5pbnNlcnRUYWJsZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudFdpZHRoID0gdGhpcy5nZXRDb250ZW50V2lkdGgoZG9jdW1lbnQsIGNvbnRlbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRUYWJsZShjb250ZW50cywgbW9kZWwuaW5zZXJ0SW5kZXgsIG1vZGVsLCBjb250ZW50V2lkdGgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kVHlwZS5BcHBseUltYWdlU3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSBjb21tYW5kLmFwcGx5SW1hZ2VTdHlsZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseUltYWdlU3R5bGUoY29udGVudHMsIG1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZFR5cGUuSW5zZXJ0SW1hZ2U6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSBjb21tYW5kLmluc2VydEltYWdlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydEltYWdlKGNvbnRlbnRzLCBtb2RlbC5pbnNlcnRJbmRleCwgbW9kZWwuaW1hZ2VEYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZFR5cGUuUmVtb3ZlTnVtYmVyaW5nczoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IGNvbW1hbmQucmVtb3ZlTnVtYmVyaW5ncztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVOdW1iZXJpbmdzKGNvbnRlbnRzLCBkb2N1bWVudC5udW1iZXJpbmdzLCBtb2RlbC5zdGFydEluZGV4LCBtb2RlbC5lbmRJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRUeXBlLlJlcGxhY2U6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudFdpZHRoID0gdGhpcy5nZXRDb250ZW50V2lkdGgoZG9jdW1lbnQsIGNvbnRlbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXBsYWNlKGNvbnRlbnRzLCBjb21tYW5kLnJlcGxhY2UsIGNvbnRlbnRXaWR0aCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldFRhcmdldENvbnRlbnRzKGRvY3VtZW50OiBEb2N4TW9kZWwsIGNvbW1hbmQ6IENvbW1hbmRNb2RlbCk6IENvbnRlbnRzSW50ZXJmYWNlIHtcbiAgICAgICAgbGV0IHJlc3VsdDogQ29udGVudHNJbnRlcmZhY2UgPSBkb2N1bWVudDtcbiAgICAgICAgZm9yIChjb25zdCB0YXJnZXQgb2YgY29tbWFuZC50YXJnZXRzKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBUYXJnZXRPcGVyYXRpb25zSGVscGVyLmdldENvbnRlbnRzKHJlc3VsdCwgdGFyZ2V0LCBkb2N1bWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0Q29udGVudFdpZHRoKGRvY3VtZW50OiBEb2N4TW9kZWwsIGNvbnRlbnRzOiBDb250ZW50c0ludGVyZmFjZSk6IG51bWJlciB7XG4gICAgICAgIGxldCBjb250ZW50V2lkdGggPSAwO1xuXG4gICAgICAgIGlmIChjb250ZW50cyBpbnN0YW5jZW9mIENlbGxNb2RlbCkge1xuICAgICAgICAgICAgY29uc3QgbWFyZ2lucyA9IChjb250ZW50cy5tYXJnaW5zPy5sZWZ0ID8/IDApICsgKGNvbnRlbnRzLm1hcmdpbnM/LnJpZ2h0ID8/IDApO1xuICAgICAgICAgICAgY29udGVudFdpZHRoID0gY29udGVudHMud2lkdGggLSBtYXJnaW5zO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udGVudFdpZHRoID0gZG9jdW1lbnQucGFnZVdpZHRoIC0gZG9jdW1lbnQubWFyZ2luTGVmdCAtIGRvY3VtZW50Lm1hcmdpblJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRlbnRXaWR0aDtcbiAgICB9XG5cbiAgICBzdGF0aWMgaW5zZXJ0VGV4dChkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIHRleHQ6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBkb2N1bWVudC5jb250ZW50ID0gQ29udGVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5jb250ZW50LCB0ZXh0LCBpbmRleCk7XG4gICAgICAgIGRvY3VtZW50LmNvbnRlbnRMZW5ndGggPSBkb2N1bWVudC5jb250ZW50Lmxlbmd0aDtcbiAgICAgICAgRm9ybWF0T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmZvcm1hdHMsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIFBhcmFncmFwaE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5wYXJhZ3JhcGhzLCB0ZXh0LCBpbmRleCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmltYWdlcywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQudGFibGVzLCBpbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5lbGVtZW50cywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuYnJlYWtzLCBpbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC50YWJzLCBpbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBMaW5rT3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmxpbmtzLCBpbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBpbnNlcnRQYXJhZ3JhcGgoZG9jdW1lbnQ6IENvbnRlbnRzSW50ZXJmYWNlLCBpbmRleDogbnVtYmVyLCBtb2RlbDogSW5zZXJ0UGFyYWdyYXBoTW9kZWwsIGNvbnRlbnRXaWR0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgY3JlYXRlZFBhcmFncmFwaHMgPSBQYXJhZ3JhcGhPcGVyYXRpb25zSGVscGVyLmluc2VydFBhcmFncmFwaHNGcm9tTW9kZWwoZG9jdW1lbnQucGFyYWdyYXBocywgaW5kZXgpO1xuICAgICAgICBjb25zdCB0ZXh0ID0gY3JlYXRlZFBhcmFncmFwaHMubWFwKCgpID0+IE5FV19MSU5FX01BUktVUCkuam9pbignJyk7XG4gICAgICAgIGRvY3VtZW50LmNvbnRlbnQgPSBDb250ZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmNvbnRlbnQsIHRleHQsIGluZGV4KTtcbiAgICAgICAgZG9jdW1lbnQuY29udGVudExlbmd0aCA9IGRvY3VtZW50LmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICBGb3JtYXRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuZm9ybWF0cywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuaW1hZ2VzLCBpbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC50YWJsZXMsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmVsZW1lbnRzLCBpbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5icmVha3MsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LnRhYnMsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIExpbmtPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQubGlua3MsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IG5ld0xhc3RQYXJhZ3JhcGggPSBjcmVhdGVkUGFyYWdyYXBoc1tjcmVhdGVkUGFyYWdyYXBocy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKG1vZGVsLmluc2VydFRleHQpIHtcbiAgICAgICAgICAgIG1vZGVsLmluc2VydFRleHQuaW5zZXJ0SW5kZXggPSBuZXdMYXN0UGFyYWdyYXBoLmluc2VydEluZGV4O1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRUZXh0KGRvY3VtZW50LCBtb2RlbC5pbnNlcnRUZXh0LnRleHQsIG1vZGVsLmluc2VydFRleHQuaW5zZXJ0SW5kZXgpO1xuICAgICAgICB9IGVsc2UgaWYgKG1vZGVsLmluc2VydEltYWdlKSB7XG4gICAgICAgICAgICBtb2RlbC5pbnNlcnRJbWFnZS5pbnNlcnRJbmRleCA9IG5ld0xhc3RQYXJhZ3JhcGguaW5zZXJ0SW5kZXg7XG4gICAgICAgICAgICB0aGlzLmluc2VydEltYWdlKGRvY3VtZW50LCBtb2RlbC5pbnNlcnRJbWFnZS5pbnNlcnRJbmRleCwgbW9kZWwuaW5zZXJ0SW1hZ2UuaW1hZ2VEYXRhKTtcbiAgICAgICAgfSBlbHNlIGlmIChtb2RlbC5pbnNlcnRUYWJsZSkge1xuICAgICAgICAgICAgbmV3TGFzdFBhcmFncmFwaC5wYXJhZ3JhcGhTdHlsZS5udW1iZXJpbmdMZXZlbCA9IG51bGw7XG4gICAgICAgICAgICBuZXdMYXN0UGFyYWdyYXBoLnBhcmFncmFwaFN0eWxlLm51bWJlcmluZ0lkID0gbnVsbDtcbiAgICAgICAgICAgIG1vZGVsLmluc2VydFRhYmxlLmluc2VydEluZGV4ID0gbmV3TGFzdFBhcmFncmFwaC5pbnNlcnRJbmRleDtcbiAgICAgICAgICAgIG1vZGVsLmluc2VydFRhYmxlLmluc2VydFRhYmxlSW5kZXggPSBuZXdMYXN0UGFyYWdyYXBoLmluc2VydEluZGV4O1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRUYWJsZShkb2N1bWVudCwgbW9kZWwuaW5zZXJ0VGFibGUuaW5zZXJ0SW5kZXgsIG1vZGVsLmluc2VydFRhYmxlLCBjb250ZW50V2lkdGgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZXh0O1xuICAgIH1cblxuICAgIHN0YXRpYyBpbnNlcnRFbGVtZW50KGRvY3VtZW50OiBDb250ZW50c0ludGVyZmFjZSwgZWxlbWVudDogSW5zZXJ0RWxlbWVudE1vZGVsKTogdm9pZCB7XG4gICAgICAgIGRvY3VtZW50LmNvbnRlbnQgPSBDb250ZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmNvbnRlbnQsIENVU1RPTV9FTEVNRU5UX01BUktFUiwgZWxlbWVudC5lbGVtZW50Lmluc2VydEluZGV4KTtcbiAgICAgICAgZG9jdW1lbnQuY29udGVudExlbmd0aCA9IGRvY3VtZW50LmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICBGb3JtYXRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuZm9ybWF0cywgZWxlbWVudC5lbGVtZW50Lmluc2VydEluZGV4LCAxKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQucGFyYWdyYXBocywgZWxlbWVudC5lbGVtZW50Lmluc2VydEluZGV4LCAxKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuaW1hZ2VzLCBlbGVtZW50LmVsZW1lbnQuaW5zZXJ0SW5kZXgsIDEpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC50YWJsZXMsIGVsZW1lbnQuZWxlbWVudC5pbnNlcnRJbmRleCwgMSk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnQoZG9jdW1lbnQuZWxlbWVudHMsIGVsZW1lbnQuZWxlbWVudCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmJyZWFrcywgZWxlbWVudC5lbGVtZW50Lmluc2VydEluZGV4LCAxKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQudGFicywgZWxlbWVudC5lbGVtZW50Lmluc2VydEluZGV4LCAxKTtcbiAgICAgICAgTGlua09wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5saW5rcywgZWxlbWVudC5lbGVtZW50Lmluc2VydEluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgaW5zZXJ0QnJlYWsoZG9jdW1lbnQ6IENvbnRlbnRzSW50ZXJmYWNlLCB0ZXh0OiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIGJyZWFrVHlwZTogQnJlYWtUeXBlcyk6IHZvaWQge1xuICAgICAgICBkb2N1bWVudC5jb250ZW50ID0gQ29udGVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5jb250ZW50LCB0ZXh0LCBpbmRleCk7XG4gICAgICAgIGRvY3VtZW50LmNvbnRlbnRMZW5ndGggPSBkb2N1bWVudC5jb250ZW50Lmxlbmd0aDtcbiAgICAgICAgRm9ybWF0T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmZvcm1hdHMsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIFBhcmFncmFwaE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5wYXJhZ3JhcGhzLCB0ZXh0LCBpbmRleCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmltYWdlcywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQudGFibGVzLCBpbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5lbGVtZW50cywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgQnJlYWtPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuYnJlYWtzLCBpbmRleCArIHRleHQubGVuZ3RoIC0gMSwgYnJlYWtUeXBlLCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LnRhYnMsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIExpbmtPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQubGlua3MsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGluc2VydFRhYihkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgZG9jdW1lbnQuY29udGVudCA9IENvbnRlbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuY29udGVudCwgQ1VTVE9NX0VMRU1FTlRfTUFSS0VSLCBpbmRleCk7XG4gICAgICAgIGRvY3VtZW50LmNvbnRlbnRMZW5ndGggPSBkb2N1bWVudC5jb250ZW50Lmxlbmd0aDtcbiAgICAgICAgRm9ybWF0T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmZvcm1hdHMsIGluZGV4LCAxKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQucGFyYWdyYXBocywgaW5kZXgsIDEpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5pbWFnZXMsIGluZGV4LCAxKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQudGFibGVzLCBpbmRleCwgMSk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmVsZW1lbnRzLCBpbmRleCwgMSk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmJyZWFrcywgaW5kZXgsIDEpO1xuICAgICAgICBUYWJPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQudGFicywgaW5kZXgpO1xuICAgICAgICBMaW5rT3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmxpbmtzLCBpbmRleCwgMSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGluc2VydExpbmsoZG9jdW1lbnQ6IENvbnRlbnRzSW50ZXJmYWNlLCB0ZXh0OiBzdHJpbmcsIGxpbms6IHN0cmluZywgaW5kZXg6IG51bWJlciwgc3R5bGU6IFRleHRTdHlsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGRvY3VtZW50LmNvbnRlbnQgPSBDb250ZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmNvbnRlbnQsIHRleHQsIGluZGV4KTtcbiAgICAgICAgZG9jdW1lbnQuY29udGVudExlbmd0aCA9IGRvY3VtZW50LmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICBGb3JtYXRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuZm9ybWF0cywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgUGFyYWdyYXBoT3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LnBhcmFncmFwaHMsIHRleHQsIGluZGV4KTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuaW1hZ2VzLCBpbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC50YWJsZXMsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmVsZW1lbnRzLCBpbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5icmVha3MsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LnRhYnMsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIExpbmtPcGVyYXRpb25zSGVscGVyLmluc2VydChkb2N1bWVudC5saW5rcywgbGluaywgaW5kZXgsIGluZGV4ICsgdGV4dC5sZW5ndGggLSAxLCBzdHlsZSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGFkZE51bWJlcmluZyhcbiAgICAgICAgdGFyZ2V0OiBDb250ZW50c0ludGVyZmFjZSxcbiAgICAgICAgbnVtYmVyaW5nczogTnVtYmVyaW5nTW9kZWxbXSxcbiAgICAgICAgc3RhcnRJbmRleDogbnVtYmVyLFxuICAgICAgICBlbmRJbmRleDogbnVtYmVyLFxuICAgICAgICBsZXZlbHM6IE51bWJlcmluZ0xldmVsTW9kZWxbXVxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdOdW1iZXJpbmdJZCA9IE51bWJlcmluZ09wZXJhdGlvbnNIZWxwZXIuZ2VuZXJhdGVOdW1iZXJpbmdJZChudW1iZXJpbmdzKTtcbiAgICAgICAgY29uc3Qgb2xkTnVtYmVyaW5nSWRzID0gUGFyYWdyYXBoT3BlcmF0aW9uc0hlbHBlci5hcHBseU51bWJlcmluZyh0YXJnZXQucGFyYWdyYXBocywgc3RhcnRJbmRleCwgZW5kSW5kZXgsIG5ld051bWJlcmluZ0lkKTtcbiAgICAgICAgTnVtYmVyaW5nT3BlcmF0aW9uc0hlbHBlci5hZGROdW1iZXJpbmcobnVtYmVyaW5ncywgbmV3TnVtYmVyaW5nSWQsIGxldmVscyk7XG4gICAgICAgIE51bWJlcmluZ09wZXJhdGlvbnNIZWxwZXIuZGVsZXRlVW51c2VkKG51bWJlcmluZ3MsIHRhcmdldC5wYXJhZ3JhcGhzLCBvbGROdW1iZXJpbmdJZHMpO1xuICAgIH1cblxuICAgIHN0YXRpYyByZW1vdmVOdW1iZXJpbmdzKHRhcmdldDogQ29udGVudHNJbnRlcmZhY2UsIG51bWJlcmluZ3M6IE51bWJlcmluZ01vZGVsW10sIHN0YXJ0SW5kZXg6IG51bWJlciwgZW5kSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBvbGROdW1iZXJpbmdJZHMgPSBQYXJhZ3JhcGhPcGVyYXRpb25zSGVscGVyLmFwcGx5TnVtYmVyaW5nKHRhcmdldC5wYXJhZ3JhcGhzLCBzdGFydEluZGV4LCBlbmRJbmRleCwgbnVsbCk7XG4gICAgICAgIE51bWJlcmluZ09wZXJhdGlvbnNIZWxwZXIuZGVsZXRlVW51c2VkKG51bWJlcmluZ3MsIHRhcmdldC5wYXJhZ3JhcGhzLCBvbGROdW1iZXJpbmdJZHMpO1xuICAgIH1cblxuICAgIHN0YXRpYyByZXN0b3JlTnVtYmVyaW5ncyhcbiAgICAgICAgdGFyZ2V0OiBDb250ZW50c0ludGVyZmFjZSxcbiAgICAgICAgbnVtYmVyaW5nczogTnVtYmVyaW5nTW9kZWxbXSxcbiAgICAgICAgcGFyYWdyYXBoc1RvUmVzdG9yZTogUGFyYWdyYXBoTW9kZWxbXSxcbiAgICAgICAgbnVtYmVyaW5nc1RvUmVzdG9yZTogTnVtYmVyaW5nTW9kZWxbXVxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCBvbGROdW1iZXJpbmdJZHMgPSBQYXJhZ3JhcGhPcGVyYXRpb25zSGVscGVyLnJlc3RvcmVOdW1iZXJpbmdQYXJhZ3JhcGhzKHRhcmdldC5wYXJhZ3JhcGhzLCBwYXJhZ3JhcGhzVG9SZXN0b3JlKTtcbiAgICAgICAgTnVtYmVyaW5nT3BlcmF0aW9uc0hlbHBlci5yZXN0b3JlKG51bWJlcmluZ3MsIG51bWJlcmluZ3NUb1Jlc3RvcmUpO1xuICAgICAgICBOdW1iZXJpbmdPcGVyYXRpb25zSGVscGVyLmRlbGV0ZVVudXNlZChudW1iZXJpbmdzLCB0YXJnZXQucGFyYWdyYXBocywgb2xkTnVtYmVyaW5nSWRzKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgaW5zZXJ0SW1hZ2UoZG9jdW1lbnQ6IENvbnRlbnRzSW50ZXJmYWNlLCBpbmRleDogbnVtYmVyLCBpbWFnZURhdGE6IEltYWdlRGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGRvY3VtZW50LmNvbnRlbnQgPSBDb250ZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmNvbnRlbnQsIENVU1RPTV9FTEVNRU5UX01BUktFUiwgaW5kZXgpO1xuICAgICAgICBkb2N1bWVudC5jb250ZW50TGVuZ3RoID0gZG9jdW1lbnQuY29udGVudC5sZW5ndGg7XG4gICAgICAgIEZvcm1hdE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5mb3JtYXRzLCBpbmRleCwgMSk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LnBhcmFncmFwaHMsIGluZGV4LCAxKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQudGFibGVzLCBpbmRleCwgMSk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmVsZW1lbnRzLCBpbmRleCwgMSk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmJyZWFrcywgaW5kZXgsIDEpO1xuICAgICAgICBJbWFnZU9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5pbWFnZXMsIGluZGV4LCBpbWFnZURhdGEpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC50YWJzLCBpbmRleCwgMSk7XG4gICAgICAgIExpbmtPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQubGlua3MsIGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgaW5zZXJ0VGFibGUoZG9jdW1lbnQ6IENvbnRlbnRzSW50ZXJmYWNlLCBpbmRleDogbnVtYmVyLCB0YWJsZU1vZGVsOiBJbnNlcnRUYWJsZU1vZGVsLCBjb250ZW50V2lkdGg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBkb2N1bWVudC5jb250ZW50ID0gQ29udGVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5jb250ZW50LCB0YWJsZU1vZGVsLmNvbnRlbnQsIGluZGV4KTtcbiAgICAgICAgZG9jdW1lbnQuY29udGVudExlbmd0aCA9IGRvY3VtZW50LmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICBGb3JtYXRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuZm9ybWF0cywgaW5kZXgsIHRhYmxlTW9kZWwuY29udGVudC5sZW5ndGgpO1xuICAgICAgICBQYXJhZ3JhcGhPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQucGFyYWdyYXBocywgdGFibGVNb2RlbC5jb250ZW50LCBpbmRleCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmltYWdlcywgaW5kZXgsIHRhYmxlTW9kZWwuY29udGVudC5sZW5ndGgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5lbGVtZW50cywgaW5kZXgsIHRhYmxlTW9kZWwuY29udGVudC5sZW5ndGgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5icmVha3MsIGluZGV4LCB0YWJsZU1vZGVsLmNvbnRlbnQubGVuZ3RoKTtcbiAgICAgICAgVGFibGVPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQudGFibGVzLCBpbmRleCwgdGFibGVNb2RlbCwgY29udGVudFdpZHRoKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQudGFicywgaW5kZXgsIHRhYmxlTW9kZWwuY29udGVudC5sZW5ndGgpO1xuICAgICAgICBMaW5rT3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmxpbmtzLCBpbmRleCwgdGFibGVNb2RlbC5jb250ZW50Lmxlbmd0aCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGluc2VydFN0eWxlZFRleHQoZG9jdW1lbnQ6IENvbnRlbnRzSW50ZXJmYWNlLCB0ZXh0OiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIHN0eWxlOiBUZXh0U3R5bGVNb2RlbCk6IHZvaWQge1xuICAgICAgICBkb2N1bWVudC5jb250ZW50ID0gQ29udGVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5jb250ZW50LCB0ZXh0LCBpbmRleCk7XG4gICAgICAgIGRvY3VtZW50LmNvbnRlbnRMZW5ndGggPSBkb2N1bWVudC5jb250ZW50Lmxlbmd0aDtcbiAgICAgICAgRm9ybWF0T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRTdHlsZWRDb250ZW50KGRvY3VtZW50LmZvcm1hdHMsIGluZGV4LCB0ZXh0Lmxlbmd0aCwgc3R5bGUpO1xuICAgICAgICBQYXJhZ3JhcGhPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQucGFyYWdyYXBocywgdGV4dCwgaW5kZXgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5pbWFnZXMsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LnRhYmxlcywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuZWxlbWVudHMsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmJyZWFrcywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQudGFicywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgTGlua09wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5saW5rcywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZGVsZXRlUmVzdG9yZShkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIG1vZGVsOiBSZXN0b3JlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgaWYgKG1vZGVsLnN0YXJ0SW5kZXggIT09IG1vZGVsLmVuZEluZGV4KSB7XG4gICAgICAgICAgICB0aGlzLmRlbGV0ZShkb2N1bWVudCwgbW9kZWwuc3RhcnRJbmRleCwgbW9kZWwuZW5kSW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZXN0b3JlKGRvY3VtZW50LCBtb2RlbCk7XG4gICAgfVxuXG4gICAgc3RhdGljIHJlc3RvcmUoZG9jdW1lbnQ6IENvbnRlbnRzSW50ZXJmYWNlLCBtb2RlbDogUmVzdG9yZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGRvY3VtZW50LmNvbnRlbnQgPSBDb250ZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmNvbnRlbnQsIG1vZGVsLnRleHQsIG1vZGVsLnN0YXJ0SW5kZXgpO1xuICAgICAgICBkb2N1bWVudC5jb250ZW50TGVuZ3RoID0gZG9jdW1lbnQuY29udGVudC5sZW5ndGg7XG4gICAgICAgIEZvcm1hdE9wZXJhdGlvbnNIZWxwZXIucmVzdG9yZShkb2N1bWVudC5mb3JtYXRzLCBtb2RlbC5zdGFydEluZGV4LCBtb2RlbC50ZXh0Lmxlbmd0aCwgbW9kZWwuZm9ybWF0cyk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5yZXN0b3JlKGRvY3VtZW50LnBhcmFncmFwaHMsIG1vZGVsLnN0YXJ0SW5kZXgsIG1vZGVsLnRleHQubGVuZ3RoLCBtb2RlbC5wYXJhZ3JhcGhzKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLnJlc3RvcmUoZG9jdW1lbnQuaW1hZ2VzLCBtb2RlbC5zdGFydEluZGV4LCBtb2RlbC50ZXh0Lmxlbmd0aCwgbW9kZWwuaW1hZ2VzKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLnJlc3RvcmUoZG9jdW1lbnQudGFibGVzLCBtb2RlbC5zdGFydEluZGV4LCBtb2RlbC50ZXh0Lmxlbmd0aCwgbW9kZWwudGFibGVzKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLnJlc3RvcmUoZG9jdW1lbnQuZWxlbWVudHMsIG1vZGVsLnN0YXJ0SW5kZXgsIG1vZGVsLnRleHQubGVuZ3RoLCBtb2RlbC5lbGVtZW50cyk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5yZXN0b3JlKGRvY3VtZW50LmJyZWFrcywgbW9kZWwuc3RhcnRJbmRleCwgbW9kZWwudGV4dC5sZW5ndGgsIG1vZGVsLmJyZWFrcyk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5yZXN0b3JlKGRvY3VtZW50LnRhYnMsIG1vZGVsLnN0YXJ0SW5kZXgsIG1vZGVsLnRleHQubGVuZ3RoLCBtb2RlbC50YWJzKTtcbiAgICAgICAgTGlua09wZXJhdGlvbnNIZWxwZXIucmVzdG9yZShkb2N1bWVudC5saW5rcywgbW9kZWwuc3RhcnRJbmRleCwgbW9kZWwudGV4dC5sZW5ndGgsIG1vZGVsLmxpbmtzKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZGVsZXRlKGRvY3VtZW50OiBDb250ZW50c0ludGVyZmFjZSwgc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGRvY3VtZW50LmNvbnRlbnQgPSBDb250ZW50T3BlcmF0aW9uc0hlbHBlci5yZW1vdmVDb250ZW50KGRvY3VtZW50LmNvbnRlbnQsIHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcbiAgICAgICAgZG9jdW1lbnQuY29udGVudExlbmd0aCA9IGRvY3VtZW50LmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICBGb3JtYXRPcGVyYXRpb25zSGVscGVyLnJlbW92ZUNvbnRlbnQoZG9jdW1lbnQuZm9ybWF0cywgc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIucmVtb3ZlQ29udGVudChkb2N1bWVudC5wYXJhZ3JhcGhzLCBzdGFydEluZGV4LCBlbmRJbmRleCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5yZW1vdmVDb250ZW50KGRvY3VtZW50LmltYWdlcywgc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIucmVtb3ZlQ29udGVudChkb2N1bWVudC50YWJsZXMsIHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLnJlbW92ZUNvbnRlbnQoZG9jdW1lbnQuZWxlbWVudHMsIHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLnJlbW92ZUNvbnRlbnQoZG9jdW1lbnQuYnJlYWtzLCBzdGFydEluZGV4LCBlbmRJbmRleCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5yZW1vdmVDb250ZW50KGRvY3VtZW50LnRhYnMsIHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcbiAgICAgICAgTGlua09wZXJhdGlvbnNIZWxwZXIucmVtb3ZlQ29udGVudChkb2N1bWVudC5saW5rcywgc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuICAgIH1cblxuICAgIHN0YXRpYyByZXBsYWNlVGV4dChkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIHN0YXJ0SW5kZXg6IG51bWJlciwgZW5kSW5kZXg6IG51bWJlciwgdGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGRvY3VtZW50LmNvbnRlbnQgPSBDb250ZW50T3BlcmF0aW9uc0hlbHBlci5yZXBsYWNlQ29udGVudChkb2N1bWVudC5jb250ZW50LCBzdGFydEluZGV4LCBlbmRJbmRleCwgdGV4dCk7XG4gICAgICAgIGRvY3VtZW50LmNvbnRlbnRMZW5ndGggPSBkb2N1bWVudC5jb250ZW50Lmxlbmd0aDtcbiAgICAgICAgRm9ybWF0T3BlcmF0aW9uc0hlbHBlci5yZXBsYWNlQ29udGVudChkb2N1bWVudC5mb3JtYXRzLCBzdGFydEluZGV4LCBlbmRJbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBQYXJhZ3JhcGhPcGVyYXRpb25zSGVscGVyLnJlcGxhY2UoZG9jdW1lbnQucGFyYWdyYXBocywgdGV4dCwgc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIucmVwbGFjZUNvbnRlbnQoZG9jdW1lbnQuaW1hZ2VzLCBzdGFydEluZGV4LCBlbmRJbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIucmVwbGFjZUNvbnRlbnQoZG9jdW1lbnQudGFibGVzLCBzdGFydEluZGV4LCBlbmRJbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIucmVwbGFjZUNvbnRlbnQoZG9jdW1lbnQuZWxlbWVudHMsIHN0YXJ0SW5kZXgsIGVuZEluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5yZXBsYWNlQ29udGVudChkb2N1bWVudC5icmVha3MsIHN0YXJ0SW5kZXgsIGVuZEluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5yZXBsYWNlQ29udGVudChkb2N1bWVudC50YWJzLCBzdGFydEluZGV4LCBlbmRJbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBMaW5rT3BlcmF0aW9uc0hlbHBlci5yZXBsYWNlQ29udGVudChkb2N1bWVudC5saW5rcywgc3RhcnRJbmRleCwgZW5kSW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgcmVwbGFjZShkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIG1vZGVsOiBSZXBsYWNlTW9kZWwsIGNvbnRlbnRXaWR0aDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVsZXRlKGRvY3VtZW50LCBtb2RlbC5kZWxldGUuc3RhcnRJbmRleCwgbW9kZWwuZGVsZXRlLmVuZEluZGV4KTtcbiAgICAgICAgaWYgKG1vZGVsLmluc2VydFRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0VGV4dChkb2N1bWVudCwgbW9kZWwuaW5zZXJ0VGV4dC50ZXh0LCBtb2RlbC5pbnNlcnRUZXh0Lmluc2VydEluZGV4KTtcbiAgICAgICAgfSBlbHNlIGlmIChtb2RlbC5pbnNlcnRQYXJhZ3JhcGgpIHtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0UGFyYWdyYXBoKGRvY3VtZW50LCBtb2RlbC5pbnNlcnRQYXJhZ3JhcGguaW5zZXJ0SW5kZXgsIG1vZGVsLmluc2VydFBhcmFncmFwaCwgY29udGVudFdpZHRoKTtcbiAgICAgICAgfSBlbHNlIGlmIChtb2RlbC5pbnNlcnRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydEVsZW1lbnQoZG9jdW1lbnQsIG1vZGVsLmluc2VydEVsZW1lbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKG1vZGVsLmluc2VydFRhYikge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRUYWIoZG9jdW1lbnQsIG1vZGVsLmluc2VydFRhYi5pbnNlcnRJbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAobW9kZWwuaW5zZXJ0QnJlYWspIHtcbiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBtb2RlbC5pbnNlcnRCcmVhay5pc09uTmV3UGFyYWdyYXBoID8gYCR7TkVXX0xJTkVfTUFSS1VQfSR7Q1VTVE9NX0VMRU1FTlRfTUFSS0VSfWAgOiBDVVNUT01fRUxFTUVOVF9NQVJLRVI7XG4gICAgICAgICAgICB0aGlzLmluc2VydEJyZWFrKGRvY3VtZW50LCB0ZXh0LCBtb2RlbC5pbnNlcnRCcmVhay5pbnNlcnRJbmRleCwgbW9kZWwuaW5zZXJ0QnJlYWsuYnJlYWtUeXBlIGFzIEJyZWFrVHlwZXMpO1xuICAgICAgICB9IGVsc2UgaWYgKG1vZGVsLmluc2VydEltYWdlKSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydEltYWdlKGRvY3VtZW50LCBtb2RlbC5pbnNlcnRJbWFnZS5pbnNlcnRJbmRleCwgbW9kZWwuaW5zZXJ0SW1hZ2UuaW1hZ2VEYXRhKTtcbiAgICAgICAgfSBlbHNlIGlmIChtb2RlbC5pbnNlcnRUYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRUYWJsZShkb2N1bWVudCwgbW9kZWwuaW5zZXJ0VGFibGUuaW5zZXJ0SW5kZXgsIG1vZGVsLmluc2VydFRhYmxlLCBjb250ZW50V2lkdGgpO1xuICAgICAgICB9IGVsc2UgaWYgKG1vZGVsLmluc2VydExpbmspIHtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0TGluayhcbiAgICAgICAgICAgICAgICBkb2N1bWVudCxcbiAgICAgICAgICAgICAgICBtb2RlbC5pbnNlcnRMaW5rLmxpbmtEYXRhTW9kZWwudGV4dCxcbiAgICAgICAgICAgICAgICBtb2RlbC5pbnNlcnRMaW5rLmxpbmtEYXRhTW9kZWwubGluayxcbiAgICAgICAgICAgICAgICBtb2RlbC5pbnNlcnRMaW5rLmluc2VydEluZGV4LFxuICAgICAgICAgICAgICAgIG5ldyBUZXh0U3R5bGVNb2RlbCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLkRFRkFVTFRfVEVYVF9TVFlMRSxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGluZ1N0eWxlSWQ6IEhZUEVSTElOS19IRUFESU5HX1NUWUxFX0lELFxuICAgICAgICAgICAgICAgICAgICB1bmRlcmxpbmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGZvbnRDb2xvcjogSFlQRVJMSU5LX0ZPTlRfQ09MT1JcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBhcHBseVRleHRTdHlsZShkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIHN0YXJ0SW5kZXg6IG51bWJlciwgZW5kSW5kZXg6IG51bWJlciwgc3R5bGU6IFRleHRTdHlsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIEZvcm1hdE9wZXJhdGlvbnNIZWxwZXIuYXBwbHkoZG9jdW1lbnQuZm9ybWF0cywgc3RhcnRJbmRleCwgZW5kSW5kZXgsIHN0eWxlKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgcmVzdG9yZVRleHRTdHlsZXMoZG9jdW1lbnQ6IENvbnRlbnRzSW50ZXJmYWNlLCB0ZXh0Rm9ybWF0czogRm9ybWF0TW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBGb3JtYXRPcGVyYXRpb25zSGVscGVyLnJlc3RvcmVGb3JtYXRzKGRvY3VtZW50LmZvcm1hdHMsIHRleHRGb3JtYXRzKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgcmVzdG9yZVBhcmFncmFwaFN0eWxlcyhkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIHBhcmFncmFwaHM6IFBhcmFncmFwaE1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgUGFyYWdyYXBoT3BlcmF0aW9uc0hlbHBlci5yZXN0b3JlUGFyYWdyYXBocyhkb2N1bWVudC5wYXJhZ3JhcGhzLCBwYXJhZ3JhcGhzKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgYXBwbHlQYXJhZ3JhcGhTdHlsZShkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIHN0YXJ0SW5kZXg6IG51bWJlciwgZW5kSW5kZXg6IG51bWJlciwgc3R5bGU6IFBhcmFncmFwaFN0eWxlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgUGFyYWdyYXBoT3BlcmF0aW9uc0hlbHBlci5hcHBseShkb2N1bWVudC5wYXJhZ3JhcGhzLCBzdGFydEluZGV4LCBlbmRJbmRleCwgc3R5bGUpO1xuICAgIH1cblxuICAgIHN0YXRpYyBhcHBseUVsZW1lbnRTdHlsZShkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIG1vZGVsOiBBcHBseUVsZW1lbnRTdHlsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5lbGVtZW50cy5maW5kKHggPT4geC5pbnNlcnRJbmRleCA9PSBtb2RlbC5pbnNlcnRJbmRleCk7XG4gICAgICAgIGVsZW1lbnQud2lkdGggPSBtb2RlbC53aWR0aCA/PyBlbGVtZW50LndpZHRoO1xuICAgICAgICBlbGVtZW50LmhlaWdodCA9IG1vZGVsLmhlaWdodCA/PyBlbGVtZW50LmhlaWdodDtcbiAgICB9XG5cbiAgICBzdGF0aWMgYXBwbHlJbWFnZVN0eWxlKGRvY3VtZW50OiBDb250ZW50c0ludGVyZmFjZSwgaW1hZ2U6IEFwcGx5SW1hZ2VTdHlsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIEltYWdlT3BlcmF0aW9uc0hlbHBlci5hcHBseShkb2N1bWVudC5pbWFnZXMsIGltYWdlKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgaW5zZXJ0VGFibGVSb3dzKFxuICAgICAgICBkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsXG4gICAgICAgIGluc2VydEluZGV4OiBudW1iZXIsXG4gICAgICAgIHJvd3NDb3VudDogbnVtYmVyLFxuICAgICAgICB0YXJnZXRJbmRleDogbnVtYmVyLFxuICAgICAgICBpbmhlcml0SW5kZXg6IG51bWJlclxuICAgICk6IHZvaWQge1xuICAgICAgICBUYWJsZU9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0VGFibGVSb3dzKGRvY3VtZW50LnRhYmxlcywgaW5zZXJ0SW5kZXgsIHJvd3NDb3VudCwgdGFyZ2V0SW5kZXgsIGluaGVyaXRJbmRleCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGluc2VydFRhYmxlQ29sdW1ucyhcbiAgICAgICAgZG9jdW1lbnQ6IENvbnRlbnRzSW50ZXJmYWNlLFxuICAgICAgICBpbnNlcnRJbmRleDogbnVtYmVyLFxuICAgICAgICBjb2x1bW5zQ291bnQ6IG51bWJlcixcbiAgICAgICAgdGFyZ2V0SW5kZXg6IG51bWJlcixcbiAgICAgICAgaW5oZXJpdEluZGV4OiBudW1iZXIsXG4gICAgICAgIGNvbnRlbnRXaWR0aDogbnVtYmVyXG4gICAgKTogdm9pZCB7XG4gICAgICAgIFRhYmxlT3BlcmF0aW9uc0hlbHBlci5pbnNlcnRUYWJsZUNvbHVtbnMoZG9jdW1lbnQudGFibGVzLCBpbnNlcnRJbmRleCwgY29sdW1uc0NvdW50LCB0YXJnZXRJbmRleCwgaW5oZXJpdEluZGV4LCBjb250ZW50V2lkdGgpO1xuICAgIH1cblxuICAgIHN0YXRpYyByZW1vdmVUYWJsZVJvd3MoZG9jdW1lbnQ6IENvbnRlbnRzSW50ZXJmYWNlLCBpbnNlcnRJbmRleDogbnVtYmVyLCBzdGFydEluZGV4OiBudW1iZXIsIGVuZEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgVGFibGVPcGVyYXRpb25zSGVscGVyLnJlbW92ZVRhYmxlUm93cyhkb2N1bWVudC50YWJsZXMsIGluc2VydEluZGV4LCBzdGFydEluZGV4LCBlbmRJbmRleCk7XG4gICAgfVxuXG4gICAgc3RhdGljIHJlbW92ZVRhYmxlQ29sdW1ucyhcbiAgICAgICAgZG9jdW1lbnQ6IENvbnRlbnRzSW50ZXJmYWNlLFxuICAgICAgICBpbnNlcnRJbmRleDogbnVtYmVyLFxuICAgICAgICBzdGFydEluZGV4OiBudW1iZXIsXG4gICAgICAgIGVuZEluZGV4OiBudW1iZXIsXG4gICAgICAgIGNvbnRlbnRXaWR0aDogbnVtYmVyXG4gICAgKTogdm9pZCB7XG4gICAgICAgIFRhYmxlT3BlcmF0aW9uc0hlbHBlci5yZW1vdmVUYWJsZUNvbHVtbnMoZG9jdW1lbnQudGFibGVzLCBpbnNlcnRJbmRleCwgc3RhcnRJbmRleCwgZW5kSW5kZXgsIGNvbnRlbnRXaWR0aCk7XG4gICAgfVxuXG4gICAgc3RhdGljIHJlc3RvcmVUYWJsZShkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIGluc2VydEluZGV4OiBudW1iZXIsIG9sZFRhYmxlOiBUYWJsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIFRhYmxlT3BlcmF0aW9uc0hlbHBlci5yZXN0b3JlVGFibGUoZG9jdW1lbnQudGFibGVzLCBpbnNlcnRJbmRleCwgb2xkVGFibGUpO1xuICAgIH1cblxuICAgIHN0YXRpYyByZXNpemVUYWJsZUNvbHVtbnMoZG9jdW1lbnQ6IENvbnRlbnRzSW50ZXJmYWNlLCByZXNpemVUYWJsZUNvbHVtbnM6IFJlc2l6ZVRhYmxlQ29sdW1uc01vZGVsKTogdm9pZCB7XG4gICAgICAgIFRhYmxlT3BlcmF0aW9uc0hlbHBlci5yZXNpemVUYWJsZUNvbHVtbnMoZG9jdW1lbnQudGFibGVzLCByZXNpemVUYWJsZUNvbHVtbnMpO1xuICAgIH1cbn1cbiJdfQ==
|
|
440
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9ucy1oZWxwZXIuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvZWRpdG9yL29wZXJhdGlvbnMvb3BlcmF0aW9ucy1oZWxwZXIuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFOUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDMUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLDBCQUEwQixFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRzFJLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBSTdGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBR3hFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRWxGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBTWxGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUV6RSxNQUFNLE9BQU8sZ0JBQWdCO0lBQ3pCLE1BQU0sQ0FBQyxlQUFlLENBQUMsUUFBbUIsRUFBRSxRQUF3QjtRQUNoRSxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3ZCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDM0QsUUFBUSxPQUFPLENBQUMsV0FBVyxFQUFFO2dCQUN6QixLQUFLLFdBQVcsQ0FBQyxVQUFVO29CQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUNuRixNQUFNO2dCQUNWLEtBQUssV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUM5QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDOUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztvQkFDM0csTUFBTTtpQkFDVDtnQkFDRCxLQUFLLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO29CQUMvQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDaEYsTUFBTTtpQkFDVDtnQkFDRCxLQUFLLFdBQVcsQ0FBQyxPQUFPO29CQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzlDLE1BQU07Z0JBQ1YsS0FBSyxXQUFXLENBQUMsTUFBTTtvQkFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDdkUsTUFBTTtnQkFDVixLQUFLLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDNUIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztvQkFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDekUsTUFBTTtpQkFDVDtnQkFDRCxLQUFLLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDN0IsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztvQkFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDakYsTUFBTTtpQkFDVDtnQkFDRCxLQUFLLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUNoQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUM7b0JBQ3hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNoRCxNQUFNO2lCQUNUO2dCQUNELEtBQUssV0FBVyxDQUFDLHNCQUFzQixDQUFDLENBQUM7b0JBQ3JDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQztvQkFDN0MsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3hELE1BQU07aUJBQ1Q7Z0JBQ0QsS0FBSyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQztvQkFDbEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixDQUFDO29CQUMxQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQzNGLE1BQU07aUJBQ1Q7Z0JBQ0QsS0FBSyxXQUFXLENBQUMsaUJBQWlCO29CQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUM1RCxNQUFNO2dCQUNWLEtBQUssV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUM1QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO29CQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDcEMsTUFBTTtpQkFDVDtnQkFDRCxLQUFLLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDMUIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztvQkFDbEMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxHQUFHLGVBQWUsR0FBRyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDM0csSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFNBQXVCLENBQUMsQ0FBQztvQkFDbkYsTUFBTTtpQkFDVDtnQkFDRCxLQUFLLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDM0IsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztvQkFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNqRyxNQUFNO2lCQUNUO2dCQUNELEtBQUssV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7b0JBQ2hDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztvQkFDeEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUMxRixNQUFNO2lCQUNUO2dCQUNELEtBQUssV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUN4QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO29CQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQzVDLE1BQU07aUJBQ1Q7Z0JBQ0QsS0FBSyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3pCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7b0JBQ2pDLElBQUksQ0FBQyxVQUFVLENBQ1gsUUFBUSxFQUNSLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUN4QixLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFDeEIsS0FBSyxDQUFDLFdBQVcsRUFDakIsSUFBSSxjQUFjLENBQUM7d0JBQ2YsR0FBRyxrQkFBa0I7d0JBQ3JCLGNBQWMsRUFBRSwwQkFBMEI7d0JBQzFDLFNBQVMsRUFBRSxJQUFJO3dCQUNmLFNBQVMsRUFBRSxvQkFBb0I7cUJBQ2xDLENBQUMsQ0FDTCxDQUFDO29CQUNGLE1BQU07aUJBQ1Q7Z0JBQ0QsS0FBSyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQztvQkFDakMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDO29CQUN6QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDOUQsSUFBSSxDQUFDLGtCQUFrQixDQUNuQixRQUFRLEVBQ1IsS0FBSyxDQUFDLFdBQVcsRUFDakIsS0FBSyxDQUFDLFlBQVksRUFDbEIsS0FBSyxDQUFDLFdBQVcsRUFDakIsS0FBSyxDQUFDLFlBQVksRUFDbEIsWUFBWSxDQUNmLENBQUM7b0JBQ0YsTUFBTTtpQkFDVDtnQkFDRCxLQUFLLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDOUIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUMxRyxNQUFNO2lCQUNUO2dCQUNELEtBQUssV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBQ2pDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztvQkFDekMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBQzlELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7b0JBQ3JHLE1BQU07aUJBQ1Q7Z0JBQ0QsS0FBSyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQzlCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUM7b0JBQ3RDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3BGLE1BQU07aUJBQ1Q7Z0JBQ0QsS0FBSyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQztvQkFDakMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDO29CQUN6QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUN6QyxNQUFNO2lCQUNUO2dCQUNELEtBQUssV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUMzQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO29CQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDL0QsTUFBTTtpQkFDVDtnQkFDRCxLQUFLLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDMUIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztvQkFDbEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBQzlELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO29CQUNuRSxNQUFNO2lCQUNUO2dCQUNELEtBQUssV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUM5QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDO29CQUN0QyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDdEMsTUFBTTtpQkFDVDtnQkFDRCxLQUFLLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDMUIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQy9ELE1BQU07aUJBQ1Q7Z0JBQ0QsS0FBSyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztvQkFDL0IsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDO29CQUN2QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3ZGLE1BQU07aUJBQ1Q7Z0JBQ0QsS0FBSyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3RCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUM5RCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO29CQUN0RCxNQUFNO2lCQUNUO2FBQ0o7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBbUIsRUFBRSxPQUFxQjtRQUMvRCxJQUFJLE1BQU0sR0FBc0IsUUFBUSxDQUFDO1FBQ3pDLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUNsQyxNQUFNLEdBQUcsc0JBQXNCLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDekU7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFtQixFQUFFLFFBQTJCO1FBQ25FLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztRQUVyQixJQUFJLFFBQVEsWUFBWSxTQUFTLEVBQUU7WUFDL0IsTUFBTSxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQy9FLFlBQVksR0FBRyxRQUFRLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztTQUMzQzthQUFNO1lBQ0gsWUFBWSxHQUFHLFFBQVEsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO1NBQ2xGO1FBRUQsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBMkIsRUFBRSxJQUFZLEVBQUUsS0FBYTtRQUN0RSxRQUFRLENBQUMsT0FBTyxHQUFHLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4RixRQUFRLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ2pELHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0UseUJBQXlCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFFLDhCQUE4QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEYsOEJBQThCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRiw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BGLDhCQUE4QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEYsOEJBQThCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRixvQkFBb0IsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLFFBQTJCLEVBQUUsS0FBYSxFQUFFLEtBQTJCLEVBQUUsWUFBb0I7UUFDaEgsTUFBTSxpQkFBaUIsR0FBRyx5QkFBeUIsQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFHLE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbkUsUUFBUSxDQUFDLE9BQU8sR0FBRyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEYsUUFBUSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUNqRCxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNFLDhCQUE4QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEYsOEJBQThCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRiw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BGLDhCQUE4QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEYsOEJBQThCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRixvQkFBb0IsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUNsQixLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7WUFDNUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNsRjthQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUMxQixLQUFLLENBQUMsV0FBVyxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7WUFDN0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUMxRjthQUFNLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUMxQixnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUN0RCxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUNuRCxLQUFLLENBQUMsV0FBVyxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7WUFDN0QsS0FBSyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7WUFDbEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztTQUM5RjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQTJCLEVBQUUsT0FBMkI7UUFDekUsUUFBUSxDQUFDLE9BQU8sR0FBRyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9ILFFBQVEsQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDakQsc0JBQXNCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkYsOEJBQThCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEcsOEJBQThCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUYsOEJBQThCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUYsOEJBQThCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFFLDhCQUE4QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlGLDhCQUE4QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVGLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQTJCLEVBQUUsSUFBWSxFQUFFLEtBQWEsRUFBRSxTQUFxQjtRQUM5RixRQUFRLENBQUMsT0FBTyxHQUFHLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4RixRQUFRLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ2pELHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0UseUJBQXlCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFFLDhCQUE4QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEYsOEJBQThCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRiw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BGLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RHLDhCQUE4QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEYsb0JBQW9CLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUEyQixFQUFFLEtBQWE7UUFDdkQsUUFBUSxDQUFDLE9BQU8sR0FBRyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6RyxRQUFRLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ2pELHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRSw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUUsOEJBQThCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLDhCQUE4QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RSw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUUsOEJBQThCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hELG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUEyQixFQUFFLElBQVksRUFBRSxJQUFZLEVBQUUsS0FBYSxFQUFFLEtBQXFCO1FBQzNHLFFBQVEsQ0FBQyxPQUFPLEdBQUcsdUJBQXVCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hGLFFBQVEsQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDakQsc0JBQXNCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzRSx5QkFBeUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUUsOEJBQThCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRiw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xGLDhCQUE4QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEYsOEJBQThCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRiw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hGLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUNmLE1BQXlCLEVBQ3pCLFVBQTRCLEVBQzVCLFVBQWtCLEVBQ2xCLFFBQWdCLEVBQ2hCLE1BQTZCO1FBRTdCLE1BQU0sY0FBYyxHQUFHLHlCQUF5QixDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sZUFBZSxHQUFHLHlCQUF5QixDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDMUgseUJBQXlCLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDM0UseUJBQXlCLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBeUIsRUFBRSxVQUE0QixFQUFFLFVBQWtCLEVBQUUsUUFBZ0I7UUFDakgsTUFBTSxlQUFlLEdBQUcseUJBQXlCLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoSCx5QkFBeUIsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FDcEIsTUFBeUIsRUFDekIsVUFBNEIsRUFDNUIsbUJBQXFDLEVBQ3JDLG1CQUFxQztRQUVyQyxNQUFNLGVBQWUsR0FBRyx5QkFBeUIsQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDckgseUJBQXlCLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQ25FLHlCQUF5QixDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUEyQixFQUFFLEtBQWEsRUFBRSxTQUF5QjtRQUNwRixRQUFRLENBQUMsT0FBTyxHQUFHLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pHLFFBQVEsQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDakQsc0JBQXNCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLDhCQUE4QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RSw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEUsOEJBQThCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFFLDhCQUE4QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RSxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdkUsOEJBQThCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUEyQixFQUFFLEtBQWEsRUFBRSxVQUE0QixFQUFFLFlBQW9CO1FBQzdHLFFBQVEsQ0FBQyxPQUFPLEdBQUcsdUJBQXVCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN0RyxRQUFRLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ2pELHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pGLHlCQUF5QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEYsOEJBQThCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEcsOEJBQThCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEcsOEJBQThCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEcscUJBQXFCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN0Riw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5RixvQkFBb0IsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQTJCLEVBQUUsSUFBWSxFQUFFLEtBQWEsRUFBRSxLQUFxQjtRQUNuRyxRQUFRLENBQUMsT0FBTyxHQUFHLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4RixRQUFRLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ2pELHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEYseUJBQXlCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFFLDhCQUE4QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEYsOEJBQThCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRiw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BGLDhCQUE4QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEYsOEJBQThCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRixvQkFBb0IsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQTJCLEVBQUUsS0FBbUI7UUFDakUsSUFBSSxLQUFLLENBQUMsVUFBVSxLQUFLLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDbEY7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUEyQixFQUFFLEtBQW1CO1FBQzNELFFBQVEsQ0FBQyxPQUFPLEdBQUcsdUJBQXVCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekcsUUFBUSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUNqRCxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuSCw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzRyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzRyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvRyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzRyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUEyQixFQUFFLFVBQWtCLEVBQUUsS0FBYTtRQUN4RSxRQUFRLENBQUMsT0FBTyxHQUFHLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5RixRQUFRLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ2pELE1BQU0sUUFBUSxHQUFHLFVBQVUsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM3RSw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDeEYsOEJBQThCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3BGLDhCQUE4QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNwRiw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdEYsOEJBQThCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3BGLDhCQUE4QixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNsRixvQkFBb0IsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBMkIsRUFBRSxVQUFrQixFQUFFLFFBQWdCLEVBQUUsSUFBWTtRQUM5RixRQUFRLENBQUMsT0FBTyxHQUFHLHVCQUF1QixDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEcsUUFBUSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUNqRCxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzRix5QkFBeUIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ25GLDhCQUE4QixDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xHLDhCQUE4QixDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xHLDhCQUE4QixDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BHLDhCQUE4QixDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xHLDhCQUE4QixDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hHLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQTJCLEVBQUUsS0FBbUIsRUFBRSxZQUFvQjtRQUNqRixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25FLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2xGO2FBQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFO1lBQzlCLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxlQUFlLEVBQUUsWUFBWSxDQUFDLENBQUM7U0FDMUc7YUFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3JEO2FBQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDekQ7YUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFDMUIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxlQUFlLEdBQUcscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUM7WUFDdkgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBdUIsQ0FBQyxDQUFDO1NBQzlHO2FBQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFO1lBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDMUY7YUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztTQUM5RjthQUFNLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUN6QixJQUFJLENBQUMsVUFBVSxDQUNYLFFBQVEsRUFDUixLQUFLLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQ25DLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksRUFDbkMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQzVCLElBQUksY0FBYyxDQUFDO2dCQUNmLEdBQUcsa0JBQWtCO2dCQUNyQixjQUFjLEVBQUUsMEJBQTBCO2dCQUMxQyxTQUFTLEVBQUUsSUFBSTtnQkFDZixTQUFTLEVBQUUsb0JBQW9CO2FBQ2xDLENBQUMsQ0FDTCxDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUEyQixFQUFFLFVBQWtCLEVBQUUsUUFBZ0IsRUFBRSxLQUFxQjtRQUMxRyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBMkIsRUFBRSxXQUEwQjtRQUM1RSxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFFBQTJCLEVBQUUsVUFBNEI7UUFDbkYseUJBQXlCLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQTJCLEVBQUUsVUFBa0IsRUFBRSxRQUFnQixFQUFFLEtBQTBCO1FBQ3BILHlCQUF5QixDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxRQUEyQixFQUFFLEtBQTZCO1FBQy9FLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEYsT0FBTyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDN0MsT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDcEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsUUFBMkIsRUFBRSxLQUEyQjtRQUMzRSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FDbEIsUUFBMkIsRUFDM0IsV0FBbUIsRUFDbkIsU0FBaUIsRUFDakIsV0FBbUIsRUFDbkIsWUFBb0I7UUFFcEIscUJBQXFCLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FDckIsUUFBMkIsRUFDM0IsV0FBbUIsRUFDbkIsWUFBb0IsRUFDcEIsV0FBbUIsRUFDbkIsWUFBb0IsRUFDcEIsWUFBb0I7UUFFcEIscUJBQXFCLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDbEksQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsUUFBMkIsRUFBRSxXQUFtQixFQUFFLFVBQWtCLEVBQUUsUUFBZ0I7UUFDekcscUJBQXFCLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUNyQixRQUEyQixFQUMzQixXQUFtQixFQUNuQixVQUFrQixFQUNsQixRQUFnQixFQUNoQixZQUFvQjtRQUVwQixxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQy9HLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQTJCLEVBQUUsV0FBbUIsRUFBRSxRQUFvQjtRQUN0RixxQkFBcUIsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxRQUEyQixFQUFFLGtCQUEyQztRQUM5RixxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDbEYsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbHlFbGVtZW50U3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvYXBwbHktZWxlbWVudC1zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBBcHBseUltYWdlU3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvYXBwbHktaW1hZ2Utc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgQnJlYWtPcGVyYXRpb25zSGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzL2JyZWFrLW9wZXJhdGlvbnMuaGVscGVyJztcbmltcG9ydCB7IEJyZWFrVHlwZXMgfSBmcm9tICcuLi9nYWRnZXRzL3BhZ2UtYnJlYWsvYnJlYWstdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBDZWxsTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2NlbGwubW9kZWwnO1xuaW1wb3J0IHsgQ29tbWFuZE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9jb21tYW5kLm1vZGVsJztcbmltcG9ydCB7IENvbW1hbmRUeXBlIH0gZnJvbSAnLi9lbnVtcy9jb21tYW5kLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBDb250ZW50T3BlcmF0aW9uc0hlbHBlciB9IGZyb20gJy4vaGVscGVycy9jb250ZW50LW9wZXJhdGlvbnMuaGVscGVyJztcbmltcG9ydCB7IENvbnRlbnRzSW50ZXJmYWNlIH0gZnJvbSAnLi4vY29udGVudC9jb250ZW50cy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ1VTVE9NX0VMRU1FTlRfTUFSS0VSIH0gZnJvbSAnLi4vY29tcG9uZW50cy9zaGFyZWQvY3VzdG9tLWNvbnRlbnQtbWFya2Vycy5jb25zdCc7XG5pbXBvcnQgeyBERUZBVUxUX1RFWFRfU1RZTEUsIEhZUEVSTElOS19GT05UX0NPTE9SLCBIWVBFUkxJTktfSEVBRElOR19TVFlMRV9JRCwgTkVXX0xJTkVfTUFSS1VQIH0gZnJvbSAnLi4vY29udGVudC9jb25zdGFudHMvZWRpdG9yLmNvbnN0JztcbmltcG9ydCB7IERvY3hNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvZG9jeC5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtYXRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvZm9ybWF0Lm1vZGVsJztcbmltcG9ydCB7IEZvcm1hdE9wZXJhdGlvbnNIZWxwZXIgfSBmcm9tICcuL2hlbHBlcnMvZm9ybWF0LW9wZXJhdGlvbnMuaGVscGVyJztcbmltcG9ydCB7IEltYWdlRGF0YU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbWFnZS1kYXRhLm1vZGVsJztcbmltcG9ydCB7IEltYWdlT3BlcmF0aW9uc0hlbHBlciB9IGZyb20gJy4vaGVscGVycy9pbWFnZS1vcGVyYXRpb25zLmhlbHBlcic7XG5pbXBvcnQgeyBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIgfSBmcm9tICcuL2hlbHBlcnMvaW5kZXhlZC1lbGVtZW50LW9wZXJhdGlvbnMuaGVscGVyJztcbmltcG9ydCB7IEluc2VydEVsZW1lbnRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LWVsZW1lbnQubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0UGFyYWdyYXBoTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC1wYXJhZ3JhcGgubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0VGFibGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LXRhYmxlLm1vZGVsJztcbmltcG9ydCB7IExpbmtPcGVyYXRpb25zSGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzL2xpbmstb3BlcmF0aW9ucy5oZWxwZXInO1xuaW1wb3J0IHsgTnVtYmVyaW5nTGV2ZWxNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvbnVtYmVyaW5nLWxldmVsLm1vZGVsJztcbmltcG9ydCB7IE51bWJlcmluZ01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9udW1iZXJpbmcubW9kZWwnO1xuaW1wb3J0IHsgTnVtYmVyaW5nT3BlcmF0aW9uc0hlbHBlciB9IGZyb20gJy4vaGVscGVycy9udW1iZXJpbmctb3BlcmF0aW9ucy5oZWxwZXInO1xuaW1wb3J0IHsgUGFyYWdyYXBoTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3BhcmFncmFwaC5tb2RlbCc7XG5pbXBvcnQgeyBQYXJhZ3JhcGhPcGVyYXRpb25zSGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzL3BhcmFncmFwaC1vcGVyYXRpb25zLmhlbHBlcic7XG5pbXBvcnQgeyBQYXJhZ3JhcGhTdHlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9wYXJhZ3JhcGgtc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgUmVwbGFjZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXBsYWNlLm1vZGVsJztcbmltcG9ydCB7IFJlc2l6ZVRhYmxlQ29sdW1uc01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXNpemUtdGFibGUtY29sdW1ucy5tb2RlbCc7XG5pbXBvcnQgeyBSZXN0b3JlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3Jlc3RvcmUubW9kZWwnO1xuaW1wb3J0IHsgVGFibGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvdGFibGUubW9kZWwnO1xuaW1wb3J0IHsgVGFibGVPcGVyYXRpb25zSGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzL3RhYmxlLW9wZXJhdGlvbnMuaGVscGVyJztcbmltcG9ydCB7IFRhYk9wZXJhdGlvbnNIZWxwZXIgfSBmcm9tICcuL2hlbHBlcnMvdGFiLW9wZXJhdGlvbnMuaGVscGVyJztcbmltcG9ydCB7IFRhcmdldE9wZXJhdGlvbnNIZWxwZXIgfSBmcm9tICcuL3RhcmdldC1vcGVyYXRpb25zLmhlbHBlcic7XG5pbXBvcnQgeyBUZXh0U3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvdGV4dC1zdHlsZS5tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBPcGVyYXRpb25zSGVscGVyIHtcbiAgICBzdGF0aWMgYXBwbHlPcGVyYXRpb25zKGRvY3VtZW50OiBEb2N4TW9kZWwsIGNvbW1hbmRzOiBDb21tYW5kTW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBjb21tYW5kcy5mb3JFYWNoKGNvbW1hbmQgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udGVudHMgPSB0aGlzLmdldFRhcmdldENvbnRlbnRzKGRvY3VtZW50LCBjb21tYW5kKTtcbiAgICAgICAgICAgIHN3aXRjaCAoY29tbWFuZC5jb21tYW5kVHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZFR5cGUuSW5zZXJ0VGV4dDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRUZXh0KGNvbnRlbnRzLCBjb21tYW5kLmluc2VydFRleHQudGV4dCwgY29tbWFuZC5pbnNlcnRUZXh0Lmluc2VydEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kVHlwZS5JbnNlcnRQYXJhZ3JhcGg6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudFdpZHRoID0gdGhpcy5nZXRDb250ZW50V2lkdGgoZG9jdW1lbnQsIGNvbnRlbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRQYXJhZ3JhcGgoY29udGVudHMsIGNvbW1hbmQuaW5zZXJ0UGFyYWdyYXBoLmluc2VydEluZGV4LCBjb21tYW5kLmluc2VydFBhcmFncmFwaCwgY29udGVudFdpZHRoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZFR5cGUuSW5zZXJ0U3R5bGVkVGV4dDoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IGNvbW1hbmQuaW5zZXJ0U3R5bGVkVGV4dDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRTdHlsZWRUZXh0KGNvbnRlbnRzLCBtb2RlbC50ZXh0LCBtb2RlbC5pbnNlcnRJbmRleCwgbW9kZWwudGV4dFN0eWxlKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZFR5cGUuUmVzdG9yZTpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWxldGVSZXN0b3JlKGNvbnRlbnRzLCBjb21tYW5kLnJlc3RvcmUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRUeXBlLkRlbGV0ZTpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWxldGUoY29udGVudHMsIGNvbW1hbmQuZGVsZXRlLnN0YXJ0SW5kZXgsIGNvbW1hbmQuZGVsZXRlLmNvdW50KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kVHlwZS5SZXBsYWNlQnlUZXh0OiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gY29tbWFuZC5yZXBsYWNlQnlUZXh0O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcGxhY2VUZXh0KGNvbnRlbnRzLCBtb2RlbC5zdGFydEluZGV4LCBtb2RlbC5lbmRJbmRleCwgbW9kZWwudGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRUeXBlLkFwcGx5VGV4dFN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gY29tbWFuZC5hcHBseVRleHRTdHlsZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseVRleHRTdHlsZShjb250ZW50cywgbW9kZWwuc3RhcnRJbmRleCwgbW9kZWwuZW5kSW5kZXgsIG1vZGVsLnRleHRTdHlsZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRUeXBlLlJlc3RvcmVUZXh0U3R5bGVzOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gY29tbWFuZC5yZXN0b3JlVGV4dFN0eWxlcztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN0b3JlVGV4dFN0eWxlcyhjb250ZW50cywgbW9kZWwuZm9ybWF0cyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRUeXBlLlJlc3RvcmVQYXJhZ3JhcGhTdHlsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSBjb21tYW5kLnJlc3RvcmVQYXJhZ3JhcGhTdHlsZXM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzdG9yZVBhcmFncmFwaFN0eWxlcyhjb250ZW50cywgbW9kZWwucGFyYWdyYXBocyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRUeXBlLkFwcGx5UGFyYWdyYXBoU3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSBjb21tYW5kLmFwcGx5UGFyYWdyYXBoU3R5bGU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlQYXJhZ3JhcGhTdHlsZShjb250ZW50cywgbW9kZWwuc3RhcnRJbmRleCwgbW9kZWwuZW5kSW5kZXgsIG1vZGVsLnBhcmFncmFwaFN0eWxlKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZFR5cGUuQXBwbHlFbGVtZW50U3R5bGU6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlFbGVtZW50U3R5bGUoY29udGVudHMsIGNvbW1hbmQuYXBwbHlFbGVtZW50U3R5bGUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRUeXBlLkluc2VydEVsZW1lbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSBjb21tYW5kLmluc2VydEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0RWxlbWVudChjb250ZW50cywgbW9kZWwpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kVHlwZS5JbnNlcnRCcmVhazoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IGNvbW1hbmQuaW5zZXJ0QnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHQgPSBtb2RlbC5pc09uTmV3UGFyYWdyYXBoID8gYCR7TkVXX0xJTkVfTUFSS1VQfSR7Q1VTVE9NX0VMRU1FTlRfTUFSS0VSfWAgOiBDVVNUT01fRUxFTUVOVF9NQVJLRVI7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0QnJlYWsoZG9jdW1lbnQsIHRleHQsIG1vZGVsLmluc2VydEluZGV4LCBtb2RlbC5icmVha1R5cGUgYXMgQnJlYWtUeXBlcyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRUeXBlLkFkZE51bWJlcmluZzoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IGNvbW1hbmQuYWRkTnVtYmVyaW5nO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZE51bWJlcmluZyhjb250ZW50cywgZG9jdW1lbnQubnVtYmVyaW5ncywgbW9kZWwuc3RhcnRJbmRleCwgbW9kZWwuZW5kSW5kZXgsIG1vZGVsLmxldmVscyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRUeXBlLlJlc3RvcmVOdW1iZXJpbmdzOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gY29tbWFuZC5yZXN0b3JlTnVtYmVyaW5ncztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN0b3JlTnVtYmVyaW5ncyhjb250ZW50cywgZG9jdW1lbnQubnVtYmVyaW5ncywgbW9kZWwucGFyYWdyYXBocywgbW9kZWwubnVtYmVyaW5ncyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRUeXBlLkluc2VydFRhYjoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IGNvbW1hbmQuaW5zZXJ0VGFiO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydFRhYihjb250ZW50cywgbW9kZWwuaW5zZXJ0SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kVHlwZS5JbnNlcnRMaW5rOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gY29tbWFuZC5pbnNlcnRMaW5rO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydExpbmsoXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsLmxpbmtEYXRhTW9kZWwudGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsLmxpbmtEYXRhTW9kZWwubGluayxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsLmluc2VydEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRleHRTdHlsZU1vZGVsKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5ERUZBVUxUX1RFWFRfU1RZTEUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGluZ1N0eWxlSWQ6IEhZUEVSTElOS19IRUFESU5HX1NUWUxFX0lELFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVybGluZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250Q29sb3I6IEhZUEVSTElOS19GT05UX0NPTE9SXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kVHlwZS5JbnNlcnRUYWJsZUNvbHVtbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSBjb21tYW5kLmluc2VydFRhYmxlQ29sdW1ucztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudFdpZHRoID0gdGhpcy5nZXRDb250ZW50V2lkdGgoZG9jdW1lbnQsIGNvbnRlbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRUYWJsZUNvbHVtbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsLmluc2VydEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwuY29sdW1uc0NvdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwudGFyZ2V0SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RlbC5pbmhlcml0SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZFR5cGUuSW5zZXJ0VGFibGVSb3dzOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gY29tbWFuZC5pbnNlcnRUYWJsZVJvd3M7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0VGFibGVSb3dzKGNvbnRlbnRzLCBtb2RlbC5pbnNlcnRJbmRleCwgbW9kZWwucm93c0NvdW50LCBtb2RlbC50YXJnZXRJbmRleCwgbW9kZWwuaW5oZXJpdEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZFR5cGUuUmVtb3ZlVGFibGVDb2x1bW5zOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gY29tbWFuZC5yZW1vdmVUYWJsZUNvbHVtbnM7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRXaWR0aCA9IHRoaXMuZ2V0Q29udGVudFdpZHRoKGRvY3VtZW50LCBjb250ZW50cyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlVGFibGVDb2x1bW5zKGNvbnRlbnRzLCBtb2RlbC5pbnNlcnRJbmRleCwgbW9kZWwuc3RhcnRJbmRleCwgbW9kZWwuZW5kSW5kZXgsIGNvbnRlbnRXaWR0aCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRUeXBlLlJlbW92ZVRhYmxlUm93czoge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IGNvbW1hbmQucmVtb3ZlVGFibGVSb3dzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVRhYmxlUm93cyhjb250ZW50cywgbW9kZWwuaW5zZXJ0SW5kZXgsIG1vZGVsLnN0YXJ0SW5kZXgsIG1vZGVsLmVuZEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZFR5cGUuUmVzaXplVGFibGVDb2x1bW5zOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gY29tbWFuZC5yZXNpemVUYWJsZUNvbHVtbnM7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzaXplVGFibGVDb2x1bW5zKGNvbnRlbnRzLCBtb2RlbCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRUeXBlLlJlc3RvcmVUYWJsZToge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IGNvbW1hbmQucmVzdG9yZVRhYmxlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3RvcmVUYWJsZShjb250ZW50cywgbW9kZWwuaW5zZXJ0SW5kZXgsIG1vZGVsLm9sZFRhYmxlKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZFR5cGUuSW5zZXJ0VGFibGU6IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbW9kZWwgPSBjb21tYW5kLmluc2VydFRhYmxlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50V2lkdGggPSB0aGlzLmdldENvbnRlbnRXaWR0aChkb2N1bWVudCwgY29udGVudHMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydFRhYmxlKGNvbnRlbnRzLCBtb2RlbC5pbnNlcnRJbmRleCwgbW9kZWwsIGNvbnRlbnRXaWR0aCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIENvbW1hbmRUeXBlLkFwcGx5SW1hZ2VTdHlsZToge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IGNvbW1hbmQuYXBwbHlJbWFnZVN0eWxlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5SW1hZ2VTdHlsZShjb250ZW50cywgbW9kZWwpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kVHlwZS5JbnNlcnRJbWFnZToge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtb2RlbCA9IGNvbW1hbmQuaW5zZXJ0SW1hZ2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0SW1hZ2UoY29udGVudHMsIG1vZGVsLmluc2VydEluZGV4LCBtb2RlbC5pbWFnZURhdGEpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBDb21tYW5kVHlwZS5SZW1vdmVOdW1iZXJpbmdzOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1vZGVsID0gY29tbWFuZC5yZW1vdmVOdW1iZXJpbmdzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZU51bWJlcmluZ3MoY29udGVudHMsIGRvY3VtZW50Lm51bWJlcmluZ3MsIG1vZGVsLnN0YXJ0SW5kZXgsIG1vZGVsLmVuZEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgQ29tbWFuZFR5cGUuUmVwbGFjZToge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50V2lkdGggPSB0aGlzLmdldENvbnRlbnRXaWR0aChkb2N1bWVudCwgY29udGVudHMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcGxhY2UoY29udGVudHMsIGNvbW1hbmQucmVwbGFjZSwgY29udGVudFdpZHRoKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0VGFyZ2V0Q29udGVudHMoZG9jdW1lbnQ6IERvY3hNb2RlbCwgY29tbWFuZDogQ29tbWFuZE1vZGVsKTogQ29udGVudHNJbnRlcmZhY2Uge1xuICAgICAgICBsZXQgcmVzdWx0OiBDb250ZW50c0ludGVyZmFjZSA9IGRvY3VtZW50O1xuICAgICAgICBmb3IgKGNvbnN0IHRhcmdldCBvZiBjb21tYW5kLnRhcmdldHMpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IFRhcmdldE9wZXJhdGlvbnNIZWxwZXIuZ2V0Q29udGVudHMocmVzdWx0LCB0YXJnZXQsIGRvY3VtZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRDb250ZW50V2lkdGgoZG9jdW1lbnQ6IERvY3hNb2RlbCwgY29udGVudHM6IENvbnRlbnRzSW50ZXJmYWNlKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGNvbnRlbnRXaWR0aCA9IDA7XG5cbiAgICAgICAgaWYgKGNvbnRlbnRzIGluc3RhbmNlb2YgQ2VsbE1vZGVsKSB7XG4gICAgICAgICAgICBjb25zdCBtYXJnaW5zID0gKGNvbnRlbnRzLm1hcmdpbnM/LmxlZnQgPz8gMCkgKyAoY29udGVudHMubWFyZ2lucz8ucmlnaHQgPz8gMCk7XG4gICAgICAgICAgICBjb250ZW50V2lkdGggPSBjb250ZW50cy53aWR0aCAtIG1hcmdpbnM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250ZW50V2lkdGggPSBkb2N1bWVudC5wYWdlV2lkdGggLSBkb2N1bWVudC5tYXJnaW5MZWZ0IC0gZG9jdW1lbnQubWFyZ2luUmlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGVudFdpZHRoO1xuICAgIH1cblxuICAgIHN0YXRpYyBpbnNlcnRUZXh0KGRvY3VtZW50OiBDb250ZW50c0ludGVyZmFjZSwgdGV4dDogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGRvY3VtZW50LmNvbnRlbnQgPSBDb250ZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmNvbnRlbnQsIHRleHQsIGluZGV4KTtcbiAgICAgICAgZG9jdW1lbnQuY29udGVudExlbmd0aCA9IGRvY3VtZW50LmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICBGb3JtYXRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuZm9ybWF0cywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgUGFyYWdyYXBoT3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LnBhcmFncmFwaHMsIHRleHQsIGluZGV4KTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuaW1hZ2VzLCBpbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC50YWJsZXMsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmVsZW1lbnRzLCBpbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5icmVha3MsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LnRhYnMsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIExpbmtPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQubGlua3MsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGluc2VydFBhcmFncmFwaChkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIGluZGV4OiBudW1iZXIsIG1vZGVsOiBJbnNlcnRQYXJhZ3JhcGhNb2RlbCwgY29udGVudFdpZHRoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBjcmVhdGVkUGFyYWdyYXBocyA9IFBhcmFncmFwaE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0UGFyYWdyYXBoc0Zyb21Nb2RlbChkb2N1bWVudC5wYXJhZ3JhcGhzLCBpbmRleCk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBjcmVhdGVkUGFyYWdyYXBocy5tYXAoKCkgPT4gTkVXX0xJTkVfTUFSS1VQKS5qb2luKCcnKTtcbiAgICAgICAgZG9jdW1lbnQuY29udGVudCA9IENvbnRlbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuY29udGVudCwgdGV4dCwgaW5kZXgpO1xuICAgICAgICBkb2N1bWVudC5jb250ZW50TGVuZ3RoID0gZG9jdW1lbnQuY29udGVudC5sZW5ndGg7XG4gICAgICAgIEZvcm1hdE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5mb3JtYXRzLCBpbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5pbWFnZXMsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LnRhYmxlcywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuZWxlbWVudHMsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmJyZWFrcywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQudGFicywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgTGlua09wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5saW5rcywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgbmV3TGFzdFBhcmFncmFwaCA9IGNyZWF0ZWRQYXJhZ3JhcGhzW2NyZWF0ZWRQYXJhZ3JhcGhzLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAobW9kZWwuaW5zZXJ0VGV4dCkge1xuICAgICAgICAgICAgbW9kZWwuaW5zZXJ0VGV4dC5pbnNlcnRJbmRleCA9IG5ld0xhc3RQYXJhZ3JhcGguaW5zZXJ0SW5kZXg7XG4gICAgICAgICAgICB0aGlzLmluc2VydFRleHQoZG9jdW1lbnQsIG1vZGVsLmluc2VydFRleHQudGV4dCwgbW9kZWwuaW5zZXJ0VGV4dC5pbnNlcnRJbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAobW9kZWwuaW5zZXJ0SW1hZ2UpIHtcbiAgICAgICAgICAgIG1vZGVsLmluc2VydEltYWdlLmluc2VydEluZGV4ID0gbmV3TGFzdFBhcmFncmFwaC5pbnNlcnRJbmRleDtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0SW1hZ2UoZG9jdW1lbnQsIG1vZGVsLmluc2VydEltYWdlLmluc2VydEluZGV4LCBtb2RlbC5pbnNlcnRJbWFnZS5pbWFnZURhdGEpO1xuICAgICAgICB9IGVsc2UgaWYgKG1vZGVsLmluc2VydFRhYmxlKSB7XG4gICAgICAgICAgICBuZXdMYXN0UGFyYWdyYXBoLnBhcmFncmFwaFN0eWxlLm51bWJlcmluZ0xldmVsID0gbnVsbDtcbiAgICAgICAgICAgIG5ld0xhc3RQYXJhZ3JhcGgucGFyYWdyYXBoU3R5bGUubnVtYmVyaW5nSWQgPSBudWxsO1xuICAgICAgICAgICAgbW9kZWwuaW5zZXJ0VGFibGUuaW5zZXJ0SW5kZXggPSBuZXdMYXN0UGFyYWdyYXBoLmluc2VydEluZGV4O1xuICAgICAgICAgICAgbW9kZWwuaW5zZXJ0VGFibGUuaW5zZXJ0VGFibGVJbmRleCA9IG5ld0xhc3RQYXJhZ3JhcGguaW5zZXJ0SW5kZXg7XG4gICAgICAgICAgICB0aGlzLmluc2VydFRhYmxlKGRvY3VtZW50LCBtb2RlbC5pbnNlcnRUYWJsZS5pbnNlcnRJbmRleCwgbW9kZWwuaW5zZXJ0VGFibGUsIGNvbnRlbnRXaWR0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuXG4gICAgc3RhdGljIGluc2VydEVsZW1lbnQoZG9jdW1lbnQ6IENvbnRlbnRzSW50ZXJmYWNlLCBlbGVtZW50OiBJbnNlcnRFbGVtZW50TW9kZWwpOiB2b2lkIHtcbiAgICAgICAgZG9jdW1lbnQuY29udGVudCA9IENvbnRlbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuY29udGVudCwgQ1VTVE9NX0VMRU1FTlRfTUFSS0VSLCBlbGVtZW50LmVsZW1lbnQuaW5zZXJ0SW5kZXgpO1xuICAgICAgICBkb2N1bWVudC5jb250ZW50TGVuZ3RoID0gZG9jdW1lbnQuY29udGVudC5sZW5ndGg7XG4gICAgICAgIEZvcm1hdE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5mb3JtYXRzLCBlbGVtZW50LmVsZW1lbnQuaW5zZXJ0SW5kZXgsIDEpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5wYXJhZ3JhcGhzLCBlbGVtZW50LmVsZW1lbnQuaW5zZXJ0SW5kZXgsIDEpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5pbWFnZXMsIGVsZW1lbnQuZWxlbWVudC5pbnNlcnRJbmRleCwgMSk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LnRhYmxlcywgZWxlbWVudC5lbGVtZW50Lmluc2VydEluZGV4LCAxKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydChkb2N1bWVudC5lbGVtZW50cywgZWxlbWVudC5lbGVtZW50KTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuYnJlYWtzLCBlbGVtZW50LmVsZW1lbnQuaW5zZXJ0SW5kZXgsIDEpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC50YWJzLCBlbGVtZW50LmVsZW1lbnQuaW5zZXJ0SW5kZXgsIDEpO1xuICAgICAgICBMaW5rT3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmxpbmtzLCBlbGVtZW50LmVsZW1lbnQuaW5zZXJ0SW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHN0YXRpYyBpbnNlcnRCcmVhayhkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIHRleHQ6IHN0cmluZywgaW5kZXg6IG51bWJlciwgYnJlYWtUeXBlOiBCcmVha1R5cGVzKTogdm9pZCB7XG4gICAgICAgIGRvY3VtZW50LmNvbnRlbnQgPSBDb250ZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmNvbnRlbnQsIHRleHQsIGluZGV4KTtcbiAgICAgICAgZG9jdW1lbnQuY29udGVudExlbmd0aCA9IGRvY3VtZW50LmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICBGb3JtYXRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuZm9ybWF0cywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgUGFyYWdyYXBoT3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LnBhcmFncmFwaHMsIHRleHQsIGluZGV4KTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuaW1hZ2VzLCBpbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC50YWJsZXMsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmVsZW1lbnRzLCBpbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBCcmVha09wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5icmVha3MsIGluZGV4ICsgdGV4dC5sZW5ndGggLSAxLCBicmVha1R5cGUsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQudGFicywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgTGlua09wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5saW5rcywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgaW5zZXJ0VGFiKGRvY3VtZW50OiBDb250ZW50c0ludGVyZmFjZSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBkb2N1bWVudC5jb250ZW50ID0gQ29udGVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5jb250ZW50LCBDVVNUT01fRUxFTUVOVF9NQVJLRVIsIGluZGV4KTtcbiAgICAgICAgZG9jdW1lbnQuY29udGVudExlbmd0aCA9IGRvY3VtZW50LmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICBGb3JtYXRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuZm9ybWF0cywgaW5kZXgsIDEpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5wYXJhZ3JhcGhzLCBpbmRleCwgMSk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmltYWdlcywgaW5kZXgsIDEpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC50YWJsZXMsIGluZGV4LCAxKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuZWxlbWVudHMsIGluZGV4LCAxKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuYnJlYWtzLCBpbmRleCwgMSk7XG4gICAgICAgIFRhYk9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC50YWJzLCBpbmRleCk7XG4gICAgICAgIExpbmtPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQubGlua3MsIGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgaW5zZXJ0TGluayhkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIHRleHQ6IHN0cmluZywgbGluazogc3RyaW5nLCBpbmRleDogbnVtYmVyLCBzdHlsZTogVGV4dFN0eWxlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgZG9jdW1lbnQuY29udGVudCA9IENvbnRlbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuY29udGVudCwgdGV4dCwgaW5kZXgpO1xuICAgICAgICBkb2N1bWVudC5jb250ZW50TGVuZ3RoID0gZG9jdW1lbnQuY29udGVudC5sZW5ndGg7XG4gICAgICAgIEZvcm1hdE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5mb3JtYXRzLCBpbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBQYXJhZ3JhcGhPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQucGFyYWdyYXBocywgdGV4dCwgaW5kZXgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5pbWFnZXMsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LnRhYmxlcywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuZWxlbWVudHMsIGluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmJyZWFrcywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQudGFicywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgTGlua09wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0KGRvY3VtZW50LmxpbmtzLCBsaW5rLCBpbmRleCwgaW5kZXggKyB0ZXh0Lmxlbmd0aCAtIDEsIHN0eWxlKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgYWRkTnVtYmVyaW5nKFxuICAgICAgICB0YXJnZXQ6IENvbnRlbnRzSW50ZXJmYWNlLFxuICAgICAgICBudW1iZXJpbmdzOiBOdW1iZXJpbmdNb2RlbFtdLFxuICAgICAgICBzdGFydEluZGV4OiBudW1iZXIsXG4gICAgICAgIGVuZEluZGV4OiBudW1iZXIsXG4gICAgICAgIGxldmVsczogTnVtYmVyaW5nTGV2ZWxNb2RlbFtdXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld051bWJlcmluZ0lkID0gTnVtYmVyaW5nT3BlcmF0aW9uc0hlbHBlci5nZW5lcmF0ZU51bWJlcmluZ0lkKG51bWJlcmluZ3MpO1xuICAgICAgICBjb25zdCBvbGROdW1iZXJpbmdJZHMgPSBQYXJhZ3JhcGhPcGVyYXRpb25zSGVscGVyLmFwcGx5TnVtYmVyaW5nKHRhcmdldC5wYXJhZ3JhcGhzLCBzdGFydEluZGV4LCBlbmRJbmRleCwgbmV3TnVtYmVyaW5nSWQpO1xuICAgICAgICBOdW1iZXJpbmdPcGVyYXRpb25zSGVscGVyLmFkZE51bWJlcmluZyhudW1iZXJpbmdzLCBuZXdOdW1iZXJpbmdJZCwgbGV2ZWxzKTtcbiAgICAgICAgTnVtYmVyaW5nT3BlcmF0aW9uc0hlbHBlci5kZWxldGVVbnVzZWQobnVtYmVyaW5ncywgdGFyZ2V0LnBhcmFncmFwaHMsIG9sZE51bWJlcmluZ0lkcyk7XG4gICAgfVxuXG4gICAgc3RhdGljIHJlbW92ZU51bWJlcmluZ3ModGFyZ2V0OiBDb250ZW50c0ludGVyZmFjZSwgbnVtYmVyaW5nczogTnVtYmVyaW5nTW9kZWxbXSwgc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9sZE51bWJlcmluZ0lkcyA9IFBhcmFncmFwaE9wZXJhdGlvbnNIZWxwZXIuYXBwbHlOdW1iZXJpbmcodGFyZ2V0LnBhcmFncmFwaHMsIHN0YXJ0SW5kZXgsIGVuZEluZGV4LCBudWxsKTtcbiAgICAgICAgTnVtYmVyaW5nT3BlcmF0aW9uc0hlbHBlci5kZWxldGVVbnVzZWQobnVtYmVyaW5ncywgdGFyZ2V0LnBhcmFncmFwaHMsIG9sZE51bWJlcmluZ0lkcyk7XG4gICAgfVxuXG4gICAgc3RhdGljIHJlc3RvcmVOdW1iZXJpbmdzKFxuICAgICAgICB0YXJnZXQ6IENvbnRlbnRzSW50ZXJmYWNlLFxuICAgICAgICBudW1iZXJpbmdzOiBOdW1iZXJpbmdNb2RlbFtdLFxuICAgICAgICBwYXJhZ3JhcGhzVG9SZXN0b3JlOiBQYXJhZ3JhcGhNb2RlbFtdLFxuICAgICAgICBudW1iZXJpbmdzVG9SZXN0b3JlOiBOdW1iZXJpbmdNb2RlbFtdXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9sZE51bWJlcmluZ0lkcyA9IFBhcmFncmFwaE9wZXJhdGlvbnNIZWxwZXIucmVzdG9yZU51bWJlcmluZ1BhcmFncmFwaHModGFyZ2V0LnBhcmFncmFwaHMsIHBhcmFncmFwaHNUb1Jlc3RvcmUpO1xuICAgICAgICBOdW1iZXJpbmdPcGVyYXRpb25zSGVscGVyLnJlc3RvcmUobnVtYmVyaW5ncywgbnVtYmVyaW5nc1RvUmVzdG9yZSk7XG4gICAgICAgIE51bWJlcmluZ09wZXJhdGlvbnNIZWxwZXIuZGVsZXRlVW51c2VkKG51bWJlcmluZ3MsIHRhcmdldC5wYXJhZ3JhcGhzLCBvbGROdW1iZXJpbmdJZHMpO1xuICAgIH1cblxuICAgIHN0YXRpYyBpbnNlcnRJbWFnZShkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIGluZGV4OiBudW1iZXIsIGltYWdlRGF0YTogSW1hZ2VEYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgZG9jdW1lbnQuY29udGVudCA9IENvbnRlbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuY29udGVudCwgQ1VTVE9NX0VMRU1FTlRfTUFSS0VSLCBpbmRleCk7XG4gICAgICAgIGRvY3VtZW50LmNvbnRlbnRMZW5ndGggPSBkb2N1bWVudC5jb250ZW50Lmxlbmd0aDtcbiAgICAgICAgRm9ybWF0T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmZvcm1hdHMsIGluZGV4LCAxKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQucGFyYWdyYXBocywgaW5kZXgsIDEpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC50YWJsZXMsIGluZGV4LCAxKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuZWxlbWVudHMsIGluZGV4LCAxKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuYnJlYWtzLCBpbmRleCwgMSk7XG4gICAgICAgIEltYWdlT3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmltYWdlcywgaW5kZXgsIGltYWdlRGF0YSk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LnRhYnMsIGluZGV4LCAxKTtcbiAgICAgICAgTGlua09wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5saW5rcywgaW5kZXgsIDEpO1xuICAgIH1cblxuICAgIHN0YXRpYyBpbnNlcnRUYWJsZShkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIGluZGV4OiBudW1iZXIsIHRhYmxlTW9kZWw6IEluc2VydFRhYmxlTW9kZWwsIGNvbnRlbnRXaWR0aDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGRvY3VtZW50LmNvbnRlbnQgPSBDb250ZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmNvbnRlbnQsIHRhYmxlTW9kZWwuY29udGVudCwgaW5kZXgpO1xuICAgICAgICBkb2N1bWVudC5jb250ZW50TGVuZ3RoID0gZG9jdW1lbnQuY29udGVudC5sZW5ndGg7XG4gICAgICAgIEZvcm1hdE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5mb3JtYXRzLCBpbmRleCwgdGFibGVNb2RlbC5jb250ZW50Lmxlbmd0aCk7XG4gICAgICAgIFBhcmFncmFwaE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5wYXJhZ3JhcGhzLCB0YWJsZU1vZGVsLmNvbnRlbnQsIGluZGV4KTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuaW1hZ2VzLCBpbmRleCwgdGFibGVNb2RlbC5jb250ZW50Lmxlbmd0aCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmVsZW1lbnRzLCBpbmRleCwgdGFibGVNb2RlbC5jb250ZW50Lmxlbmd0aCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmJyZWFrcywgaW5kZXgsIHRhYmxlTW9kZWwuY29udGVudC5sZW5ndGgpO1xuICAgICAgICBUYWJsZU9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC50YWJsZXMsIGluZGV4LCB0YWJsZU1vZGVsLCBjb250ZW50V2lkdGgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC50YWJzLCBpbmRleCwgdGFibGVNb2RlbC5jb250ZW50Lmxlbmd0aCk7XG4gICAgICAgIExpbmtPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQubGlua3MsIGluZGV4LCB0YWJsZU1vZGVsLmNvbnRlbnQubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgaW5zZXJ0U3R5bGVkVGV4dChkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIHRleHQ6IHN0cmluZywgaW5kZXg6IG51bWJlciwgc3R5bGU6IFRleHRTdHlsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGRvY3VtZW50LmNvbnRlbnQgPSBDb250ZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmNvbnRlbnQsIHRleHQsIGluZGV4KTtcbiAgICAgICAgZG9jdW1lbnQuY29udGVudExlbmd0aCA9IGRvY3VtZW50LmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICBGb3JtYXRPcGVyYXRpb25zSGVscGVyLmluc2VydFN0eWxlZENvbnRlbnQoZG9jdW1lbnQuZm9ybWF0cywgaW5kZXgsIHRleHQubGVuZ3RoLCBzdHlsZSk7XG4gICAgICAgIFBhcmFncmFwaE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5wYXJhZ3JhcGhzLCB0ZXh0LCBpbmRleCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmltYWdlcywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQudGFibGVzLCBpbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5lbGVtZW50cywgaW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLmluc2VydENvbnRlbnQoZG9jdW1lbnQuYnJlYWtzLCBpbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC50YWJzLCBpbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBMaW5rT3BlcmF0aW9uc0hlbHBlci5pbnNlcnRDb250ZW50KGRvY3VtZW50LmxpbmtzLCBpbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgIH1cblxuICAgIHN0YXRpYyBkZWxldGVSZXN0b3JlKGRvY3VtZW50OiBDb250ZW50c0ludGVyZmFjZSwgbW9kZWw6IFJlc3RvcmVNb2RlbCk6IHZvaWQge1xuICAgICAgICBpZiAobW9kZWwuc3RhcnRJbmRleCAhPT0gbW9kZWwuZW5kSW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMuZGVsZXRlKGRvY3VtZW50LCBtb2RlbC5zdGFydEluZGV4LCBtb2RlbC5lbmRJbmRleCAtIG1vZGVsLnN0YXJ0SW5kZXggKyAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVzdG9yZShkb2N1bWVudCwgbW9kZWwpO1xuICAgIH1cblxuICAgIHN0YXRpYyByZXN0b3JlKGRvY3VtZW50OiBDb250ZW50c0ludGVyZmFjZSwgbW9kZWw6IFJlc3RvcmVNb2RlbCk6IHZvaWQge1xuICAgICAgICBkb2N1bWVudC5jb250ZW50ID0gQ29udGVudE9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0Q29udGVudChkb2N1bWVudC5jb250ZW50LCBtb2RlbC50ZXh0LCBtb2RlbC5zdGFydEluZGV4KTtcbiAgICAgICAgZG9jdW1lbnQuY29udGVudExlbmd0aCA9IGRvY3VtZW50LmNvbnRlbnQubGVuZ3RoO1xuICAgICAgICBGb3JtYXRPcGVyYXRpb25zSGVscGVyLnJlc3RvcmUoZG9jdW1lbnQuZm9ybWF0cywgbW9kZWwuc3RhcnRJbmRleCwgbW9kZWwudGV4dC5sZW5ndGgsIG1vZGVsLmZvcm1hdHMpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIucmVzdG9yZShkb2N1bWVudC5wYXJhZ3JhcGhzLCBtb2RlbC5zdGFydEluZGV4LCBtb2RlbC50ZXh0Lmxlbmd0aCwgbW9kZWwucGFyYWdyYXBocyk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5yZXN0b3JlKGRvY3VtZW50LmltYWdlcywgbW9kZWwuc3RhcnRJbmRleCwgbW9kZWwudGV4dC5sZW5ndGgsIG1vZGVsLmltYWdlcyk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5yZXN0b3JlKGRvY3VtZW50LnRhYmxlcywgbW9kZWwuc3RhcnRJbmRleCwgbW9kZWwudGV4dC5sZW5ndGgsIG1vZGVsLnRhYmxlcyk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5yZXN0b3JlKGRvY3VtZW50LmVsZW1lbnRzLCBtb2RlbC5zdGFydEluZGV4LCBtb2RlbC50ZXh0Lmxlbmd0aCwgbW9kZWwuZWxlbWVudHMpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIucmVzdG9yZShkb2N1bWVudC5icmVha3MsIG1vZGVsLnN0YXJ0SW5kZXgsIG1vZGVsLnRleHQubGVuZ3RoLCBtb2RlbC5icmVha3MpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIucmVzdG9yZShkb2N1bWVudC50YWJzLCBtb2RlbC5zdGFydEluZGV4LCBtb2RlbC50ZXh0Lmxlbmd0aCwgbW9kZWwudGFicyk7XG4gICAgICAgIExpbmtPcGVyYXRpb25zSGVscGVyLnJlc3RvcmUoZG9jdW1lbnQubGlua3MsIG1vZGVsLnN0YXJ0SW5kZXgsIG1vZGVsLnRleHQubGVuZ3RoLCBtb2RlbC5saW5rcyk7XG4gICAgfVxuXG4gICAgc3RhdGljIGRlbGV0ZShkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIHN0YXJ0SW5kZXg6IG51bWJlciwgY291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBkb2N1bWVudC5jb250ZW50ID0gQ29udGVudE9wZXJhdGlvbnNIZWxwZXIucmVtb3ZlQ29udGVudChkb2N1bWVudC5jb250ZW50LCBzdGFydEluZGV4LCBjb3VudCk7XG4gICAgICAgIGRvY3VtZW50LmNvbnRlbnRMZW5ndGggPSBkb2N1bWVudC5jb250ZW50Lmxlbmd0aDtcbiAgICAgICAgY29uc3QgZW5kSW5kZXggPSBzdGFydEluZGV4ICsgY291bnQgLSAxO1xuICAgICAgICBGb3JtYXRPcGVyYXRpb25zSGVscGVyLnJlbW92ZUNvbnRlbnQoZG9jdW1lbnQuZm9ybWF0cywgc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIucmVtb3ZlQ29udGVudChkb2N1bWVudC5wYXJhZ3JhcGhzLCBzdGFydEluZGV4LCBlbmRJbmRleCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5yZW1vdmVDb250ZW50KGRvY3VtZW50LmltYWdlcywgc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIucmVtb3ZlQ29udGVudChkb2N1bWVudC50YWJsZXMsIHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLnJlbW92ZUNvbnRlbnQoZG9jdW1lbnQuZWxlbWVudHMsIHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcbiAgICAgICAgSW5kZXhlZEVsZW1lbnRPcGVyYXRpb25zSGVscGVyLnJlbW92ZUNvbnRlbnQoZG9jdW1lbnQuYnJlYWtzLCBzdGFydEluZGV4LCBlbmRJbmRleCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5yZW1vdmVDb250ZW50KGRvY3VtZW50LnRhYnMsIHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcbiAgICAgICAgTGlua09wZXJhdGlvbnNIZWxwZXIucmVtb3ZlQ29udGVudChkb2N1bWVudC5saW5rcywgc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuICAgIH1cblxuICAgIHN0YXRpYyByZXBsYWNlVGV4dChkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIHN0YXJ0SW5kZXg6IG51bWJlciwgZW5kSW5kZXg6IG51bWJlciwgdGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGRvY3VtZW50LmNvbnRlbnQgPSBDb250ZW50T3BlcmF0aW9uc0hlbHBlci5yZXBsYWNlQ29udGVudChkb2N1bWVudC5jb250ZW50LCBzdGFydEluZGV4LCBlbmRJbmRleCwgdGV4dCk7XG4gICAgICAgIGRvY3VtZW50LmNvbnRlbnRMZW5ndGggPSBkb2N1bWVudC5jb250ZW50Lmxlbmd0aDtcbiAgICAgICAgRm9ybWF0T3BlcmF0aW9uc0hlbHBlci5yZXBsYWNlQ29udGVudChkb2N1bWVudC5mb3JtYXRzLCBzdGFydEluZGV4LCBlbmRJbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBQYXJhZ3JhcGhPcGVyYXRpb25zSGVscGVyLnJlcGxhY2UoZG9jdW1lbnQucGFyYWdyYXBocywgdGV4dCwgc3RhcnRJbmRleCwgZW5kSW5kZXgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIucmVwbGFjZUNvbnRlbnQoZG9jdW1lbnQuaW1hZ2VzLCBzdGFydEluZGV4LCBlbmRJbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIucmVwbGFjZUNvbnRlbnQoZG9jdW1lbnQudGFibGVzLCBzdGFydEluZGV4LCBlbmRJbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBJbmRleGVkRWxlbWVudE9wZXJhdGlvbnNIZWxwZXIucmVwbGFjZUNvbnRlbnQoZG9jdW1lbnQuZWxlbWVudHMsIHN0YXJ0SW5kZXgsIGVuZEluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5yZXBsYWNlQ29udGVudChkb2N1bWVudC5icmVha3MsIHN0YXJ0SW5kZXgsIGVuZEluZGV4LCB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgIEluZGV4ZWRFbGVtZW50T3BlcmF0aW9uc0hlbHBlci5yZXBsYWNlQ29udGVudChkb2N1bWVudC50YWJzLCBzdGFydEluZGV4LCBlbmRJbmRleCwgdGV4dC5sZW5ndGgpO1xuICAgICAgICBMaW5rT3BlcmF0aW9uc0hlbHBlci5yZXBsYWNlQ29udGVudChkb2N1bWVudC5saW5rcywgc3RhcnRJbmRleCwgZW5kSW5kZXgsIHRleHQubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgcmVwbGFjZShkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIG1vZGVsOiBSZXBsYWNlTW9kZWwsIGNvbnRlbnRXaWR0aDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVsZXRlKGRvY3VtZW50LCBtb2RlbC5kZWxldGUuc3RhcnRJbmRleCwgbW9kZWwuZGVsZXRlLmNvdW50KTtcbiAgICAgICAgaWYgKG1vZGVsLmluc2VydFRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0VGV4dChkb2N1bWVudCwgbW9kZWwuaW5zZXJ0VGV4dC50ZXh0LCBtb2RlbC5pbnNlcnRUZXh0Lmluc2VydEluZGV4KTtcbiAgICAgICAgfSBlbHNlIGlmIChtb2RlbC5pbnNlcnRQYXJhZ3JhcGgpIHtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0UGFyYWdyYXBoKGRvY3VtZW50LCBtb2RlbC5pbnNlcnRQYXJhZ3JhcGguaW5zZXJ0SW5kZXgsIG1vZGVsLmluc2VydFBhcmFncmFwaCwgY29udGVudFdpZHRoKTtcbiAgICAgICAgfSBlbHNlIGlmIChtb2RlbC5pbnNlcnRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydEVsZW1lbnQoZG9jdW1lbnQsIG1vZGVsLmluc2VydEVsZW1lbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKG1vZGVsLmluc2VydFRhYikge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRUYWIoZG9jdW1lbnQsIG1vZGVsLmluc2VydFRhYi5pbnNlcnRJbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAobW9kZWwuaW5zZXJ0QnJlYWspIHtcbiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBtb2RlbC5pbnNlcnRCcmVhay5pc09uTmV3UGFyYWdyYXBoID8gYCR7TkVXX0xJTkVfTUFSS1VQfSR7Q1VTVE9NX0VMRU1FTlRfTUFSS0VSfWAgOiBDVVNUT01fRUxFTUVOVF9NQVJLRVI7XG4gICAgICAgICAgICB0aGlzLmluc2VydEJyZWFrKGRvY3VtZW50LCB0ZXh0LCBtb2RlbC5pbnNlcnRCcmVhay5pbnNlcnRJbmRleCwgbW9kZWwuaW5zZXJ0QnJlYWsuYnJlYWtUeXBlIGFzIEJyZWFrVHlwZXMpO1xuICAgICAgICB9IGVsc2UgaWYgKG1vZGVsLmluc2VydEltYWdlKSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydEltYWdlKGRvY3VtZW50LCBtb2RlbC5pbnNlcnRJbWFnZS5pbnNlcnRJbmRleCwgbW9kZWwuaW5zZXJ0SW1hZ2UuaW1hZ2VEYXRhKTtcbiAgICAgICAgfSBlbHNlIGlmIChtb2RlbC5pbnNlcnRUYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRUYWJsZShkb2N1bWVudCwgbW9kZWwuaW5zZXJ0VGFibGUuaW5zZXJ0SW5kZXgsIG1vZGVsLmluc2VydFRhYmxlLCBjb250ZW50V2lkdGgpO1xuICAgICAgICB9IGVsc2UgaWYgKG1vZGVsLmluc2VydExpbmspIHtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0TGluayhcbiAgICAgICAgICAgICAgICBkb2N1bWVudCxcbiAgICAgICAgICAgICAgICBtb2RlbC5pbnNlcnRMaW5rLmxpbmtEYXRhTW9kZWwudGV4dCxcbiAgICAgICAgICAgICAgICBtb2RlbC5pbnNlcnRMaW5rLmxpbmtEYXRhTW9kZWwubGluayxcbiAgICAgICAgICAgICAgICBtb2RlbC5pbnNlcnRMaW5rLmluc2VydEluZGV4LFxuICAgICAgICAgICAgICAgIG5ldyBUZXh0U3R5bGVNb2RlbCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLkRFRkFVTFRfVEVYVF9TVFlMRSxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGluZ1N0eWxlSWQ6IEhZUEVSTElOS19IRUFESU5HX1NUWUxFX0lELFxuICAgICAgICAgICAgICAgICAgICB1bmRlcmxpbmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGZvbnRDb2xvcjogSFlQRVJMSU5LX0ZPTlRfQ09MT1JcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBhcHBseVRleHRTdHlsZShkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIHN0YXJ0SW5kZXg6IG51bWJlciwgZW5kSW5kZXg6IG51bWJlciwgc3R5bGU6IFRleHRTdHlsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIEZvcm1hdE9wZXJhdGlvbnNIZWxwZXIuYXBwbHkoZG9jdW1lbnQuZm9ybWF0cywgc3RhcnRJbmRleCwgZW5kSW5kZXgsIHN0eWxlKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgcmVzdG9yZVRleHRTdHlsZXMoZG9jdW1lbnQ6IENvbnRlbnRzSW50ZXJmYWNlLCB0ZXh0Rm9ybWF0czogRm9ybWF0TW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBGb3JtYXRPcGVyYXRpb25zSGVscGVyLnJlc3RvcmVGb3JtYXRzKGRvY3VtZW50LmZvcm1hdHMsIHRleHRGb3JtYXRzKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgcmVzdG9yZVBhcmFncmFwaFN0eWxlcyhkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIHBhcmFncmFwaHM6IFBhcmFncmFwaE1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgUGFyYWdyYXBoT3BlcmF0aW9uc0hlbHBlci5yZXN0b3JlUGFyYWdyYXBocyhkb2N1bWVudC5wYXJhZ3JhcGhzLCBwYXJhZ3JhcGhzKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgYXBwbHlQYXJhZ3JhcGhTdHlsZShkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIHN0YXJ0SW5kZXg6IG51bWJlciwgZW5kSW5kZXg6IG51bWJlciwgc3R5bGU6IFBhcmFncmFwaFN0eWxlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgUGFyYWdyYXBoT3BlcmF0aW9uc0hlbHBlci5hcHBseShkb2N1bWVudC5wYXJhZ3JhcGhzLCBzdGFydEluZGV4LCBlbmRJbmRleCwgc3R5bGUpO1xuICAgIH1cblxuICAgIHN0YXRpYyBhcHBseUVsZW1lbnRTdHlsZShkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIG1vZGVsOiBBcHBseUVsZW1lbnRTdHlsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5lbGVtZW50cy5maW5kKHggPT4geC5pbnNlcnRJbmRleCA9PSBtb2RlbC5pbnNlcnRJbmRleCk7XG4gICAgICAgIGVsZW1lbnQud2lkdGggPSBtb2RlbC53aWR0aCA/PyBlbGVtZW50LndpZHRoO1xuICAgICAgICBlbGVtZW50LmhlaWdodCA9IG1vZGVsLmhlaWdodCA/PyBlbGVtZW50LmhlaWdodDtcbiAgICB9XG5cbiAgICBzdGF0aWMgYXBwbHlJbWFnZVN0eWxlKGRvY3VtZW50OiBDb250ZW50c0ludGVyZmFjZSwgaW1hZ2U6IEFwcGx5SW1hZ2VTdHlsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIEltYWdlT3BlcmF0aW9uc0hlbHBlci5hcHBseShkb2N1bWVudC5pbWFnZXMsIGltYWdlKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgaW5zZXJ0VGFibGVSb3dzKFxuICAgICAgICBkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsXG4gICAgICAgIGluc2VydEluZGV4OiBudW1iZXIsXG4gICAgICAgIHJvd3NDb3VudDogbnVtYmVyLFxuICAgICAgICB0YXJnZXRJbmRleDogbnVtYmVyLFxuICAgICAgICBpbmhlcml0SW5kZXg6IG51bWJlclxuICAgICk6IHZvaWQge1xuICAgICAgICBUYWJsZU9wZXJhdGlvbnNIZWxwZXIuaW5zZXJ0VGFibGVSb3dzKGRvY3VtZW50LnRhYmxlcywgaW5zZXJ0SW5kZXgsIHJvd3NDb3VudCwgdGFyZ2V0SW5kZXgsIGluaGVyaXRJbmRleCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGluc2VydFRhYmxlQ29sdW1ucyhcbiAgICAgICAgZG9jdW1lbnQ6IENvbnRlbnRzSW50ZXJmYWNlLFxuICAgICAgICBpbnNlcnRJbmRleDogbnVtYmVyLFxuICAgICAgICBjb2x1bW5zQ291bnQ6IG51bWJlcixcbiAgICAgICAgdGFyZ2V0SW5kZXg6IG51bWJlcixcbiAgICAgICAgaW5oZXJpdEluZGV4OiBudW1iZXIsXG4gICAgICAgIGNvbnRlbnRXaWR0aDogbnVtYmVyXG4gICAgKTogdm9pZCB7XG4gICAgICAgIFRhYmxlT3BlcmF0aW9uc0hlbHBlci5pbnNlcnRUYWJsZUNvbHVtbnMoZG9jdW1lbnQudGFibGVzLCBpbnNlcnRJbmRleCwgY29sdW1uc0NvdW50LCB0YXJnZXRJbmRleCwgaW5oZXJpdEluZGV4LCBjb250ZW50V2lkdGgpO1xuICAgIH1cblxuICAgIHN0YXRpYyByZW1vdmVUYWJsZVJvd3MoZG9jdW1lbnQ6IENvbnRlbnRzSW50ZXJmYWNlLCBpbnNlcnRJbmRleDogbnVtYmVyLCBzdGFydEluZGV4OiBudW1iZXIsIGVuZEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgVGFibGVPcGVyYXRpb25zSGVscGVyLnJlbW92ZVRhYmxlUm93cyhkb2N1bWVudC50YWJsZXMsIGluc2VydEluZGV4LCBzdGFydEluZGV4LCBlbmRJbmRleCk7XG4gICAgfVxuXG4gICAgc3RhdGljIHJlbW92ZVRhYmxlQ29sdW1ucyhcbiAgICAgICAgZG9jdW1lbnQ6IENvbnRlbnRzSW50ZXJmYWNlLFxuICAgICAgICBpbnNlcnRJbmRleDogbnVtYmVyLFxuICAgICAgICBzdGFydEluZGV4OiBudW1iZXIsXG4gICAgICAgIGVuZEluZGV4OiBudW1iZXIsXG4gICAgICAgIGNvbnRlbnRXaWR0aDogbnVtYmVyXG4gICAgKTogdm9pZCB7XG4gICAgICAgIFRhYmxlT3BlcmF0aW9uc0hlbHBlci5yZW1vdmVUYWJsZUNvbHVtbnMoZG9jdW1lbnQudGFibGVzLCBpbnNlcnRJbmRleCwgc3RhcnRJbmRleCwgZW5kSW5kZXgsIGNvbnRlbnRXaWR0aCk7XG4gICAgfVxuXG4gICAgc3RhdGljIHJlc3RvcmVUYWJsZShkb2N1bWVudDogQ29udGVudHNJbnRlcmZhY2UsIGluc2VydEluZGV4OiBudW1iZXIsIG9sZFRhYmxlOiBUYWJsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIFRhYmxlT3BlcmF0aW9uc0hlbHBlci5yZXN0b3JlVGFibGUoZG9jdW1lbnQudGFibGVzLCBpbnNlcnRJbmRleCwgb2xkVGFibGUpO1xuICAgIH1cblxuICAgIHN0YXRpYyByZXNpemVUYWJsZUNvbHVtbnMoZG9jdW1lbnQ6IENvbnRlbnRzSW50ZXJmYWNlLCByZXNpemVUYWJsZUNvbHVtbnM6IFJlc2l6ZVRhYmxlQ29sdW1uc01vZGVsKTogdm9pZCB7XG4gICAgICAgIFRhYmxlT3BlcmF0aW9uc0hlbHBlci5yZXNpemVUYWJsZUNvbHVtbnMoZG9jdW1lbnQudGFibGVzLCByZXNpemVUYWJsZUNvbHVtbnMpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -25,7 +25,7 @@ export class SaveCommandsHelper {
|
|
|
25
25
|
return new CommandModel({ commandType: CommandType.RemoveNumberings, removeNumberings, targets });
|
|
26
26
|
}
|
|
27
27
|
static getRestoreNumberingsCommand(restoreNumberings, targets) {
|
|
28
|
-
return new CommandModel({ commandType: CommandType.
|
|
28
|
+
return new CommandModel({ commandType: CommandType.RestoreNumberings, restoreNumberings, targets });
|
|
29
29
|
}
|
|
30
30
|
static getApplyImageStyleCommand(height, width, insertIndex, targets) {
|
|
31
31
|
const applyImageStyle = new ApplyImageStyleModel({ height, width, insertIndex });
|
|
@@ -39,8 +39,8 @@ export class SaveCommandsHelper {
|
|
|
39
39
|
const applyTextStyle = new ApplyTextStyleModel({ startIndex, endIndex, textStyle });
|
|
40
40
|
return new CommandModel({ commandType: CommandType.ApplyTextStyle, applyTextStyle, targets });
|
|
41
41
|
}
|
|
42
|
-
static getDeleteCommand(startIndex,
|
|
43
|
-
const deleteModel = new DeleteModel({ startIndex,
|
|
42
|
+
static getDeleteCommand(startIndex, count, targets) {
|
|
43
|
+
const deleteModel = new DeleteModel({ startIndex, count });
|
|
44
44
|
return new CommandModel({ commandType: CommandType.Delete, delete: deleteModel, targets });
|
|
45
45
|
}
|
|
46
46
|
static getInsertTextCommand(text, insertIndex, targets) {
|
|
@@ -124,4 +124,4 @@ export class SaveCommandsHelper {
|
|
|
124
124
|
return new CommandModel({ commandType: CommandType.ApplyElementStyle, applyElementStyle, targets });
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZS1jb21tYW5kcy5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9lZGl0b3Ivb3BlcmF0aW9ucy9zYXZlLWNvbW1hbmRzLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUUvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQU9sRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUU1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUV0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFJM0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDdkYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFHdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBRXBH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LEtBQW1CLEVBQUUsT0FBc0I7UUFDdkUsT0FBTyxJQUFJLFlBQVksQ0FBQyxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRU0sTUFBTSxDQUFDLDRCQUE0QixDQUFDLGtCQUEyQyxFQUFFLE9BQXNCO1FBQzFHLE9BQU8sSUFBSSxZQUFZLENBQUMsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDMUcsQ0FBQztJQUVNLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxpQkFBeUMsRUFBRSxPQUFzQjtRQUN2RyxPQUFPLElBQUksWUFBWSxDQUFDLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFkZE51bWJlcmluZ01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9hZGQtbnVtYmVyaW5nLm1vZGVsJztcbmltcG9ydCB7IEFwcGx5RWxlbWVudFN0eWxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2FwcGx5LWVsZW1lbnQtc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgQXBwbHlJbWFnZVN0eWxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2FwcGx5LWltYWdlLXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IEFwcGx5UGFyYWdyYXBoU3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvYXBwbHktcGFyYWdyYXBoLXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IEFwcGx5VGV4dFN0eWxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2FwcGx5LXRleHQtc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgQ29tbWFuZE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9jb21tYW5kLm1vZGVsJztcbmltcG9ydCB7IENvbW1hbmRUeXBlIH0gZnJvbSAnLi9lbnVtcy9jb21tYW5kLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBEZWxldGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvZGVsZXRlLm1vZGVsJztcbmltcG9ydCB7IEZvcm1hdE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9mb3JtYXQubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0QnJlYWtNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LWJyZWFrLm1vZGVsJztcbmltcG9ydCB7IEluc2VydEVsZW1lbnRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LWVsZW1lbnQubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0SW1hZ2VNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LWltYWdlLm1vZGVsJztcbmltcG9ydCB7IEluc2VydExpbmtNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LWxpbmsubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0UGFyYWdyYXBoTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC1wYXJhZ3JhcGgubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0U3R5bGVkVGV4dE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtc3R5bGVkLXRleHQubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0VGFibGVDb2x1bW5zTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC10YWJsZS1jb2x1bW5zLm1vZGVsJztcbmltcG9ydCB7IEluc2VydFRhYmxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC10YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRUYWJsZVJvd3NNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LXRhYmxlLXJvd3MubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0VGFiTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC10YWIubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0VGV4dE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtdGV4dC5tb2RlbCc7XG5pbXBvcnQgeyBOdW1iZXJpbmdMZXZlbE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9udW1iZXJpbmctbGV2ZWwubW9kZWwnO1xuaW1wb3J0IHsgUGFyYWdyYXBoTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3BhcmFncmFwaC5tb2RlbCc7XG5pbXBvcnQgeyBQYXJhZ3JhcGhTdHlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9wYXJhZ3JhcGgtc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgUmVtb3ZlTnVtYmVyaW5nc01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZW1vdmUtbnVtYmVyaW5ncy5tb2RlbCc7XG5pbXBvcnQgeyBSZW1vdmVUYWJsZUNvbHVtbnNNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVtb3ZlLXRhYmxlLWNvbHVtbnMubW9kZWwnO1xuaW1wb3J0IHsgUmVtb3ZlVGFibGVSb3dzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3JlbW92ZS10YWJsZS1yb3dzLm1vZGVsJztcbmltcG9ydCB7IFJlcGxhY2VNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVwbGFjZS5tb2RlbCc7XG5pbXBvcnQgeyBSZXNpemVUYWJsZUNvbHVtbnNNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVzaXplLXRhYmxlLWNvbHVtbnMubW9kZWwnO1xuaW1wb3J0IHsgUmVzdG9yZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXN0b3JlLm1vZGVsJztcbmltcG9ydCB7IFJlc3RvcmVOdW1iZXJpbmdzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3Jlc3RvcmUtbnVtYmVyaW5ncy5tb2RlbCc7XG5pbXBvcnQgeyBSZXN0b3JlUGFyYWdyYXBoU3R5bGVzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3Jlc3RvcmUtcGFyYWdyYXBoLXN0eWxlcy5tb2RlbCc7XG5pbXBvcnQgeyBSZXN0b3JlVGFibGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVzdG9yZS10YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBSZXN0b3JlVGV4dFN0eWxlc01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXN0b3JlLXRleHQtc3R5bGVzLm1vZGVsJztcbmltcG9ydCB7IFRhcmdldE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90YXJnZXQubW9kZWwnO1xuaW1wb3J0IHsgVGV4dFN0eWxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3RleHQtc3R5bGUubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgU2F2ZUNvbW1hbmRzSGVscGVyIHtcbiAgICBwdWJsaWMgc3RhdGljIGdldEFkZE51bWJlcmluZ0NvbW1hbmQoXG4gICAgICAgIHN0YXJ0SW5kZXg6IG51bWJlcixcbiAgICAgICAgZW5kSW5kZXg6IG51bWJlcixcbiAgICAgICAgbGV2ZWxzOiBOdW1iZXJpbmdMZXZlbE1vZGVsW10sXG4gICAgICAgIHRhcmdldHM6IFRhcmdldE1vZGVsW11cbiAgICApOiBDb21tYW5kTW9kZWwge1xuICAgICAgICBjb25zdCBhZGROdW1iZXJpbmcgPSBuZXcgQWRkTnVtYmVyaW5nTW9kZWwoeyBzdGFydEluZGV4LCBlbmRJbmRleCwgbGV2ZWxzIH0pO1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5BZGROdW1iZXJpbmcsIGFkZE51bWJlcmluZywgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFJlbW92ZU51bWJlcmluZ3NDb21tYW5kKHN0YXJ0SW5kZXg6IG51bWJlciwgZW5kSW5kZXg6IG51bWJlciwgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXSk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIGNvbnN0IHJlbW92ZU51bWJlcmluZ3MgPSBuZXcgUmVtb3ZlTnVtYmVyaW5nc01vZGVsKHsgc3RhcnRJbmRleCwgZW5kSW5kZXggfSk7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLlJlbW92ZU51bWJlcmluZ3MsIHJlbW92ZU51bWJlcmluZ3MsIHRhcmdldHMgfSk7XG4gICAgfVxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UmVzdG9yZU51bWJlcmluZ3NDb21tYW5kKHJlc3RvcmVOdW1iZXJpbmdzOiBSZXN0b3JlTnVtYmVyaW5nc01vZGVsLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuQWRkTnVtYmVyaW5nLCByZXN0b3JlTnVtYmVyaW5ncywgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEFwcGx5SW1hZ2VTdHlsZUNvbW1hbmQoaGVpZ2h0OiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGluc2VydEluZGV4OiBudW1iZXIsIHRhcmdldHM6IFRhcmdldE1vZGVsW10pOiBDb21tYW5kTW9kZWwge1xuICAgICAgICBjb25zdCBhcHBseUltYWdlU3R5bGUgPSBuZXcgQXBwbHlJbWFnZVN0eWxlTW9kZWwoeyBoZWlnaHQsIHdpZHRoLCBpbnNlcnRJbmRleCB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuQXBwbHlJbWFnZVN0eWxlLCBhcHBseUltYWdlU3R5bGUsIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRBcHBseVBhcmFncmFwaFN0eWxlQ29tbWFuZChcbiAgICAgICAgc3RhcnRJbmRleDogbnVtYmVyLFxuICAgICAgICBlbmRJbmRleDogbnVtYmVyLFxuICAgICAgICBwYXJhZ3JhcGhTdHlsZTogUGFyYWdyYXBoU3R5bGVNb2RlbCxcbiAgICAgICAgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXVxuICAgICk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIGNvbnN0IGFwcGx5UGFyYWdyYXBoU3R5bGUgPSBuZXcgQXBwbHlQYXJhZ3JhcGhTdHlsZU1vZGVsKHsgc3RhcnRJbmRleCwgZW5kSW5kZXgsIHBhcmFncmFwaFN0eWxlIH0pO1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5BcHBseVBhcmFncmFwaFN0eWxlLCBhcHBseVBhcmFncmFwaFN0eWxlLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QXBwbHlUZXh0U3R5bGVDb21tYW5kKFxuICAgICAgICBzdGFydEluZGV4OiBudW1iZXIsXG4gICAgICAgIGVuZEluZGV4OiBudW1iZXIsXG4gICAgICAgIHRleHRTdHlsZTogVGV4dFN0eWxlTW9kZWwsXG4gICAgICAgIHRhcmdldHM6IFRhcmdldE1vZGVsW11cbiAgICApOiBDb21tYW5kTW9kZWwge1xuICAgICAgICBjb25zdCBhcHBseVRleHRTdHlsZSA9IG5ldyBBcHBseVRleHRTdHlsZU1vZGVsKHsgc3RhcnRJbmRleCwgZW5kSW5kZXgsIHRleHRTdHlsZSB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuQXBwbHlUZXh0U3R5bGUsIGFwcGx5VGV4dFN0eWxlLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RGVsZXRlQ29tbWFuZChzdGFydEluZGV4OiBudW1iZXIsIGVuZEluZGV4OiBudW1iZXIsIHRhcmdldHM6IFRhcmdldE1vZGVsW10pOiBDb21tYW5kTW9kZWwge1xuICAgICAgICBjb25zdCBkZWxldGVNb2RlbCA9IG5ldyBEZWxldGVNb2RlbCh7IHN0YXJ0SW5kZXgsIGVuZEluZGV4IH0pO1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5EZWxldGUsIGRlbGV0ZTogZGVsZXRlTW9kZWwsIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRJbnNlcnRUZXh0Q29tbWFuZCh0ZXh0OiBzdHJpbmcsIGluc2VydEluZGV4OiBudW1iZXIsIHRhcmdldHM6IFRhcmdldE1vZGVsW10pOiBDb21tYW5kTW9kZWwge1xuICAgICAgICBjb25zdCBpbnNlcnRUZXh0ID0gbmV3IEluc2VydFRleHRNb2RlbCh7IHRleHQsIGluc2VydEluZGV4IH0pO1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5JbnNlcnRUZXh0LCBpbnNlcnRUZXh0LCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SW5zZXJ0UGFyYWdyYXBoQ29tbWFuZChpbnNlcnRQYXJhZ3JhcGg6IEluc2VydFBhcmFncmFwaE1vZGVsLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuSW5zZXJ0UGFyYWdyYXBoLCBpbnNlcnRQYXJhZ3JhcGgsIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRJbnNlcnRTdHlsZWRUZXh0Q29tbWFuZChcbiAgICAgICAgdGV4dDogc3RyaW5nLFxuICAgICAgICBpbnNlcnRJbmRleDogbnVtYmVyLFxuICAgICAgICB0ZXh0U3R5bGU6IFRleHRTdHlsZU1vZGVsLFxuICAgICAgICB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdXG4gICAgKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgY29uc3QgaW5zZXJ0U3R5bGVkVGV4dCA9IG5ldyBJbnNlcnRTdHlsZWRUZXh0TW9kZWwoeyB0ZXh0LCBpbnNlcnRJbmRleCwgdGV4dFN0eWxlIH0pO1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5JbnNlcnRTdHlsZWRUZXh0LCBpbnNlcnRTdHlsZWRUZXh0LCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SW5zZXJ0QnJlYWtDb21tYW5kKGluc2VydEJyZWFrOiBJbnNlcnRCcmVha01vZGVsLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuSW5zZXJ0QnJlYWssIGluc2VydEJyZWFrLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SW5zZXJ0RWxlbWVudENvbW1hbmQoaW5zZXJ0RWxlbWVudDogSW5zZXJ0RWxlbWVudE1vZGVsLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuSW5zZXJ0RWxlbWVudCwgaW5zZXJ0RWxlbWVudCwgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEluc2VydEltYWdlQ29tbWFuZChpbnNlcnRJbWFnZTogSW5zZXJ0SW1hZ2VNb2RlbCwgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXSk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLkluc2VydEltYWdlLCBpbnNlcnRJbWFnZSwgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEluc2VydExpbmtPcGVyYXRpb24oaW5zZXJ0TGluazogSW5zZXJ0TGlua01vZGVsLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuSW5zZXJ0TGluaywgaW5zZXJ0TGluaywgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEluc2VydFRhYkNvbW1hbmQoaW5zZXJ0VGFiOiBJbnNlcnRUYWJNb2RlbCwgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXSk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLkluc2VydFRhYiwgaW5zZXJ0VGFiLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SW5zZXJ0VGFibGVDb21tYW5kKGluc2VydFRhYmxlOiBJbnNlcnRUYWJsZU1vZGVsLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuSW5zZXJ0VGFibGUsIGluc2VydFRhYmxlLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SW5zZXJ0VGFibGVDb2x1bW5zQ29tbWFuZChcbiAgICAgICAgY29sdW1uc0NvdW50OiBudW1iZXIsXG4gICAgICAgIGluaGVyaXRJbmRleDogbnVtYmVyLFxuICAgICAgICBpbnNlcnRJbmRleDogbnVtYmVyLFxuICAgICAgICB0YXJnZXRJbmRleDogbnVtYmVyLFxuICAgICAgICB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdXG4gICAgKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgY29uc3QgaW5zZXJ0VGFibGVDb2x1bW5zID0gbmV3IEluc2VydFRhYmxlQ29sdW1uc01vZGVsKHsgY29sdW1uc0NvdW50LCBpbmhlcml0SW5kZXgsIGluc2VydEluZGV4LCB0YXJnZXRJbmRleCB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuSW5zZXJ0VGFibGVDb2x1bW5zLCBpbnNlcnRUYWJsZUNvbHVtbnMsIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRJbnNlcnRUYWJsZVJvd3NDb21tYW5kKFxuICAgICAgICByb3dzQ291bnQ6IG51bWJlcixcbiAgICAgICAgaW5oZXJpdEluZGV4OiBudW1iZXIsXG4gICAgICAgIGluc2VydEluZGV4OiBudW1iZXIsXG4gICAgICAgIHRhcmdldEluZGV4OiBudW1iZXIsXG4gICAgICAgIHRhcmdldHM6IFRhcmdldE1vZGVsW11cbiAgICApOiBDb21tYW5kTW9kZWwge1xuICAgICAgICBjb25zdCBpbnNlcnRUYWJsZVJvd3MgPSBuZXcgSW5zZXJ0VGFibGVSb3dzTW9kZWwoeyByb3dzQ291bnQsIGluaGVyaXRJbmRleCwgaW5zZXJ0SW5kZXgsIHRhcmdldEluZGV4IH0pO1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5JbnNlcnRUYWJsZVJvd3MsIGluc2VydFRhYmxlUm93cywgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFJlbW92ZVRhYmxlQ29sdW1uc0NvbW1hbmQoXG4gICAgICAgIHN0YXJ0SW5kZXg6IG51bWJlcixcbiAgICAgICAgZW5kSW5kZXg6IG51bWJlcixcbiAgICAgICAgaW5zZXJ0SW5kZXg6IG51bWJlcixcbiAgICAgICAgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXVxuICAgICk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIGNvbnN0IHJlbW92ZVRhYmxlQ29sdW1ucyA9IG5ldyBSZW1vdmVUYWJsZUNvbHVtbnNNb2RlbCh7IHN0YXJ0SW5kZXgsIGVuZEluZGV4LCBpbnNlcnRJbmRleCB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuUmVtb3ZlVGFibGVDb2x1bW5zLCByZW1vdmVUYWJsZUNvbHVtbnMsIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRSZW1vdmVUYWJsZVJvd3NDb21tYW5kKFxuICAgICAgICBzdGFydEluZGV4OiBudW1iZXIsXG4gICAgICAgIGVuZEluZGV4OiBudW1iZXIsXG4gICAgICAgIGluc2VydEluZGV4OiBudW1iZXIsXG4gICAgICAgIHRhcmdldHM6IFRhcmdldE1vZGVsW11cbiAgICApOiBDb21tYW5kTW9kZWwge1xuICAgICAgICBjb25zdCByZW1vdmVUYWJsZVJvd3MgPSBuZXcgUmVtb3ZlVGFibGVSb3dzTW9kZWwoeyBzdGFydEluZGV4LCBlbmRJbmRleCwgaW5zZXJ0SW5kZXggfSk7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLlJlbW92ZVRhYmxlUm93cywgcmVtb3ZlVGFibGVSb3dzLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UmVzdG9yZVRleHRTdHlsZXNDb21tYW5kKGZvcm1hdHM6IEZvcm1hdE1vZGVsW10sIHRhcmdldHM6IFRhcmdldE1vZGVsW10pOiBDb21tYW5kTW9kZWwge1xuICAgICAgICBjb25zdCByZXN0b3JlVGV4dFN0eWxlcyA9IG5ldyBSZXN0b3JlVGV4dFN0eWxlc01vZGVsKHsgZm9ybWF0cyB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuUmVzdG9yZVRleHRTdHlsZXMsIHJlc3RvcmVUZXh0U3R5bGVzLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UmVzdG9yZVBhcmFncmFwaFN0eWxlc0NvbW1hbmQocGFyYWdyYXBoczogUGFyYWdyYXBoTW9kZWxbXSwgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXSk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIGNvbnN0IHJlc3RvcmVQYXJhZ3JhcGhTdHlsZXMgPSBuZXcgUmVzdG9yZVBhcmFncmFwaFN0eWxlc01vZGVsKHsgcGFyYWdyYXBocyB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuUmVzdG9yZVBhcmFncmFwaFN0eWxlcywgcmVzdG9yZVBhcmFncmFwaFN0eWxlcywgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFJlc3RvcmVDb21tYW5kKHJlc3RvcmVNb2RlbDogUmVzdG9yZU1vZGVsLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgY29uc3QgcmVzdG9yZSA9IG5ldyBSZXN0b3JlTW9kZWwoe1xuICAgICAgICAgICAgYnJlYWtzOiByZXN0b3JlTW9kZWwuYnJlYWtzLFxuICAgICAgICAgICAgZWxlbWVudHM6IHJlc3RvcmVNb2RlbC5lbGVtZW50cyxcbiAgICAgICAgICAgIGZvcm1hdHM6IHJlc3RvcmVNb2RlbC5mb3JtYXRzLFxuICAgICAgICAgICAgaW1hZ2VzOiByZXN0b3JlTW9kZWwuaW1hZ2VzLFxuICAgICAgICAgICAgc3RhcnRJbmRleDogcmVzdG9yZU1vZGVsLnN0YXJ0SW5kZXgsXG4gICAgICAgICAgICBlbmRJbmRleDogcmVzdG9yZU1vZGVsLmVuZEluZGV4LFxuICAgICAgICAgICAgcGFyYWdyYXBoczogcmVzdG9yZU1vZGVsLnBhcmFncmFwaHMsXG4gICAgICAgICAgICB0YWJsZXM6IHJlc3RvcmVNb2RlbC50YWJsZXMsXG4gICAgICAgICAgICB0YWJzOiByZXN0b3JlTW9kZWwudGFicyxcbiAgICAgICAgICAgIHRleHQ6IHJlc3RvcmVNb2RlbC50ZXh0XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5SZXN0b3JlLCByZXN0b3JlLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UmVzdG9yZVRhYmxlQ29tbWFuZChyZXN0b3JlVGFibGU6IFJlc3RvcmVUYWJsZU1vZGVsLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuUmVzdG9yZVRhYmxlLCByZXN0b3JlVGFibGUsIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRSZXBsYWNlQ29tbWFuZChtb2RlbDogUmVwbGFjZU1vZGVsLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuUmVwbGFjZSwgcmVwbGFjZTogbW9kZWwsIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRSZXNpemVUYWJsZUNvbHVtbnNDb21tYW5kKHJlc2l6ZVRhYmxlQ29sdW1uczogUmVzaXplVGFibGVDb2x1bW5zTW9kZWwsIHRhcmdldHM6IFRhcmdldE1vZGVsW10pOiBDb21tYW5kTW9kZWwge1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5SZXNpemVUYWJsZUNvbHVtbnMsIHJlc2l6ZVRhYmxlQ29sdW1ucywgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEFwcGx5RWxlbWVudFN0eWxlQ29tbWFuZChhcHBseUVsZW1lbnRTdHlsZTogQXBwbHlFbGVtZW50U3R5bGVNb2RlbCwgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXSk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLkFwcGx5RWxlbWVudFN0eWxlLCBhcHBseUVsZW1lbnRTdHlsZSwgdGFyZ2V0cyB9KTtcbiAgICB9XG59XG4iXX0=
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZS1jb21tYW5kcy5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9lZGl0b3Ivb3BlcmF0aW9ucy9zYXZlLWNvbW1hbmRzLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUUvRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUM5RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQU9sRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUU1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUV0RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFJM0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDdkYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFHdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBRXBH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QyxLQUFtQixFQUFFLE9BQXNCO1FBQ3ZFLE9BQU8sSUFBSSxZQUFZLENBQUMsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVNLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxrQkFBMkMsRUFBRSxPQUFzQjtRQUMxRyxPQUFPLElBQUksWUFBWSxDQUFDLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFTSxNQUFNLENBQUMsMkJBQTJCLENBQUMsaUJBQXlDLEVBQUUsT0FBc0I7UUFDdkcsT0FBTyxJQUFJLFlBQVksQ0FBQyxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN4RyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZGROdW1iZXJpbmdNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvYWRkLW51bWJlcmluZy5tb2RlbCc7XG5pbXBvcnQgeyBBcHBseUVsZW1lbnRTdHlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9hcHBseS1lbGVtZW50LXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IEFwcGx5SW1hZ2VTdHlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9hcHBseS1pbWFnZS1zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBBcHBseVBhcmFncmFwaFN0eWxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2FwcGx5LXBhcmFncmFwaC1zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBBcHBseVRleHRTdHlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9hcHBseS10ZXh0LXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IENvbW1hbmRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvY29tbWFuZC5tb2RlbCc7XG5pbXBvcnQgeyBDb21tYW5kVHlwZSB9IGZyb20gJy4vZW51bXMvY29tbWFuZC10eXBlLmVudW0nO1xuaW1wb3J0IHsgRGVsZXRlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2RlbGV0ZS5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtYXRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvZm9ybWF0Lm1vZGVsJztcbmltcG9ydCB7IEluc2VydEJyZWFrTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC1icmVhay5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRFbGVtZW50TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC1lbGVtZW50Lm1vZGVsJztcbmltcG9ydCB7IEluc2VydEltYWdlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC1pbWFnZS5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRMaW5rTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC1saW5rLm1vZGVsJztcbmltcG9ydCB7IEluc2VydFBhcmFncmFwaE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtcGFyYWdyYXBoLm1vZGVsJztcbmltcG9ydCB7IEluc2VydFN0eWxlZFRleHRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LXN0eWxlZC10ZXh0Lm1vZGVsJztcbmltcG9ydCB7IEluc2VydFRhYmxlQ29sdW1uc01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtdGFibGUtY29sdW1ucy5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRUYWJsZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtdGFibGUubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0VGFibGVSb3dzTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC10YWJsZS1yb3dzLm1vZGVsJztcbmltcG9ydCB7IEluc2VydFRhYk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtdGFiLm1vZGVsJztcbmltcG9ydCB7IEluc2VydFRleHRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LXRleHQubW9kZWwnO1xuaW1wb3J0IHsgTnVtYmVyaW5nTGV2ZWxNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvbnVtYmVyaW5nLWxldmVsLm1vZGVsJztcbmltcG9ydCB7IFBhcmFncmFwaE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9wYXJhZ3JhcGgubW9kZWwnO1xuaW1wb3J0IHsgUGFyYWdyYXBoU3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcGFyYWdyYXBoLXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IFJlbW92ZU51bWJlcmluZ3NNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVtb3ZlLW51bWJlcmluZ3MubW9kZWwnO1xuaW1wb3J0IHsgUmVtb3ZlVGFibGVDb2x1bW5zTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3JlbW92ZS10YWJsZS1jb2x1bW5zLm1vZGVsJztcbmltcG9ydCB7IFJlbW92ZVRhYmxlUm93c01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZW1vdmUtdGFibGUtcm93cy5tb2RlbCc7XG5pbXBvcnQgeyBSZXBsYWNlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3JlcGxhY2UubW9kZWwnO1xuaW1wb3J0IHsgUmVzaXplVGFibGVDb2x1bW5zTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3Jlc2l6ZS10YWJsZS1jb2x1bW5zLm1vZGVsJztcbmltcG9ydCB7IFJlc3RvcmVNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVzdG9yZS5tb2RlbCc7XG5pbXBvcnQgeyBSZXN0b3JlTnVtYmVyaW5nc01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXN0b3JlLW51bWJlcmluZ3MubW9kZWwnO1xuaW1wb3J0IHsgUmVzdG9yZVBhcmFncmFwaFN0eWxlc01vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXN0b3JlLXBhcmFncmFwaC1zdHlsZXMubW9kZWwnO1xuaW1wb3J0IHsgUmVzdG9yZVRhYmxlTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3Jlc3RvcmUtdGFibGUubW9kZWwnO1xuaW1wb3J0IHsgUmVzdG9yZVRleHRTdHlsZXNNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVzdG9yZS10ZXh0LXN0eWxlcy5tb2RlbCc7XG5pbXBvcnQgeyBUYXJnZXRNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvdGFyZ2V0Lm1vZGVsJztcbmltcG9ydCB7IFRleHRTdHlsZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC90ZXh0LXN0eWxlLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIFNhdmVDb21tYW5kc0hlbHBlciB7XG4gICAgcHVibGljIHN0YXRpYyBnZXRBZGROdW1iZXJpbmdDb21tYW5kKFxuICAgICAgICBzdGFydEluZGV4OiBudW1iZXIsXG4gICAgICAgIGVuZEluZGV4OiBudW1iZXIsXG4gICAgICAgIGxldmVsczogTnVtYmVyaW5nTGV2ZWxNb2RlbFtdLFxuICAgICAgICB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdXG4gICAgKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgY29uc3QgYWRkTnVtYmVyaW5nID0gbmV3IEFkZE51bWJlcmluZ01vZGVsKHsgc3RhcnRJbmRleCwgZW5kSW5kZXgsIGxldmVscyB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuQWRkTnVtYmVyaW5nLCBhZGROdW1iZXJpbmcsIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRSZW1vdmVOdW1iZXJpbmdzQ29tbWFuZChzdGFydEluZGV4OiBudW1iZXIsIGVuZEluZGV4OiBudW1iZXIsIHRhcmdldHM6IFRhcmdldE1vZGVsW10pOiBDb21tYW5kTW9kZWwge1xuICAgICAgICBjb25zdCByZW1vdmVOdW1iZXJpbmdzID0gbmV3IFJlbW92ZU51bWJlcmluZ3NNb2RlbCh7IHN0YXJ0SW5kZXgsIGVuZEluZGV4IH0pO1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5SZW1vdmVOdW1iZXJpbmdzLCByZW1vdmVOdW1iZXJpbmdzLCB0YXJnZXRzIH0pO1xuICAgIH1cbiAgICBwdWJsaWMgc3RhdGljIGdldFJlc3RvcmVOdW1iZXJpbmdzQ29tbWFuZChyZXN0b3JlTnVtYmVyaW5nczogUmVzdG9yZU51bWJlcmluZ3NNb2RlbCwgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXSk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLlJlc3RvcmVOdW1iZXJpbmdzLCByZXN0b3JlTnVtYmVyaW5ncywgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEFwcGx5SW1hZ2VTdHlsZUNvbW1hbmQoaGVpZ2h0OiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGluc2VydEluZGV4OiBudW1iZXIsIHRhcmdldHM6IFRhcmdldE1vZGVsW10pOiBDb21tYW5kTW9kZWwge1xuICAgICAgICBjb25zdCBhcHBseUltYWdlU3R5bGUgPSBuZXcgQXBwbHlJbWFnZVN0eWxlTW9kZWwoeyBoZWlnaHQsIHdpZHRoLCBpbnNlcnRJbmRleCB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuQXBwbHlJbWFnZVN0eWxlLCBhcHBseUltYWdlU3R5bGUsIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRBcHBseVBhcmFncmFwaFN0eWxlQ29tbWFuZChcbiAgICAgICAgc3RhcnRJbmRleDogbnVtYmVyLFxuICAgICAgICBlbmRJbmRleDogbnVtYmVyLFxuICAgICAgICBwYXJhZ3JhcGhTdHlsZTogUGFyYWdyYXBoU3R5bGVNb2RlbCxcbiAgICAgICAgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXVxuICAgICk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIGNvbnN0IGFwcGx5UGFyYWdyYXBoU3R5bGUgPSBuZXcgQXBwbHlQYXJhZ3JhcGhTdHlsZU1vZGVsKHsgc3RhcnRJbmRleCwgZW5kSW5kZXgsIHBhcmFncmFwaFN0eWxlIH0pO1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5BcHBseVBhcmFncmFwaFN0eWxlLCBhcHBseVBhcmFncmFwaFN0eWxlLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QXBwbHlUZXh0U3R5bGVDb21tYW5kKFxuICAgICAgICBzdGFydEluZGV4OiBudW1iZXIsXG4gICAgICAgIGVuZEluZGV4OiBudW1iZXIsXG4gICAgICAgIHRleHRTdHlsZTogVGV4dFN0eWxlTW9kZWwsXG4gICAgICAgIHRhcmdldHM6IFRhcmdldE1vZGVsW11cbiAgICApOiBDb21tYW5kTW9kZWwge1xuICAgICAgICBjb25zdCBhcHBseVRleHRTdHlsZSA9IG5ldyBBcHBseVRleHRTdHlsZU1vZGVsKHsgc3RhcnRJbmRleCwgZW5kSW5kZXgsIHRleHRTdHlsZSB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuQXBwbHlUZXh0U3R5bGUsIGFwcGx5VGV4dFN0eWxlLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RGVsZXRlQ29tbWFuZChzdGFydEluZGV4OiBudW1iZXIsIGNvdW50OiBudW1iZXIsIHRhcmdldHM6IFRhcmdldE1vZGVsW10pOiBDb21tYW5kTW9kZWwge1xuICAgICAgICBjb25zdCBkZWxldGVNb2RlbCA9IG5ldyBEZWxldGVNb2RlbCh7IHN0YXJ0SW5kZXgsIGNvdW50IH0pO1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5EZWxldGUsIGRlbGV0ZTogZGVsZXRlTW9kZWwsIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRJbnNlcnRUZXh0Q29tbWFuZCh0ZXh0OiBzdHJpbmcsIGluc2VydEluZGV4OiBudW1iZXIsIHRhcmdldHM6IFRhcmdldE1vZGVsW10pOiBDb21tYW5kTW9kZWwge1xuICAgICAgICBjb25zdCBpbnNlcnRUZXh0ID0gbmV3IEluc2VydFRleHRNb2RlbCh7IHRleHQsIGluc2VydEluZGV4IH0pO1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5JbnNlcnRUZXh0LCBpbnNlcnRUZXh0LCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SW5zZXJ0UGFyYWdyYXBoQ29tbWFuZChpbnNlcnRQYXJhZ3JhcGg6IEluc2VydFBhcmFncmFwaE1vZGVsLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuSW5zZXJ0UGFyYWdyYXBoLCBpbnNlcnRQYXJhZ3JhcGgsIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRJbnNlcnRTdHlsZWRUZXh0Q29tbWFuZChcbiAgICAgICAgdGV4dDogc3RyaW5nLFxuICAgICAgICBpbnNlcnRJbmRleDogbnVtYmVyLFxuICAgICAgICB0ZXh0U3R5bGU6IFRleHRTdHlsZU1vZGVsLFxuICAgICAgICB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdXG4gICAgKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgY29uc3QgaW5zZXJ0U3R5bGVkVGV4dCA9IG5ldyBJbnNlcnRTdHlsZWRUZXh0TW9kZWwoeyB0ZXh0LCBpbnNlcnRJbmRleCwgdGV4dFN0eWxlIH0pO1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5JbnNlcnRTdHlsZWRUZXh0LCBpbnNlcnRTdHlsZWRUZXh0LCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SW5zZXJ0QnJlYWtDb21tYW5kKGluc2VydEJyZWFrOiBJbnNlcnRCcmVha01vZGVsLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuSW5zZXJ0QnJlYWssIGluc2VydEJyZWFrLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SW5zZXJ0RWxlbWVudENvbW1hbmQoaW5zZXJ0RWxlbWVudDogSW5zZXJ0RWxlbWVudE1vZGVsLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuSW5zZXJ0RWxlbWVudCwgaW5zZXJ0RWxlbWVudCwgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEluc2VydEltYWdlQ29tbWFuZChpbnNlcnRJbWFnZTogSW5zZXJ0SW1hZ2VNb2RlbCwgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXSk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLkluc2VydEltYWdlLCBpbnNlcnRJbWFnZSwgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEluc2VydExpbmtPcGVyYXRpb24oaW5zZXJ0TGluazogSW5zZXJ0TGlua01vZGVsLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuSW5zZXJ0TGluaywgaW5zZXJ0TGluaywgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEluc2VydFRhYkNvbW1hbmQoaW5zZXJ0VGFiOiBJbnNlcnRUYWJNb2RlbCwgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXSk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLkluc2VydFRhYiwgaW5zZXJ0VGFiLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SW5zZXJ0VGFibGVDb21tYW5kKGluc2VydFRhYmxlOiBJbnNlcnRUYWJsZU1vZGVsLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuSW5zZXJ0VGFibGUsIGluc2VydFRhYmxlLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0SW5zZXJ0VGFibGVDb2x1bW5zQ29tbWFuZChcbiAgICAgICAgY29sdW1uc0NvdW50OiBudW1iZXIsXG4gICAgICAgIGluaGVyaXRJbmRleDogbnVtYmVyLFxuICAgICAgICBpbnNlcnRJbmRleDogbnVtYmVyLFxuICAgICAgICB0YXJnZXRJbmRleDogbnVtYmVyLFxuICAgICAgICB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdXG4gICAgKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgY29uc3QgaW5zZXJ0VGFibGVDb2x1bW5zID0gbmV3IEluc2VydFRhYmxlQ29sdW1uc01vZGVsKHsgY29sdW1uc0NvdW50LCBpbmhlcml0SW5kZXgsIGluc2VydEluZGV4LCB0YXJnZXRJbmRleCB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuSW5zZXJ0VGFibGVDb2x1bW5zLCBpbnNlcnRUYWJsZUNvbHVtbnMsIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRJbnNlcnRUYWJsZVJvd3NDb21tYW5kKFxuICAgICAgICByb3dzQ291bnQ6IG51bWJlcixcbiAgICAgICAgaW5oZXJpdEluZGV4OiBudW1iZXIsXG4gICAgICAgIGluc2VydEluZGV4OiBudW1iZXIsXG4gICAgICAgIHRhcmdldEluZGV4OiBudW1iZXIsXG4gICAgICAgIHRhcmdldHM6IFRhcmdldE1vZGVsW11cbiAgICApOiBDb21tYW5kTW9kZWwge1xuICAgICAgICBjb25zdCBpbnNlcnRUYWJsZVJvd3MgPSBuZXcgSW5zZXJ0VGFibGVSb3dzTW9kZWwoeyByb3dzQ291bnQsIGluaGVyaXRJbmRleCwgaW5zZXJ0SW5kZXgsIHRhcmdldEluZGV4IH0pO1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5JbnNlcnRUYWJsZVJvd3MsIGluc2VydFRhYmxlUm93cywgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFJlbW92ZVRhYmxlQ29sdW1uc0NvbW1hbmQoXG4gICAgICAgIHN0YXJ0SW5kZXg6IG51bWJlcixcbiAgICAgICAgZW5kSW5kZXg6IG51bWJlcixcbiAgICAgICAgaW5zZXJ0SW5kZXg6IG51bWJlcixcbiAgICAgICAgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXVxuICAgICk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIGNvbnN0IHJlbW92ZVRhYmxlQ29sdW1ucyA9IG5ldyBSZW1vdmVUYWJsZUNvbHVtbnNNb2RlbCh7IHN0YXJ0SW5kZXgsIGVuZEluZGV4LCBpbnNlcnRJbmRleCB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuUmVtb3ZlVGFibGVDb2x1bW5zLCByZW1vdmVUYWJsZUNvbHVtbnMsIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRSZW1vdmVUYWJsZVJvd3NDb21tYW5kKFxuICAgICAgICBzdGFydEluZGV4OiBudW1iZXIsXG4gICAgICAgIGVuZEluZGV4OiBudW1iZXIsXG4gICAgICAgIGluc2VydEluZGV4OiBudW1iZXIsXG4gICAgICAgIHRhcmdldHM6IFRhcmdldE1vZGVsW11cbiAgICApOiBDb21tYW5kTW9kZWwge1xuICAgICAgICBjb25zdCByZW1vdmVUYWJsZVJvd3MgPSBuZXcgUmVtb3ZlVGFibGVSb3dzTW9kZWwoeyBzdGFydEluZGV4LCBlbmRJbmRleCwgaW5zZXJ0SW5kZXggfSk7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLlJlbW92ZVRhYmxlUm93cywgcmVtb3ZlVGFibGVSb3dzLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UmVzdG9yZVRleHRTdHlsZXNDb21tYW5kKGZvcm1hdHM6IEZvcm1hdE1vZGVsW10sIHRhcmdldHM6IFRhcmdldE1vZGVsW10pOiBDb21tYW5kTW9kZWwge1xuICAgICAgICBjb25zdCByZXN0b3JlVGV4dFN0eWxlcyA9IG5ldyBSZXN0b3JlVGV4dFN0eWxlc01vZGVsKHsgZm9ybWF0cyB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuUmVzdG9yZVRleHRTdHlsZXMsIHJlc3RvcmVUZXh0U3R5bGVzLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UmVzdG9yZVBhcmFncmFwaFN0eWxlc0NvbW1hbmQocGFyYWdyYXBoczogUGFyYWdyYXBoTW9kZWxbXSwgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXSk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIGNvbnN0IHJlc3RvcmVQYXJhZ3JhcGhTdHlsZXMgPSBuZXcgUmVzdG9yZVBhcmFncmFwaFN0eWxlc01vZGVsKHsgcGFyYWdyYXBocyB9KTtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuUmVzdG9yZVBhcmFncmFwaFN0eWxlcywgcmVzdG9yZVBhcmFncmFwaFN0eWxlcywgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFJlc3RvcmVDb21tYW5kKHJlc3RvcmVNb2RlbDogUmVzdG9yZU1vZGVsLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgY29uc3QgcmVzdG9yZSA9IG5ldyBSZXN0b3JlTW9kZWwoe1xuICAgICAgICAgICAgYnJlYWtzOiByZXN0b3JlTW9kZWwuYnJlYWtzLFxuICAgICAgICAgICAgZWxlbWVudHM6IHJlc3RvcmVNb2RlbC5lbGVtZW50cyxcbiAgICAgICAgICAgIGZvcm1hdHM6IHJlc3RvcmVNb2RlbC5mb3JtYXRzLFxuICAgICAgICAgICAgaW1hZ2VzOiByZXN0b3JlTW9kZWwuaW1hZ2VzLFxuICAgICAgICAgICAgc3RhcnRJbmRleDogcmVzdG9yZU1vZGVsLnN0YXJ0SW5kZXgsXG4gICAgICAgICAgICBlbmRJbmRleDogcmVzdG9yZU1vZGVsLmVuZEluZGV4LFxuICAgICAgICAgICAgcGFyYWdyYXBoczogcmVzdG9yZU1vZGVsLnBhcmFncmFwaHMsXG4gICAgICAgICAgICB0YWJsZXM6IHJlc3RvcmVNb2RlbC50YWJsZXMsXG4gICAgICAgICAgICB0YWJzOiByZXN0b3JlTW9kZWwudGFicyxcbiAgICAgICAgICAgIHRleHQ6IHJlc3RvcmVNb2RlbC50ZXh0XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5SZXN0b3JlLCByZXN0b3JlLCB0YXJnZXRzIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UmVzdG9yZVRhYmxlQ29tbWFuZChyZXN0b3JlVGFibGU6IFJlc3RvcmVUYWJsZU1vZGVsLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuUmVzdG9yZVRhYmxlLCByZXN0b3JlVGFibGUsIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRSZXBsYWNlQ29tbWFuZChtb2RlbDogUmVwbGFjZU1vZGVsLCB0YXJnZXRzOiBUYXJnZXRNb2RlbFtdKTogQ29tbWFuZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kTW9kZWwoeyBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUuUmVwbGFjZSwgcmVwbGFjZTogbW9kZWwsIHRhcmdldHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRSZXNpemVUYWJsZUNvbHVtbnNDb21tYW5kKHJlc2l6ZVRhYmxlQ29sdW1uczogUmVzaXplVGFibGVDb2x1bW5zTW9kZWwsIHRhcmdldHM6IFRhcmdldE1vZGVsW10pOiBDb21tYW5kTW9kZWwge1xuICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRNb2RlbCh7IGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZS5SZXNpemVUYWJsZUNvbHVtbnMsIHJlc2l6ZVRhYmxlQ29sdW1ucywgdGFyZ2V0cyB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEFwcGx5RWxlbWVudFN0eWxlQ29tbWFuZChhcHBseUVsZW1lbnRTdHlsZTogQXBwbHlFbGVtZW50U3R5bGVNb2RlbCwgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXSk6IENvbW1hbmRNb2RlbCB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWFuZE1vZGVsKHsgY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLkFwcGx5RWxlbWVudFN0eWxlLCBhcHBseUVsZW1lbnRTdHlsZSwgdGFyZ2V0cyB9KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -5,4 +5,4 @@ export class DeleteModel {
|
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvbW9kZWxzL2dlbmVyYXRlZC9kZWxldGUubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFdBQVc7SUFJcEIsWUFDSSxNQUE2QjtRQUU3QixJQUFJLE1BQU0sRUFBRTtZQUdSLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQy9CO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIERlbGV0ZU1vZGVsIHtcbiAgICBwdWJsaWMgY291bnQ6IG51bWJlcjtcbiAgICBwdWJsaWMgc3RhcnRJbmRleDogbnVtYmVyO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBmaWVsZHM/OiBQYXJ0aWFsPERlbGV0ZU1vZGVsPikge1xuXG4gICAgICAgIGlmIChmaWVsZHMpIHtcblxuXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGZpZWxkcyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -5,4 +5,4 @@ export class LinkDataModel {
|
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1kYXRhLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvbW9kZWxzL2dlbmVyYXRlZC9saW5rLWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGFBQWE7SUFLdEIsWUFDSSxNQUErQjtRQUUvQixJQUFJLE1BQU0sRUFBRTtZQUdSLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQy9CO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybWF0TW9kZWwgfSBmcm9tICcuL2Zvcm1hdC5tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBMaW5rRGF0YU1vZGVsIHtcbiAgICBwdWJsaWMgZm9ybWF0czogRm9ybWF0TW9kZWxbXTtcbiAgICBwdWJsaWMgbGluazogc3RyaW5nO1xuICAgIHB1YmxpYyB0ZXh0OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIGZpZWxkcz86IFBhcnRpYWw8TGlua0RhdGFNb2RlbD4pIHtcblxuICAgICAgICBpZiAoZmllbGRzKSB7XG5cblxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBmaWVsZHMpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -5,4 +5,4 @@ export class LinkModel {
|
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL21vZGVscy9nZW5lcmF0ZWQvbGluay5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sU0FBUztJQU9sQixZQUNJLE1BQTJCO1FBRTNCLElBQUksTUFBTSxFQUFFO1lBR1IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDL0I7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtYXRNb2RlbCB9IGZyb20gJy4vZm9ybWF0Lm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIExpbmtNb2RlbCB7XG4gICAgcHVibGljIGVuZEluZGV4OiBudW1iZXI7XG4gICAgcHVibGljIGZvcm1hdHM6IEZvcm1hdE1vZGVsW107XG4gICAgcHVibGljIGxpbms6IHN0cmluZztcbiAgICBwdWJsaWMgc291cmNlSWQ6IHN0cmluZztcbiAgICBwdWJsaWMgc3RhcnRJbmRleDogbnVtYmVyO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBmaWVsZHM/OiBQYXJ0aWFsPExpbmtNb2RlbD4pIHtcblxuICAgICAgICBpZiAoZmllbGRzKSB7XG5cblxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBmaWVsZHMpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|