tiny-markdown-editor 0.1.6 → 0.1.9
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/dist/tiny-mde.js +5 -1
- package/dist/tiny-mde.min.js +1 -1
- package/dist/tiny-mde.tiny.js +1 -1
- package/lib/TinyMDE.js +4 -0
- package/package.json +6 -2
package/dist/tiny-mde.js
CHANGED
|
@@ -2834,6 +2834,7 @@
|
|
|
2834
2834
|
focus.col = anchor.col + len;
|
|
2835
2835
|
this.updateFormatting();
|
|
2836
2836
|
this.setSelection(focus, anchor);
|
|
2837
|
+
this.fireChange();
|
|
2837
2838
|
|
|
2838
2839
|
// Second case: Empty selection with surrounding formatting markers, remove those
|
|
2839
2840
|
} else if (focus.col == anchor.col && !!this.lines[focus.row].substr(0, focus.col).match(commands[command].unset.prePattern) && !!this.lines[focus.row].substr(focus.col).match(commands[command].unset.postPattern)) {
|
|
@@ -2844,6 +2845,7 @@
|
|
|
2844
2845
|
focus.col = anchor.col = left.length;
|
|
2845
2846
|
this.updateFormatting();
|
|
2846
2847
|
this.setSelection(focus, anchor);
|
|
2848
|
+
this.fireChange();
|
|
2847
2849
|
|
|
2848
2850
|
// Not currently formatted, insert formatting markers
|
|
2849
2851
|
} else {
|
|
@@ -2868,6 +2870,7 @@
|
|
|
2868
2870
|
|
|
2869
2871
|
// Just insert markup before and after and hope for the best.
|
|
2870
2872
|
this.wrapSelection(commands[command].set.pre, commands[command].set.post, focus, anchor);
|
|
2873
|
+
this.fireChange();
|
|
2871
2874
|
// TODO clean this up so that markup remains properly nested
|
|
2872
2875
|
}
|
|
2873
2876
|
} else if (commands[command].type == 'line') {
|
|
@@ -2899,6 +2902,7 @@
|
|
|
2899
2902
|
row: start.row,
|
|
2900
2903
|
col: 0
|
|
2901
2904
|
});
|
|
2905
|
+
this.fireChange();
|
|
2902
2906
|
}
|
|
2903
2907
|
}
|
|
2904
2908
|
|
|
@@ -3027,4 +3031,4 @@
|
|
|
3027
3031
|
|
|
3028
3032
|
}));
|
|
3029
3033
|
|
|
3030
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbInNyYy9zdmcvc3ZnLmpzIiwic3JjL1RpbnlNREVDb21tYW5kQmFyLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtYWxsLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vYmplY3QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlYWstbWFwLWJhc2ljLWRldGVjdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1zeW1ib2wuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1tZXRob2QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91aWQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1mbGFncy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmZsYWdzLmpzIiwic3JjL2dyYW1tYXIuanMiLCJzcmMvVGlueU1ERS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzdmcgPSB7XG4gIGJsb2NrcXVvdGU6IGA8c3ZnIGhlaWdodD1cIjE4XCIgd2lkdGg9XCIxOFwiPjxyZWN0IHdpZHRoPVwiNVwiIGhlaWdodD1cIjVcIiB4PVwiM1wiIHk9XCI0XCIgcnk9XCIxXCIvPjxyZWN0IHJ5PVwiMVwiIHk9XCI0XCIgeD1cIjEwXCIgaGVpZ2h0PVwiNVwiIHdpZHRoPVwiNVwiLz48cGF0aCBkPVwiTTggNi45OTl2M2MwIDEtMSAzLTEgM3MtLjMzMSAxLTEuMzMxIDFoLTFjLTEgMC0uNjY5LTEtLjY2OS0xczEtMiAxLTN2LTN6bTcgMHYzYzAgMS0xIDMtMSAzcy0uMzMxIDEtMS4zMzEgMWgtMWMtMSAwLS42NjktMS0uNjY5LTFzMS0yIDEtM3YtM3pcIi8+PC9zdmc+YCxcbiAgYm9sZDogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk00IDJhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDZjNCAwIDUtMiA1LTQgMC0xLjMyMi0uNDM0LTIuNjM2LTEuODg1LTMuMzgxQzEzLjc3MiA3Ljg4NSAxNCA2Ljk0NSAxNCA2YzAtMi0xLTQtNS00em0xIDJoNGMxLjY2OCAwIDIuMzIuMzkzIDIuNi42NzIuMjguMjc5LjQuNjYyLjQgMS4zMjhzLS4xMiAxLjA1Ny0uNCAxLjMzOGMtLjI3NS4yNzQtMS4wMTQuNjQ2LTIuNi42NjJINXptNSA2YzEuNjY2LjAwNSAyLjMxOC4zODggMi41OTYuNjY2LjI3Ny4yNzguNDA0LjY2Ny40MDQgMS4zMzRzLS4xMjcgMS4wNi0uNDA0IDEuMzM4Yy0uMjc4LjI3OC0uOTMuNjYtMi41OTYuNjYybC00Ljk5Mi4wMDRMNSAxMHpcIi8+PC9zdmc+YCxcbiAgY2xlYXJfZm9ybWF0dGluZzogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk0xMS4wMyAxYTEgMSAwIDAwLS43NC4zbC05IDlhMSAxIDAgMDAwIDEuNGw0IDRBMSAxIDAgMDA2IDE2aDJhMSAxIDAgMDAuNy0uM2w4LThhMSAxIDAgMDAwLTEuNGwtNS01YTEgMSAwIDAwLS42Ny0uM3pNOC43IDUuN2wzLjU4IDMuNkw3LjYgMTRINi40bC0zLTMgNS4zLTUuM3pcIi8+PHJlY3Qgcnk9XCIuOFwiIHJ4PVwiLjhcIiB5PVwiMTRcIiB4PVwiMTZcIiBoZWlnaHQ9XCIyXCIgd2lkdGg9XCIyXCIvPjxyZWN0IHdpZHRoPVwiMlwiIGhlaWdodD1cIjJcIiB4PVwiMTNcIiB5PVwiMTRcIiByeD1cIi44XCIgcnk9XCIuOFwiLz48cmVjdCByeT1cIi44XCIgcng9XCIuOFwiIHk9XCIxNFwiIHg9XCIxMFwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjJcIi8+PC9zdmc+YCxcbiAgY29kZTogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk0xMy41IDIuOTk0YS41LjUgMCAwMC0uNS41LjUuNSAwIDAwMCAuMDM0VjQuNTNhNS45OTMgNS45OTMgMCAwMC03LjQ1MS0uNDQ1QTYgNiAwIDEwMTIuNDUgMTMuOWE1Ljk5IDUuOTkgMCAwMDEuMzQ2LTEuMzM0LjUuNSAwIDAwLjA5Ni0uMTAxLjUuNSAwIDAwLS4xMi0uNjk4LjUuNSAwIDAwLS42OTcuMTJsLS4wMDQtLjAwNWE1IDUgMCAwMS0xLjE5NyAxLjIgNSA1IDAgMTExLjIxNS02Ljk2NS41LjUgMCAwMC42OTcuMTIuNS41IDAgMDAuMjExLS40NFY0Ljc0NUgxNFYzLjQ5M2EuNS41IDAgMDAtLjUtLjV6XCIvPjwvc3ZnPmAsXG4gIGgxOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48cGF0aCBkPVwiTTMgMnMwLTEgMS0xaDFjMSAwIDEgMSAxIDF2Nmg2VjJzMC0xIDEtMWgxYzEgMCAxIDEgMSAxdjE0czAgMS0xIDFoLTFjLTEgMC0xLTEtMS0xdi02SDZ2NnMwIDEtMSAxSDRjLTEgMC0xLTEtMS0xelwiLz48L3N2Zz5gLFxuICBoMjogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk00IDJzMC0xIDEtMSAxIDEgMSAxdjZjMS0xIDItMSA0LTEgMyAwIDQgMiA0IDR2NXMwIDEtMSAxLTEtMS0xLTF2LTVjMC0xLjA5NC0xLTItMi0yLTIgMC0zIDAtNCAydjVzMCAxLTEgMS0xLTEtMS0xelwiLz48L3N2Zz5gLFxuICBocjogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHJlY3Qgcnk9XCIxXCIgeT1cIjhcIiBoZWlnaHQ9XCIyXCIgd2lkdGg9XCIxOFwiIHN0eWxlPVwiZm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO21hcmtlcjpub25lXCIvPjwvc3ZnPmAsXG4gIGltYWdlOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48cGF0aCBkPVwiTTEgMnYxNGgxNlYySDF6bTIgMmgxMnY3bC0zLTMtNCA0LTItMi0zIDNWNHpcIi8+PGNpcmNsZSByPVwiMS41XCIgY3k9XCI2LjVcIiBjeD1cIjUuNVwiLz48L3N2Zz5gLFxuICBpdGFsaWM6IGA8c3ZnIGhlaWdodD1cIjE4XCIgd2lkdGg9XCIxOFwiPjxwYXRoIGQ9XCJNOSAyYTEgMSAwIDAwMCAyTDcgMTRhMSAxIDAgMTAwIDJoMmExIDEgMCAwMDAtMmwyLTEwYTEgMSAwIDEwMC0yelwiLz48L3N2Zz5gLFxuICBsaW5rOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48cGF0aCBkPVwiTTkuMDcgNS4xOGEzLjkgMy45IDAgMDAtMS41Mi40M0M2LjMxIDYuMjIgNS4zIDcuMjkgNC4zIDguMjljLTEgMS0yLjA3IDIuMDItMi42OCAzLjI2LS4zMS42Mi0uNSAxLjMzLS40MSAyLjA3LjA5Ljc1LjQ4IDEuNDcgMS4xIDIuMDkuNjEuNjEgMS4zMyAxIDIuMDggMS4xLjc0LjA5IDEuNDUtLjEgMi4wNy0uNDIgMS4yNC0uNjEgMi4yNi0xLjY4IDMuMjYtMi42OC40Ni0uNDcuOTQtLjk0IDEuMzktMS40NGwtLjQzLjI2Yy0uNjguMzQtMS40OS41Ni0yLjM2LjQ2LS4yLS4wMy0uNC0uMDgtLjYtLjE0LS43OS43Ni0xLjU1IDEuNDUtMi4xNiAxLjc2LS4zOC4xOS0uNjcuMjQtLjkyLjIxLS4yNi0uMDMtLjU0LS4xNC0uOTItLjUzLS4zOS0uMzgtLjUtLjY2LS41My0uOTEtLjAzLS4yNi4wMi0uNTUuMjEtLjkzLjM5LS43NiAxLjMyLTEuNzQgMi4zMi0yLjc0IDEtMSAxLjk4LTEuOTMgMi43NC0yLjMyLjM4LS4xOS42Ny0uMjQuOTMtLjIxLjI1LjAzLjUzLjE0LjkxLjUzLjM5LjM4LjUuNjYuNTMuOTJ2LjA2bDEuMTItMS4wNi40NC0uNDdjLS4xOC0uMy0uNC0uNi0uNjctLjg3LS42Mi0uNjEtMS4zNC0xLTIuMDktMS4xYTMuMDggMy4wOCAwIDAwLS41NS0uMDF6XCIvPjxwYXRoIGQ9XCJNMTMuMDcuODZhMy45IDMuOSAwIDAwLTEuNTIuNDNjLTEuMjQuNjItMi4yNiAxLjY5LTMuMjYgMi42OS0uNDYuNDctLjk0Ljk0LTEuMzkgMS40My4xNS0uMDguMjgtLjE4LjQzLS4yNWE0LjQgNC40IDAgMDEyLjM2LS40NmMuMi4wMi40LjA3LjYuMTQuNzktLjc3IDEuNTUtMS40NiAyLjE2LTEuNzYuMzgtLjE5LjY3LS4yNS45My0uMjEuMjUuMDMuNTMuMTQuOTEuNTIuMzkuMzguNS42Ni41My45Mi4wMy4yNi0uMDIuNTUtLjIxLjkzLS4zOS43Ni0xLjMyIDEuNzQtMi4zMiAyLjc0LTEgMS0xLjk4IDEuOTMtMi43NCAyLjMxLS4zOC4yLS42Ny4yNS0uOTMuMjItLjI1LS4wNC0uNTMtLjE1LS45MS0uNTMtLjM5LS4zOC0uNS0uNjYtLjUzLS45MlY5Yy0uMzYuMzMtLjczLjY3LTEuMTIgMS4wNmwtLjQzLjQ2Yy4xNy4zLjQuNi42Ni44Ny42Mi42MiAxLjM0IDEgMi4wOCAxLjEuNzUuMSAxLjQ2LS4xIDIuMDgtLjQxIDEuMjQtLjYyIDIuMjYtMS42OSAzLjI2LTIuNjlzMi4wNy0yLjAyIDIuNjgtMy4yNmMuMzEtLjYyLjUtMS4zMi40MS0yLjA3YTMuNjMgMy42MyAwIDAwLTEuMS0yLjA4Yy0uNjEtLjYyLTEuMzMtMS0yLjA3LTEuMWEzLjA4IDMuMDggMCAwMC0uNTYtLjAyelwiLz48L3N2Zz5gLFxuICBvbDogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk0xLjUgN2EuNS41IDAgMTAwIDFoMWEuNS41IDAgMDEuNS41YzAgLjE2NC0uMDguMzEtLjE0LjM1NWwtMS42NTUgMS4yNUEuNDkyLjQ5MiAwIDAwMSAxMC41YS41LjUgMCAwMC41LjVoMmEuNS41IDAgMDAwLTFIM2wuMzk4LS4yOTlBMS41IDEuNSAwIDAwMi41IDd6XCIvPjxwYXRoIGQ9XCJNMS41IDEyYy0uNjY3IDAtLjY2NyAxIDAgMWgxLjI1Yy4zMzMgMCAuMzMzLjUgMCAuNUgyLjVjLS42NjcgMC0uNjY3IDEgMCAxaC4yNWMuMzMzIDAgLjMzMy41IDAgLjVIMS41Yy0uNjY3IDAtLjY2NyAxIDAgMWgxYy4zOTggMCAuNzgtLjEzMSAxLjA2LS4zNjUuMjgyLS4yMzUuNDQtLjU1NC40NC0uODg1YTEuMTIxIDEuMTIxIDAgMDAtLjMwMy0uNzVjLjE5MS0uMjA0LjMtLjQ3LjMwMy0uNzUgMC0uMzMyLS4xNTgtLjY1MS0uNDQtLjg4NS0uMy0uMjQxLS42NzUtLjM3LTEuMDYtLjM2NXpcIi8+PHJlY3QgeT1cIjEzXCIgeD1cIjZcIiBoZWlnaHQ9XCIyXCIgd2lkdGg9XCIxMlwiIHJ5PVwiMVwiLz48cmVjdCByeT1cIjFcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMlwiIHg9XCI2XCIgeT1cIjhcIi8+PHJlY3QgeT1cIjNcIiB4PVwiNlwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjEyXCIgcnk9XCIxXCIvPjxwYXRoIGQ9XCJNMS41IDJhLjUuNSAwIDEwMCAxSDJ2MmgtLjVhLjUuNSAwIDEwMCAxaDJhLjUuNSAwIDEwMC0xSDNWMi41YzAtLjI3Ny0uMjIzLS41LS41LS41elwiLz48L3N2Zz5gLFxuICBzdHJpa2V0aHJvdWdoOiBgPHN2ZyB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIj48cGF0aCBkPVwiTTEwIDJDNiAyIDQgNCA0IDZjMCAuMzM4LjA4LjY3Mi4xOTMgMWgyLjM0QzYuMTEzIDYuNjI5IDYgNi4yOTUgNiA2YzAtLjMzNC4xMTctLjcyNS42OTEtMS4xNTRDNy4yNjUgNC40MTYgOC4zMzEgNCAxMCA0aDNhMSAxIDAgMDAwLTJ6bTEuNDc3IDljLjQxMy4zNjguNTIzLjcwNi41MjMgMSAwIC4zMzQtLjEyNy43MTItLjcwMSAxLjE0My0uNTc1LjQzLTEuNjMyLjg1LTMuMjk5Ljg1N2wtMS4wMDYuMDA3VjE0SDVhMSAxIDAgMDAwIDJoM2M0IDAgNi0yIDYtNCAwLS4zMzgtLjA4MS0uNjcyLS4xOTUtMXpcIi8+PHJlY3Qgcnk9XCIxXCIgeT1cIjhcIiB4PVwiMVwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjE2XCIvPjwvc3ZnPmAsXG4gIHVsOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48Y2lyY2xlIGN4PVwiMlwiIGN5PVwiOVwiIHI9XCIyXCIvPjxjaXJjbGUgY3k9XCI0XCIgY3g9XCIyXCIgcj1cIjJcIi8+PHJlY3QgeT1cIjNcIiB4PVwiNlwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjEyXCIgcnk9XCIxXCIvPjxjaXJjbGUgY3g9XCIyXCIgY3k9XCIxNFwiIHI9XCIyXCIvPjxyZWN0IHJ5PVwiMVwiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIyXCIgeD1cIjZcIiB5PVwiOFwiLz48cmVjdCB5PVwiMTNcIiB4PVwiNlwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjEyXCIgcnk9XCIxXCIvPjwvc3ZnPmBcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHN2ZzsiLCJpbXBvcnQgc3ZnIGZyb20gJy4vc3ZnL3N2Zyc7XG5cbmNvbnN0IGlzTWFjTGlrZSA9IC8oTWFjfGlQaG9uZXxpUG9kfGlQYWQpL2kudGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pO1xuXG5jb25zdCBEZWZhdWx0Q29tbWFuZHMgPSB7XG4gICdib2xkJzoge1xuICAgIG5hbWU6ICdib2xkJyxcbiAgICBhY3Rpb246ICdib2xkJyxcbiAgICBpbm5lckhUTUw6IHN2Zy5ib2xkLFxuICAgIHRpdGxlOiAnQm9sZCcsXG4gICAgaG90a2V5OiAnTW9kLUInLFxuICB9LFxuICAnaXRhbGljJzoge1xuICAgIG5hbWU6ICdpdGFsaWMnLFxuICAgIGFjdGlvbjogJ2l0YWxpYycsXG4gICAgaW5uZXJIVE1MOiBzdmcuaXRhbGljLFxuICAgIHRpdGxlOiAnSXRhbGljJyxcbiAgICBob3RrZXk6ICdNb2QtSScsXG4gIH0sXG4gICdzdHJpa2V0aHJvdWdoJzoge1xuICAgIG5hbWU6ICdzdHJpa2V0aHJvdWdoJyxcbiAgICBhY3Rpb246ICdzdHJpa2V0aHJvdWdoJyxcbiAgICBpbm5lckhUTUw6IHN2Zy5zdHJpa2V0aHJvdWdoLFxuICAgIHRpdGxlOiAnU3RyaWtldGhyb3VnaCcsXG4gICAgaG90a2V5OiAnTW9kMi1TaGlmdC01JyxcbiAgfSxcbiAgJ2NvZGUnOiB7XG4gICAgbmFtZTogJ2NvZGUnLFxuICAgIGFjdGlvbjogJ2NvZGUnLFxuICAgIGlubmVySFRNTDogc3ZnLmNvZGUsXG4gICAgdGl0bGU6ICdGb3JtYXQgYXMgY29kZScsXG4gIH0sXG4gICdoMSc6IHtcbiAgICBuYW1lOiAnaDEnLFxuICAgIGFjdGlvbjogJ2gxJyxcbiAgICBpbm5lckhUTUw6IHN2Zy5oMSxcbiAgICB0aXRsZTogJ0xldmVsIDEgaGVhZGluZycsXG4gICAgaG90a2V5OiAnTW9kLVNoaWZ0LTEnLFxuICB9LFxuICAnaDInOiB7XG4gICAgbmFtZTogJ2gyJyxcbiAgICBhY3Rpb246ICdoMicsXG4gICAgaW5uZXJIVE1MOiBzdmcuaDIsXG4gICAgdGl0bGU6ICdMZXZlbCAyIGhlYWRpbmcnLFxuICAgIGhvdGtleTogJ01vZC1TaGlmdC0yJyxcbiAgfSxcbiAgJ3VsJzoge1xuICAgIG5hbWU6ICd1bCcsXG4gICAgYWN0aW9uOiAndWwnLFxuICAgIGlubmVySFRNTDogc3ZnLnVsLFxuICAgIHRpdGxlOiAnQnVsbGV0ZWQgbGlzdCcsXG4gIH0sXG4gICdvbCc6IHtcbiAgICBuYW1lOiAnb2wnLFxuICAgIGFjdGlvbjogJ29sJyxcbiAgICBpbm5lckhUTUw6IHN2Zy5vbCxcbiAgICB0aXRsZTogJ051bWJlcmVkIGxpc3QnLFxuICB9LFxuICAnYmxvY2txdW90ZSc6IHtcbiAgICBuYW1lOiAnYmxvY2txdW90ZScsXG4gICAgYWN0aW9uOiAnYmxvY2txdW90ZScsXG4gICAgaW5uZXJIVE1MOiBzdmcuYmxvY2txdW90ZSxcbiAgICB0aXRsZTogJ1F1b3RlJyxcbiAgICBob3RrZXk6ICdNb2QyLVNoaWZ0LVEnLFxuICB9LFxuICAnaW5zZXJ0TGluayc6IHtcbiAgICBuYW1lOiAnaW5zZXJ0TGluaycsXG4gICAgYWN0aW9uOiAoZWRpdG9yKSA9PiB7aWYgKGVkaXRvci5pc0lubGluZUZvcm1hdHRpbmdBbGxvd2VkKCkpIGVkaXRvci53cmFwU2VsZWN0aW9uKCdbJywgJ10oKScpfSxcbiAgICBlbmFibGVkOiAoZWRpdG9yLCBmb2N1cywgYW5jaG9yKSA9PiBlZGl0b3IuaXNJbmxpbmVGb3JtYXR0aW5nQWxsb3dlZChmb2N1cywgYW5jaG9yKSA/IGZhbHNlIDogbnVsbCxcbiAgICBpbm5lckhUTUw6IHN2Zy5saW5rLFxuICAgIHRpdGxlOiAnSW5zZXJ0IGxpbmsnLFxuICAgIGhvdGtleTogJ01vZC1LJyxcbiAgfSxcbiAgJ2luc2VydEltYWdlJzoge1xuICAgIG5hbWU6ICdpbnNlcnRJbWFnZScsXG4gICAgYWN0aW9uOiAoZWRpdG9yKSA9PiB7aWYgKGVkaXRvci5pc0lubGluZUZvcm1hdHRpbmdBbGxvd2VkKCkpIGVkaXRvci53cmFwU2VsZWN0aW9uKCchWycsICddKCknKX0sXG4gICAgZW5hYmxlZDogKGVkaXRvciwgZm9jdXMsIGFuY2hvcikgPT4gZWRpdG9yLmlzSW5saW5lRm9ybWF0dGluZ0FsbG93ZWQoZm9jdXMsIGFuY2hvcikgPyBmYWxzZSA6IG51bGwsXG4gICAgaW5uZXJIVE1MOiBzdmcuaW1hZ2UsXG4gICAgdGl0bGU6ICdJbnNlcnQgaW1hZ2UnLFxuICAgIGhvdGtleTogJ01vZDItU2hpZnQtSScsXG4gIH0sXG4gICdocic6IHtcbiAgICBuYW1lOiAnaHInLFxuICAgIGFjdGlvbjogKGVkaXRvcikgPT4gZWRpdG9yLnBhc3RlKCdcXG4qKipcXG4nKSxcbiAgICBlbmFibGVkOiAoKSA9PiBmYWxzZSxcbiAgICBpbm5lckhUTUw6IHN2Zy5ocixcbiAgICB0aXRsZTogJ0luc2VydCBob3Jpem9udGFsIGxpbmUnLFxuICAgIGhvdGtleTogJ01vZDItU2hpZnQtTCdcbiAgfVxufVxuXG5cbmNsYXNzIENvbW1hbmRCYXIge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHRoaXMuZSA9IG51bGw7XG4gICAgdGhpcy5lZGl0b3IgPSBudWxsO1xuICAgIHRoaXMuY29tbWFuZHMgPSBbXTtcbiAgICB0aGlzLmJ1dHRvbnMgPSB7fTtcbiAgICB0aGlzLnN0YXRlID0ge307XG4gICAgdGhpcy5ob3RrZXlzID0gW107XG5cbiAgICBsZXQgZWxlbWVudCA9IHByb3BzLmVsZW1lbnQ7XG4gICAgaWYgKGVsZW1lbnQgJiYgIWVsZW1lbnQudGFnTmFtZSkge1xuICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByb3BzLmVsZW1lbnQpO1xuICAgIH1cbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5ib2R5OyBcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVDb21tYW5kQmFyRWxlbWVudChlbGVtZW50LCBwcm9wcy5jb21tYW5kcyB8fCBbJ2JvbGQnLCAnaXRhbGljJywgJ3N0cmlrZXRocm91Z2gnLCAnfCcsICdjb2RlJywgJ3wnLCAnaDEnLCAnaDInLCAnfCcsICd1bCcsICdvbCcsICd8JywgJ2Jsb2NrcXVvdGUnLCAnaHInLCAnfCcsICdpbnNlcnRMaW5rJywgJ2luc2VydEltYWdlJ10pO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZSkgPT4gdGhpcy5oYW5kbGVLZXlkb3duKGUpKTtcbiAgICBpZiAocHJvcHMuZWRpdG9yKSB0aGlzLnNldEVkaXRvcihwcm9wcy5lZGl0b3IpO1xuICB9XG5cbiAgY3JlYXRlQ29tbWFuZEJhckVsZW1lbnQocGFyZW50RWxlbWVudCwgY29tbWFuZHMpIHtcbiAgICB0aGlzLmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLmUuY2xhc3NOYW1lID0gJ1RNQ29tbWFuZEJhcic7XG5cbiAgICBmb3IgKGxldCBjb21tYW5kIG9mIGNvbW1hbmRzKSB7XG4gICAgICBpZiAoY29tbWFuZCA9PSAnfCcpIHtcbiAgICAgICAgbGV0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGVsLmNsYXNzTmFtZSA9ICdUTUNvbW1hbmREaXZpZGVyJztcbiAgICAgICAgdGhpcy5lLmFwcGVuZENoaWxkKGVsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBjb21tYW5kTmFtZTtcbiAgICAgICAgaWYgKHR5cGVvZiBjb21tYW5kID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAvLyBSZWZlcmVuY2UgdG8gZGVmYXVsdCBjb21tYW5kXG5cbiAgICAgICAgICBpZiAoRGVmYXVsdENvbW1hbmRzW2NvbW1hbmRdKSB7XG4gICAgICAgICAgICBjb21tYW5kTmFtZSA9IGNvbW1hbmQ7XG4gICAgICAgICAgICB0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXSA9IERlZmF1bHRDb21tYW5kc1tjb21tYW5kTmFtZV07XG5cbiAgICAgICAgICAgIFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbW1hbmQgPT0gXCJvYmplY3RcIiAmJiBjb21tYW5kLm5hbWUpIHtcbiAgICAgICAgICBjb21tYW5kTmFtZSA9IGNvbW1hbmQubmFtZTtcbiAgICAgICAgICB0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXSA9IHt9OyBcbiAgICAgICAgICBpZiAoRGVmYXVsdENvbW1hbmRzW2NvbW1hbmROYW1lXSkgT2JqZWN0LmFzc2lnbih0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXSwgRGVmYXVsdENvbW1hbmRzW2NvbW1hbmROYW1lXSk7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXSwgY29tbWFuZCk7XG4gICAgICAgIFxuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdGl0bGUgPSB0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXS50aXRsZSB8fCBjb21tYW5kTmFtZTtcblxuICAgICAgICBpZiAodGhpcy5jb21tYW5kc1tjb21tYW5kTmFtZV0uaG90a2V5KSB7XG4gICAgICAgICAgY29uc3Qga2V5cyA9IHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdLmhvdGtleS5zcGxpdCgnLScpO1xuICAgICAgICAgIC8vIGNvbnN0cnVjdCBtb2RpZmllcnNcbiAgICAgICAgICBsZXQgbW9kaWZpZXJzID0gW107XG4gICAgICAgICAgbGV0IG1vZGlmaWVyZXhwbGFuYXRpb24gPSBbXTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGtleXNbaV0pIHtcbiAgICAgICAgICAgICAgY2FzZSAnQ3RybCc6IG1vZGlmaWVycy5wdXNoKCdjdHJsS2V5Jyk7IG1vZGlmaWVyZXhwbGFuYXRpb24ucHVzaCgnQ3RybCcpOyBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnQ21kJzogbW9kaWZpZXJzLnB1c2goJ21ldGFLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCfijJgnKTsgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgJ0FsdCc6IG1vZGlmaWVycy5wdXNoKCdhbHRLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCdBbHQnKTsgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgJ09wdGlvbic6IG1vZGlmaWVycy5wdXNoKCdhbHRLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCfijKUnKTsgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgJ1dpbic6IG1vZGlmaWVycy5wdXNoKCdtZXRhS2V5Jyk7IG1vZGlmaWVyZXhwbGFuYXRpb24ucHVzaCgn4oqeIFdpbicpOyBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlICdTaGlmdCc6ICBtb2RpZmllcnMucHVzaCgnc2hpZnRLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCfih6cnKTsgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAnTW9kJzogLy8gTW9kIGlzIGEgY29udmVuaWVuY2UgbWVjaGFuaXNtOiBDdHJsIG9uIFdpbmRvd3MsIENtZCBvbiBNYWNcbiAgICAgICAgICAgICAgICBpZiAoaXNNYWNMaWtlKSB7bW9kaWZpZXJzLnB1c2goJ21ldGFLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCfijJgnKTt9IFxuICAgICAgICAgICAgICAgIGVsc2Uge21vZGlmaWVycy5wdXNoKCdjdHJsS2V5Jyk7IG1vZGlmaWVyZXhwbGFuYXRpb24ucHVzaCgnQ3RybCcpO30gXG4gICAgICAgICAgICAgICAgYnJlYWs7IFxuICAgICAgICAgICAgICBjYXNlICdNb2QyJzogXG4gICAgICAgICAgICAgICAgbW9kaWZpZXJzLnB1c2goJ2FsdEtleScpOyBcbiAgICAgICAgICAgICAgICBpZiAoaXNNYWNMaWtlKSBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ+KMpScpO1xuICAgICAgICAgICAgICAgIGVsc2UgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCdBbHQnKTtcbiAgICAgICAgICAgICAgICBicmVhazsgLy8gTW9kMiBpcyBhIGNvbnZlbmllbmNlIG1lY2hhbmlzbTogQWx0IG9uIFdpbmRvd3MsIE9wdGlvbiBvbiBNYWNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKGtleXNba2V5cy5sZW5ndGggLSAxXSk7XG4gICAgICAgICAgbGV0IGhvdGtleSA9IHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgbW9kaWZpZXJzOiBtb2RpZmllcnMsXG4gICAgICAgICAgICBjb21tYW5kOiBjb21tYW5kTmFtZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIC8vIFRPRE8gUmlnaHQgbm93IHRoaXMgaXMgd29ya2luZyBvbmx5IGZvciBsZXR0ZXJzIGFuZCBudW1iZXJzXG4gICAgICAgICAgaWYgKGtleXNba2V5cy5sZW5ndGggLSAxXS5tYXRjaCgvXlswLTldJC8pKSB7XG4gICAgICAgICAgICBob3RrZXkuY29kZSA9IGBEaWdpdCR7a2V5c1trZXlzLmxlbmd0aCAtIDFdfWA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhvdGtleS5rZXkgPSBrZXlzW2tleXMubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5ob3RrZXlzLnB1c2goaG90a2V5KTtcbiAgICAgICAgICB0aXRsZSA9IHRpdGxlLmNvbmNhdChgICgke21vZGlmaWVyZXhwbGFuYXRpb24uam9pbignKycpfSlgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYnV0dG9uc1tjb21tYW5kTmFtZV0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGhpcy5idXR0b25zW2NvbW1hbmROYW1lXS5jbGFzc05hbWUgPSAnVE1Db21tYW5kQnV0dG9uIFRNQ29tbWFuZEJ1dHRvbl9EaXNhYmxlZCc7XG4gICAgICAgIHRoaXMuYnV0dG9uc1tjb21tYW5kTmFtZV0udGl0bGUgPSB0aXRsZTtcbiAgICAgICAgdGhpcy5idXR0b25zW2NvbW1hbmROYW1lXS5pbm5lckhUTUwgPSB0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXS5pbm5lckhUTUw7XG5cbiAgICAgICAgdGhpcy5idXR0b25zW2NvbW1hbmROYW1lXS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCAoZSkgPT4gdGhpcy5oYW5kbGVDbGljayhjb21tYW5kTmFtZSwgZSkpO1xuICAgICAgICB0aGlzLmUuYXBwZW5kQ2hpbGQodGhpcy5idXR0b25zW2NvbW1hbmROYW1lXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lKTtcbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGNvbW1hbmROYW1lLCBldmVudCkge1xuICAgIGlmICghdGhpcy5lZGl0b3IpIHJldHVybjtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICh0eXBlb2YgdGhpcy5jb21tYW5kc1tjb21tYW5kTmFtZV0uYWN0aW9uID09IFwic3RyaW5nXCIpIHtcbiAgICAgIGlmICh0aGlzLnN0YXRlW2NvbW1hbmROYW1lXSA9PT0gZmFsc2UpIHRoaXMuZWRpdG9yLnNldENvbW1hbmRTdGF0ZShjb21tYW5kTmFtZSwgdHJ1ZSk7XG4gICAgICBlbHNlIHRoaXMuZWRpdG9yLnNldENvbW1hbmRTdGF0ZShjb21tYW5kTmFtZSwgZmFsc2UpOyAgXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5jb21tYW5kc1tjb21tYW5kTmFtZV0uYWN0aW9uID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgdGhpcy5jb21tYW5kc1tjb21tYW5kTmFtZV0uYWN0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICB9XG4gIH1cblxuICBzZXRFZGl0b3IoZWRpdG9yKSB7XG4gICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XG4gICAgZWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3NlbGVjdGlvbicsIChlKSA9PiB0aGlzLmhhbmRsZVNlbGVjdGlvbihlKSk7XG4gIH1cblxuICBoYW5kbGVTZWxlY3Rpb24oZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuY29tbWFuZFN0YXRlKSB7XG4gICAgICBmb3IgKGxldCBjb21tYW5kIGluIHRoaXMuY29tbWFuZHMpIHtcbiAgICAgICAgaWYgKGV2ZW50LmNvbW1hbmRTdGF0ZVtjb21tYW5kXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY29tbWFuZHNbY29tbWFuZF0uZW5hYmxlZCkgdGhpcy5zdGF0ZVtjb21tYW5kXSA9IHRoaXMuY29tbWFuZHNbY29tbWFuZF0uZW5hYmxlZCh0aGlzLmVkaXRvciwgZXZlbnQuZm9jdXMsIGV2ZW50LmFuY2hvcik7XG4gICAgICAgICAgZWxzZSB0aGlzLnN0YXRlW2NvbW1hbmRdID0gZXZlbnQuZm9jdXMgPyBmYWxzZSA6IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zdGF0ZVtjb21tYW5kXSA9IGV2ZW50LmNvbW1hbmRTdGF0ZVtjb21tYW5kXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnN0YXRlW2NvbW1hbmRdID09PSB0cnVlKSB7XG4gICAgICAgICAgdGhpcy5idXR0b25zW2NvbW1hbmRdLmNsYXNzTmFtZSA9ICdUTUNvbW1hbmRCdXR0b24gVE1Db21tYW5kQnV0dG9uX0FjdGl2ZSc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZVtjb21tYW5kXSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICB0aGlzLmJ1dHRvbnNbY29tbWFuZF0uY2xhc3NOYW1lID0gJ1RNQ29tbWFuZEJ1dHRvbiBUTUNvbW1hbmRCdXR0b25fSW5hY3RpdmUnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYnV0dG9uc1tjb21tYW5kXS5jbGFzc05hbWUgPSAgJ1RNQ29tbWFuZEJ1dHRvbiBUTUNvbW1hbmRCdXR0b25fRGlzYWJsZWQnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlS2V5ZG93bihldmVudCkge1xuICAgIG91dGVyOiBmb3IgKGxldCBob3RrZXkgb2YgdGhpcy5ob3RrZXlzKSB7XG4gICAgICBpZiAoKGhvdGtleS5rZXkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT0gaG90a2V5LmtleSkgfHwgKGhvdGtleS5jb2RlICYmIGV2ZW50LmNvZGUgPT0gaG90a2V5LmNvZGUpKSB7XG4gICAgICAgIC8vIEtleSBtYXRjaGVzIGhvdGtleS4gTG9vayBmb3IgYW55IHJlcXVpcmVkIG1vZGlmaWVyIHRoYXQgd2Fzbid0IHByZXNzZWRcbiAgICAgICAgZm9yIChsZXQgbW9kaWZpZXIgb2YgaG90a2V5Lm1vZGlmaWVycykge1xuICAgICAgICAgIGlmICghZXZlbnRbbW9kaWZpZXJdKSBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgfVxuICAgICAgICAvLyBFdmVyeXRoaW5nIG1hdGNoZXMuXG4gICAgICAgIHRoaXMuaGFuZGxlQ2xpY2soaG90a2V5LmNvbW1hbmQsIGV2ZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDb21tYW5kQmFyOyIsIid1c2Ugc3RyaWN0JztcbnZhciBjaGVjayA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgJiYgaXQuTWF0aCA9PT0gTWF0aCAmJiBpdDtcbn07XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5tb2R1bGUuZXhwb3J0cyA9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1nbG9iYWwtdGhpcyAtLSBzYWZlXG4gIGNoZWNrKHR5cGVvZiBnbG9iYWxUaGlzID09ICdvYmplY3QnICYmIGdsb2JhbFRoaXMpIHx8XG4gIGNoZWNrKHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgd2luZG93KSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZikgfHxcbiAgY2hlY2sodHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuYyAtLSBmYWxsYmFja1xuICAoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSkoKSB8fCB0aGlzIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZXhlYygpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIERldGVjdCBJRTgncyBpbmNvbXBsZXRlIGRlZmluZVByb3BlcnR5IGltcGxlbWVudGF0aW9uXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgMSwgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSlbMV0gIT09IDc7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1mdW5jdGlvbi1wcm90b3R5cGUtYmluZCAtLSBzYWZlXG4gIHZhciB0ZXN0ID0gKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSkuYmluZCgpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIC0tIHNhZmVcbiAgcmV0dXJuIHR5cGVvZiB0ZXN0ICE9ICdmdW5jdGlvbicgfHwgdGVzdC5oYXNPd25Qcm9wZXJ0eSgncHJvdG90eXBlJyk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG52YXIgY2FsbCA9IEZ1bmN0aW9uUHJvdG90eXBlLmNhbGw7XG52YXIgdW5jdXJyeVRoaXNXaXRoQmluZCA9IE5BVElWRV9CSU5EICYmIEZ1bmN0aW9uUHJvdG90eXBlLmJpbmQuYmluZChjYWxsLCBjYWxsKTtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfQklORCA/IHVuY3VycnlUaGlzV2l0aEJpbmQgOiBmdW5jdGlvbiAoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gY2FsbC5hcHBseShmbiwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZG9jdW1lbnRBbGwgPSB0eXBlb2YgZG9jdW1lbnQgPT0gJ29iamVjdCcgJiYgZG9jdW1lbnQuYWxsO1xuXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLUlzSFRNTEREQS1pbnRlcm5hbC1zbG90XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby10eXBlb2YtdW5kZWZpbmVkIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG52YXIgSVNfSFRNTEREQSA9IHR5cGVvZiBkb2N1bWVudEFsbCA9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudEFsbCAhPT0gdW5kZWZpbmVkO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYWxsOiBkb2N1bWVudEFsbCxcbiAgSVNfSFRNTEREQTogSVNfSFRNTEREQVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZG9jdW1lbnRBbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtYWxsJyk7XG5cbnZhciBkb2N1bWVudEFsbCA9ICRkb2N1bWVudEFsbC5hbGw7XG5cbi8vIGBJc0NhbGxhYmxlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNjYWxsYWJsZVxubW9kdWxlLmV4cG9ydHMgPSAkZG9jdW1lbnRBbGwuSVNfSFRNTEREQSA/IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09ICdmdW5jdGlvbicgfHwgYXJndW1lbnQgPT09IGRvY3VtZW50QWxsO1xufSA6IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09ICdmdW5jdGlvbic7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gd2UgY2FuJ3QgdXNlIGp1c3QgYGl0ID09IG51bGxgIHNpbmNlIG9mIGBkb2N1bWVudC5hbGxgIHNwZWNpYWwgY2FzZVxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1Jc0hUTUxEREEtaW50ZXJuYWwtc2xvdC1hZWNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA9PT0gbnVsbCB8fCBpdCA9PT0gdW5kZWZpbmVkO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc051bGxPclVuZGVmaW5lZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYFJlcXVpcmVPYmplY3RDb2VyY2libGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZXF1aXJlb2JqZWN0Y29lcmNpYmxlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoaXQpKSB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xuXG4vLyBgVG9PYmplY3RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b29iamVjdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuICRPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudCkpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcblxudmFyIGhhc093blByb3BlcnR5ID0gdW5jdXJyeVRoaXMoe30uaGFzT3duUHJvcGVydHkpO1xuXG4vLyBgSGFzT3duUHJvcGVydHlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1oYXNvd25wcm9wZXJ0eVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1oYXNvd24gLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuaGFzT3duIHx8IGZ1bmN0aW9uIGhhc093bihpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eSh0b09iamVjdChpdCksIGtleSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldERlc2NyaXB0b3IgPSBERVNDUklQVE9SUyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG52YXIgRVhJU1RTID0gaGFzT3duKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpO1xuLy8gYWRkaXRpb25hbCBwcm90ZWN0aW9uIGZyb20gbWluaWZpZWQgLyBtYW5nbGVkIC8gZHJvcHBlZCBmdW5jdGlvbiBuYW1lc1xudmFyIFBST1BFUiA9IEVYSVNUUyAmJiAoZnVuY3Rpb24gc29tZXRoaW5nKCkgeyAvKiBlbXB0eSAqLyB9KS5uYW1lID09PSAnc29tZXRoaW5nJztcbnZhciBDT05GSUdVUkFCTEUgPSBFWElTVFMgJiYgKCFERVNDUklQVE9SUyB8fCAoREVTQ1JJUFRPUlMgJiYgZ2V0RGVzY3JpcHRvcihGdW5jdGlvblByb3RvdHlwZSwgJ25hbWUnKS5jb25maWd1cmFibGUpKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEVYSVNUUzogRVhJU1RTLFxuICBQUk9QRVI6IFBST1BFUixcbiAgQ09ORklHVVJBQkxFOiBDT05GSUdVUkFCTEVcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICB0cnkge1xuICAgIGRlZmluZVByb3BlcnR5KGdsb2JhbCwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBnbG9iYWxba2V5XSA9IHZhbHVlO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGRlZmluZUdsb2JhbFByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHknKTtcblxudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgZGVmaW5lR2xvYmFsUHJvcGVydHkoU0hBUkVELCB7fSk7XG5cbm1vZHVsZS5leHBvcnRzID0gc3RvcmU7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG52YXIgZnVuY3Rpb25Ub1N0cmluZyA9IHVuY3VycnlUaGlzKEZ1bmN0aW9uLnRvU3RyaW5nKTtcblxuLy8gdGhpcyBoZWxwZXIgYnJva2VuIGluIGBjb3JlLWpzQDMuNC4xLTMuNC40YCwgc28gd2UgY2FuJ3QgdXNlIGBzaGFyZWRgIGhlbHBlclxuaWYgKCFpc0NhbGxhYmxlKHN0b3JlLmluc3BlY3RTb3VyY2UpKSB7XG4gIHN0b3JlLmluc3BlY3RTb3VyY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb25Ub1N0cmluZyhpdCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RvcmUuaW5zcGVjdFNvdXJjZTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQ2FsbGFibGUoV2Vha01hcCkgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KFN0cmluZyhXZWFrTWFwKSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyICRkb2N1bWVudEFsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1hbGwnKTtcblxudmFyIGRvY3VtZW50QWxsID0gJGRvY3VtZW50QWxsLmFsbDtcblxubW9kdWxlLmV4cG9ydHMgPSAkZG9jdW1lbnRBbGwuSVNfSFRNTEREQSA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiBpc0NhbGxhYmxlKGl0KSB8fCBpdCA9PT0gZG9jdW1lbnRBbGw7XG59IDogZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IGlzQ2FsbGFibGUoaXQpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciBkb2N1bWVudCA9IGdsb2JhbC5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIEVYSVNUUyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEVYSVNUUyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG5cbi8vIFRoYW5rcyB0byBJRTggZm9yIGl0cyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH1cbiAgfSkuYSAhPT0gNztcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gVjggfiBDaHJvbWUgMzYtXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMzM0XG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgJ3Byb3RvdHlwZScsIHtcbiAgICB2YWx1ZTogNDIsXG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pLnByb3RvdHlwZSAhPT0gNDI7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyICRTdHJpbmcgPSBTdHJpbmc7XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogVHlwZShhcmd1bWVudCkgaXMgT2JqZWN0YFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzT2JqZWN0KGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcigkU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGFuIG9iamVjdCcpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgY2FsbCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9CSU5EID8gY2FsbC5iaW5kKGNhbGwpIDogZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FsbC5hcHBseShjYWxsLCBhcmd1bWVudHMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgYUZ1bmN0aW9uID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBpc0NhbGxhYmxlKGFyZ3VtZW50KSA/IGFyZ3VtZW50IDogdW5kZWZpbmVkO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZXNwYWNlLCBtZXRob2QpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gYUZ1bmN0aW9uKGdsb2JhbFtuYW1lc3BhY2VdKSA6IGdsb2JhbFtuYW1lc3BhY2VdICYmIGdsb2JhbFtuYW1lc3BhY2VdW21ldGhvZF07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVuY3VycnlUaGlzKHt9LmlzUHJvdG90eXBlT2YpO1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgbmF2aWdhdG9yICE9ICd1bmRlZmluZWQnICYmIFN0cmluZyhuYXZpZ2F0b3IudXNlckFnZW50KSB8fCAnJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50Jyk7XG5cbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgRGVubyA9IGdsb2JhbC5EZW5vO1xudmFyIHZlcnNpb25zID0gcHJvY2VzcyAmJiBwcm9jZXNzLnZlcnNpb25zIHx8IERlbm8gJiYgRGVuby52ZXJzaW9uO1xudmFyIHY4ID0gdmVyc2lvbnMgJiYgdmVyc2lvbnMudjg7XG52YXIgbWF0Y2gsIHZlcnNpb247XG5cbmlmICh2OCkge1xuICBtYXRjaCA9IHY4LnNwbGl0KCcuJyk7XG4gIC8vIGluIG9sZCBDaHJvbWUsIHZlcnNpb25zIG9mIFY4IGlzbid0IFY4ID0gQ2hyb21lIC8gMTBcbiAgLy8gYnV0IHRoZWlyIGNvcnJlY3QgdmVyc2lvbnMgYXJlIG5vdCBpbnRlcmVzdGluZyBmb3IgdXNcbiAgdmVyc2lvbiA9IG1hdGNoWzBdID4gMCAmJiBtYXRjaFswXSA8IDQgPyAxIDogKyhtYXRjaFswXSArIG1hdGNoWzFdKTtcbn1cblxuLy8gQnJvd3NlckZTIE5vZGVKUyBgcHJvY2Vzc2AgcG9seWZpbGwgaW5jb3JyZWN0bHkgc2V0IGAudjhgIHRvIGAwLjBgXG4vLyBzbyBjaGVjayBgdXNlckFnZW50YCBldmVuIGlmIGAudjhgIGV4aXN0cywgYnV0IDBcbmlmICghdmVyc2lvbiAmJiB1c2VyQWdlbnQpIHtcbiAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0VkZ2VcXC8oXFxkKykvKTtcbiAgaWYgKCFtYXRjaCB8fCBtYXRjaFsxXSA+PSA3NCkge1xuICAgIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9DaHJvbWVcXC8oXFxkKykvKTtcbiAgICBpZiAobWF0Y2gpIHZlcnNpb24gPSArbWF0Y2hbMV07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2ZXJzaW9uO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbicpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG52YXIgJFN0cmluZyA9IGdsb2JhbC5TdHJpbmc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlzeW1ib2xzIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG5tb2R1bGUuZXhwb3J0cyA9ICEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgc3ltYm9sID0gU3ltYm9sKCdzeW1ib2wgZGV0ZWN0aW9uJyk7XG4gIC8vIENocm9tZSAzOCBTeW1ib2wgaGFzIGluY29ycmVjdCB0b1N0cmluZyBjb252ZXJzaW9uXG4gIC8vIGBnZXQtb3duLXByb3BlcnR5LXN5bWJvbHNgIHBvbHlmaWxsIHN5bWJvbHMgY29udmVydGVkIHRvIG9iamVjdCBhcmUgbm90IFN5bWJvbCBpbnN0YW5jZXNcbiAgLy8gbmI6IERvIG5vdCBjYWxsIGBTdHJpbmdgIGRpcmVjdGx5IHRvIGF2b2lkIHRoaXMgYmVpbmcgb3B0aW1pemVkIG91dCB0byBgc3ltYm9sKycnYCB3aGljaCB3aWxsLFxuICAvLyBvZiBjb3Vyc2UsIGZhaWwuXG4gIHJldHVybiAhJFN0cmluZyhzeW1ib2wpIHx8ICEoT2JqZWN0KHN5bWJvbCkgaW5zdGFuY2VvZiBTeW1ib2wpIHx8XG4gICAgLy8gQ2hyb21lIDM4LTQwIHN5bWJvbHMgYXJlIG5vdCBpbmhlcml0ZWQgZnJvbSBET00gY29sbGVjdGlvbnMgcHJvdG90eXBlcyB0byBpbnN0YW5jZXNcbiAgICAhU3ltYm9sLnNoYW0gJiYgVjhfVkVSU0lPTiAmJiBWOF9WRVJTSU9OIDwgNDE7XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIGVzL25vLXN5bWJvbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZyAqL1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9TWU1CT0xcbiAgJiYgIVN5bWJvbC5zaGFtXG4gICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT0gJ3N5bWJvbCc7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbm1vZHVsZS5leHBvcnRzID0gVVNFX1NZTUJPTF9BU19VSUQgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJztcbn0gOiBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyICRTeW1ib2wgPSBnZXRCdWlsdEluKCdTeW1ib2wnKTtcbiAgcmV0dXJuIGlzQ2FsbGFibGUoJFN5bWJvbCkgJiYgaXNQcm90b3R5cGVPZigkU3ltYm9sLnByb3RvdHlwZSwgJE9iamVjdChpdCkpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkU3RyaW5nID0gU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB0cnkge1xuICAgIHJldHVybiAkU3RyaW5nKGFyZ3VtZW50KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gJ09iamVjdCc7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHRyeVRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmcnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBBc3NlcnQ6IElzQ2FsbGFibGUoYXJndW1lbnQpIGlzIHRydWVgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNDYWxsYWJsZShhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IodHJ5VG9TdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYSBmdW5jdGlvbicpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG5cbi8vIGBHZXRNZXRob2RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXRtZXRob2Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFYsIFApIHtcbiAgdmFyIGZ1bmMgPSBWW1BdO1xuICByZXR1cm4gaXNOdWxsT3JVbmRlZmluZWQoZnVuYykgPyB1bmRlZmluZWQgOiBhQ2FsbGFibGUoZnVuYyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBPcmRpbmFyeVRvUHJpbWl0aXZlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb3JkaW5hcnl0b3ByaW1pdGl2ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIHByZWYpIHtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChwcmVmID09PSAnc3RyaW5nJyAmJiBpc0NhbGxhYmxlKGZuID0gaW5wdXQudG9TdHJpbmcpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAoaXNDYWxsYWJsZShmbiA9IGlucHV0LnZhbHVlT2YpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAocHJlZiAhPT0gJ3N0cmluZycgJiYgaXNDYWxsYWJsZShmbiA9IGlucHV0LnRvU3RyaW5nKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHt9KTtcbn0pKCd2ZXJzaW9ucycsIFtdKS5wdXNoKHtcbiAgdmVyc2lvbjogJzMuMzMuMCcsXG4gIG1vZGU6IElTX1BVUkUgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxNC0yMDIzIERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJyxcbiAgbGljZW5zZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuMzMuMC9MSUNFTlNFJyxcbiAgc291cmNlOiAnaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMnXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxudmFyIGlkID0gMDtcbnZhciBwb3N0Zml4ID0gTWF0aC5yYW5kb20oKTtcbnZhciB0b1N0cmluZyA9IHVuY3VycnlUaGlzKDEuMC50b1N0cmluZyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnICsgKGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXkpICsgJylfJyArIHRvU3RyaW5nKCsraWQgKyBwb3N0Zml4LCAzNik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyIFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgV2VsbEtub3duU3ltYm9sc1N0b3JlID0gc2hhcmVkKCd3a3MnKTtcbnZhciBjcmVhdGVXZWxsS25vd25TeW1ib2wgPSBVU0VfU1lNQk9MX0FTX1VJRCA/IFN5bWJvbFsnZm9yJ10gfHwgU3ltYm9sIDogU3ltYm9sICYmIFN5bWJvbC53aXRob3V0U2V0dGVyIHx8IHVpZDtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICBpZiAoIWhhc093bihXZWxsS25vd25TeW1ib2xzU3RvcmUsIG5hbWUpKSB7XG4gICAgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID0gTkFUSVZFX1NZTUJPTCAmJiBoYXNPd24oU3ltYm9sLCBuYW1lKVxuICAgICAgPyBTeW1ib2xbbmFtZV1cbiAgICAgIDogY3JlYXRlV2VsbEtub3duU3ltYm9sKCdTeW1ib2wuJyArIG5hbWUpO1xuICB9IHJldHVybiBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG52YXIgb3JkaW5hcnlUb1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vcmRpbmFyeS10by1wcmltaXRpdmUnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG52YXIgVE9fUFJJTUlUSVZFID0gd2VsbEtub3duU3ltYm9sKCd0b1ByaW1pdGl2ZScpO1xuXG4vLyBgVG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b3ByaW1pdGl2ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIHByZWYpIHtcbiAgaWYgKCFpc09iamVjdChpbnB1dCkgfHwgaXNTeW1ib2woaW5wdXQpKSByZXR1cm4gaW5wdXQ7XG4gIHZhciBleG90aWNUb1ByaW0gPSBnZXRNZXRob2QoaW5wdXQsIFRPX1BSSU1JVElWRSk7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChleG90aWNUb1ByaW0pIHtcbiAgICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ2RlZmF1bHQnO1xuICAgIHJlc3VsdCA9IGNhbGwoZXhvdGljVG9QcmltLCBpbnB1dCwgcHJlZik7XG4gICAgaWYgKCFpc09iamVjdChyZXN1bHQpIHx8IGlzU3ltYm9sKHJlc3VsdCkpIHJldHVybiByZXN1bHQ7XG4gICAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG4gIH1cbiAgaWYgKHByZWYgPT09IHVuZGVmaW5lZCkgcHJlZiA9ICdudW1iZXInO1xuICByZXR1cm4gb3JkaW5hcnlUb1ByaW1pdGl2ZShpbnB1dCwgcHJlZik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByaW1pdGl2ZScpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xuXG4vLyBgVG9Qcm9wZXJ0eUtleWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJvcGVydHlrZXlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBrZXkgPSB0b1ByaW1pdGl2ZShhcmd1bWVudCwgJ3N0cmluZycpO1xuICByZXR1cm4gaXNTeW1ib2woa2V5KSA/IGtleSA6IGtleSArICcnO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG52YXIgVjhfUFJPVE9UWVBFX0RFRklORV9CVUcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBFTlVNRVJBQkxFID0gJ2VudW1lcmFibGUnO1xudmFyIENPTkZJR1VSQUJMRSA9ICdjb25maWd1cmFibGUnO1xudmFyIFdSSVRBQkxFID0gJ3dyaXRhYmxlJztcblxuLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0eWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0eVxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyBWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA/IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKHR5cGVvZiBPID09PSAnZnVuY3Rpb24nICYmIFAgPT09ICdwcm90b3R5cGUnICYmICd2YWx1ZScgaW4gQXR0cmlidXRlcyAmJiBXUklUQUJMRSBpbiBBdHRyaWJ1dGVzICYmICFBdHRyaWJ1dGVzW1dSSVRBQkxFXSkge1xuICAgIHZhciBjdXJyZW50ID0gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgICBpZiAoY3VycmVudCAmJiBjdXJyZW50W1dSSVRBQkxFXSkge1xuICAgICAgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gICAgICBBdHRyaWJ1dGVzID0ge1xuICAgICAgICBjb25maWd1cmFibGU6IENPTkZJR1VSQUJMRSBpbiBBdHRyaWJ1dGVzID8gQXR0cmlidXRlc1tDT05GSUdVUkFCTEVdIDogY3VycmVudFtDT05GSUdVUkFCTEVdLFxuICAgICAgICBlbnVtZXJhYmxlOiBFTlVNRVJBQkxFIGluIEF0dHJpYnV0ZXMgPyBBdHRyaWJ1dGVzW0VOVU1FUkFCTEVdIDogY3VycmVudFtFTlVNRVJBQkxFXSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlXG4gICAgICB9O1xuICAgIH1cbiAgfSByZXR1cm4gJGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xufSA6ICRkZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgbmV3ICRUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xuXG52YXIga2V5cyA9IHNoYXJlZCgna2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIGtleXNba2V5XSB8fCAoa2V5c1trZXldID0gdWlkKGtleSkpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfV0VBS19NQVAgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2Vhay1tYXAtYmFzaWMtZGV0ZWN0aW9uJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcblxudmFyIE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEID0gJ09iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkJztcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcbnZhciBzZXQsIGdldCwgaGFzO1xuXG52YXIgZW5mb3JjZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaGFzKGl0KSA/IGdldChpdCkgOiBzZXQoaXQsIHt9KTtcbn07XG5cbnZhciBnZXR0ZXJGb3IgPSBmdW5jdGlvbiAoVFlQRSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGl0KSB7XG4gICAgdmFyIHN0YXRlO1xuICAgIGlmICghaXNPYmplY3QoaXQpIHx8IChzdGF0ZSA9IGdldChpdCkpLnR5cGUgIT09IFRZUEUpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgJyArIFRZUEUgKyAnIHJlcXVpcmVkJyk7XG4gICAgfSByZXR1cm4gc3RhdGU7XG4gIH07XG59O1xuXG5pZiAoTkFUSVZFX1dFQUtfTUFQIHx8IHNoYXJlZC5zdGF0ZSkge1xuICB2YXIgc3RvcmUgPSBzaGFyZWQuc3RhdGUgfHwgKHNoYXJlZC5zdGF0ZSA9IG5ldyBXZWFrTWFwKCkpO1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1zZWxmLWFzc2lnbiAtLSBwcm90b3R5cGUgbWV0aG9kcyBwcm90ZWN0aW9uICovXG4gIHN0b3JlLmdldCA9IHN0b3JlLmdldDtcbiAgc3RvcmUuaGFzID0gc3RvcmUuaGFzO1xuICBzdG9yZS5zZXQgPSBzdG9yZS5zZXQ7XG4gIC8qIGVzbGludC1lbmFibGUgbm8tc2VsZi1hc3NpZ24gLS0gcHJvdG90eXBlIG1ldGhvZHMgcHJvdGVjdGlvbiAqL1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaWYgKHN0b3JlLmhhcyhpdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIHN0b3JlLnNldChpdCwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHN0b3JlLmdldChpdCkgfHwge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBzdG9yZS5oYXMoaXQpO1xuICB9O1xufSBlbHNlIHtcbiAgdmFyIFNUQVRFID0gc2hhcmVkS2V5KCdzdGF0ZScpO1xuICBoaWRkZW5LZXlzW1NUQVRFXSA9IHRydWU7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAoaGFzT3duKGl0LCBTVEFURSkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShpdCwgU1RBVEUsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBoYXNPd24oaXQsIFNUQVRFKSA/IGl0W1NUQVRFXSA6IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaGFzT3duKGl0LCBTVEFURSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgZ2V0OiBnZXQsXG4gIGhhczogaGFzLFxuICBlbmZvcmNlOiBlbmZvcmNlLFxuICBnZXR0ZXJGb3I6IGdldHRlckZvclxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZScpLkNPTkZJR1VSQUJMRTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xuXG52YXIgZW5mb3JjZUludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmVuZm9yY2U7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0O1xudmFyICRTdHJpbmcgPSBTdHJpbmc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcbnZhciByZXBsYWNlID0gdW5jdXJyeVRoaXMoJycucmVwbGFjZSk7XG52YXIgam9pbiA9IHVuY3VycnlUaGlzKFtdLmpvaW4pO1xuXG52YXIgQ09ORklHVVJBQkxFX0xFTkdUSCA9IERFU0NSSVBUT1JTICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sICdsZW5ndGgnLCB7IHZhbHVlOiA4IH0pLmxlbmd0aCAhPT0gODtcbn0pO1xuXG52YXIgVEVNUExBVEUgPSBTdHJpbmcoU3RyaW5nKS5zcGxpdCgnU3RyaW5nJyk7XG5cbnZhciBtYWtlQnVpbHRJbiA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHZhbHVlLCBuYW1lLCBvcHRpb25zKSB7XG4gIGlmIChzdHJpbmdTbGljZSgkU3RyaW5nKG5hbWUpLCAwLCA3KSA9PT0gJ1N5bWJvbCgnKSB7XG4gICAgbmFtZSA9ICdbJyArIHJlcGxhY2UoJFN0cmluZyhuYW1lKSwgL15TeW1ib2xcXCgoW14pXSopXFwpLywgJyQxJykgKyAnXSc7XG4gIH1cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5nZXR0ZXIpIG5hbWUgPSAnZ2V0ICcgKyBuYW1lO1xuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnNldHRlcikgbmFtZSA9ICdzZXQgJyArIG5hbWU7XG4gIGlmICghaGFzT3duKHZhbHVlLCAnbmFtZScpIHx8IChDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSAmJiB2YWx1ZS5uYW1lICE9PSBuYW1lKSkge1xuICAgIGlmIChERVNDUklQVE9SUykgZGVmaW5lUHJvcGVydHkodmFsdWUsICduYW1lJywgeyB2YWx1ZTogbmFtZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICAgIGVsc2UgdmFsdWUubmFtZSA9IG5hbWU7XG4gIH1cbiAgaWYgKENPTkZJR1VSQUJMRV9MRU5HVEggJiYgb3B0aW9ucyAmJiBoYXNPd24ob3B0aW9ucywgJ2FyaXR5JykgJiYgdmFsdWUubGVuZ3RoICE9PSBvcHRpb25zLmFyaXR5KSB7XG4gICAgZGVmaW5lUHJvcGVydHkodmFsdWUsICdsZW5ndGgnLCB7IHZhbHVlOiBvcHRpb25zLmFyaXR5IH0pO1xuICB9XG4gIHRyeSB7XG4gICAgaWYgKG9wdGlvbnMgJiYgaGFzT3duKG9wdGlvbnMsICdjb25zdHJ1Y3RvcicpICYmIG9wdGlvbnMuY29uc3RydWN0b3IpIHtcbiAgICAgIGlmIChERVNDUklQVE9SUykgZGVmaW5lUHJvcGVydHkodmFsdWUsICdwcm90b3R5cGUnLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTtcbiAgICAvLyBpbiBWOCB+IENocm9tZSA1MywgcHJvdG90eXBlcyBvZiBzb21lIG1ldGhvZHMsIGxpa2UgYEFycmF5LnByb3RvdHlwZS52YWx1ZXNgLCBhcmUgbm9uLXdyaXRhYmxlXG4gICAgfSBlbHNlIGlmICh2YWx1ZS5wcm90b3R5cGUpIHZhbHVlLnByb3RvdHlwZSA9IHVuZGVmaW5lZDtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICB2YXIgc3RhdGUgPSBlbmZvcmNlSW50ZXJuYWxTdGF0ZSh2YWx1ZSk7XG4gIGlmICghaGFzT3duKHN0YXRlLCAnc291cmNlJykpIHtcbiAgICBzdGF0ZS5zb3VyY2UgPSBqb2luKFRFTVBMQVRFLCB0eXBlb2YgbmFtZSA9PSAnc3RyaW5nJyA/IG5hbWUgOiAnJyk7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcblxuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXh0ZW5kLW5hdGl2ZSAtLSByZXF1aXJlZFxuRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nID0gbWFrZUJ1aWx0SW4oZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiBpc0NhbGxhYmxlKHRoaXMpICYmIGdldEludGVybmFsU3RhdGUodGhpcykuc291cmNlIHx8IGluc3BlY3RTb3VyY2UodGhpcyk7XG59LCAndG9TdHJpbmcnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBtYWtlQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYWtlLWJ1aWx0LWluJyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIG5hbWUsIGRlc2NyaXB0b3IpIHtcbiAgaWYgKGRlc2NyaXB0b3IuZ2V0KSBtYWtlQnVpbHRJbihkZXNjcmlwdG9yLmdldCwgbmFtZSwgeyBnZXR0ZXI6IHRydWUgfSk7XG4gIGlmIChkZXNjcmlwdG9yLnNldCkgbWFrZUJ1aWx0SW4oZGVzY3JpcHRvci5zZXQsIG5hbWUsIHsgc2V0dGVyOiB0cnVlIH0pO1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHkuZih0YXJnZXQsIG5hbWUsIGRlc2NyaXB0b3IpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxuLy8gYFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3NgIGdldHRlciBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXQtcmVnZXhwLnByb3RvdHlwZS5mbGFnc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0ID0gYW5PYmplY3QodGhpcyk7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgaWYgKHRoYXQuaGFzSW5kaWNlcykgcmVzdWx0ICs9ICdkJztcbiAgaWYgKHRoYXQuZ2xvYmFsKSByZXN1bHQgKz0gJ2cnO1xuICBpZiAodGhhdC5pZ25vcmVDYXNlKSByZXN1bHQgKz0gJ2knO1xuICBpZiAodGhhdC5tdWx0aWxpbmUpIHJlc3VsdCArPSAnbSc7XG4gIGlmICh0aGF0LmRvdEFsbCkgcmVzdWx0ICs9ICdzJztcbiAgaWYgKHRoYXQudW5pY29kZSkgcmVzdWx0ICs9ICd1JztcbiAgaWYgKHRoYXQudW5pY29kZVNldHMpIHJlc3VsdCArPSAndic7XG4gIGlmICh0aGF0LnN0aWNreSkgcmVzdWx0ICs9ICd5JztcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lQnVpbHRJbkFjY2Vzc29yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3NvcicpO1xudmFyIHJlZ0V4cEZsYWdzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1mbGFncycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIGJhYmVsLW1pbmlmeSBhbmQgQ2xvc3VyZSBDb21waWxlciB0cmFuc3BpbGVzIFJlZ0V4cCgnLicsICdkJykgLT4gLy4vZCBhbmQgaXQgY2F1c2VzIFN5bnRheEVycm9yXG52YXIgUmVnRXhwID0gZ2xvYmFsLlJlZ0V4cDtcbnZhciBSZWdFeHBQcm90b3R5cGUgPSBSZWdFeHAucHJvdG90eXBlO1xuXG52YXIgRk9SQ0VEID0gREVTQ1JJUFRPUlMgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgSU5ESUNFU19TVVBQT1JUID0gdHJ1ZTtcbiAgdHJ5IHtcbiAgICBSZWdFeHAoJy4nLCAnZCcpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIElORElDRVNfU1VQUE9SVCA9IGZhbHNlO1xuICB9XG5cbiAgdmFyIE8gPSB7fTtcbiAgLy8gbW9kZXJuIFY4IGJ1Z1xuICB2YXIgY2FsbHMgPSAnJztcbiAgdmFyIGV4cGVjdGVkID0gSU5ESUNFU19TVVBQT1JUID8gJ2RnaW1zeScgOiAnZ2ltc3knO1xuXG4gIHZhciBhZGRHZXR0ZXIgPSBmdW5jdGlvbiAoa2V5LCBjaHIpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywga2V5LCB7IGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgY2FsbHMgKz0gY2hyO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSB9KTtcbiAgfTtcblxuICB2YXIgcGFpcnMgPSB7XG4gICAgZG90QWxsOiAncycsXG4gICAgZ2xvYmFsOiAnZycsXG4gICAgaWdub3JlQ2FzZTogJ2knLFxuICAgIG11bHRpbGluZTogJ20nLFxuICAgIHN0aWNreTogJ3knXG4gIH07XG5cbiAgaWYgKElORElDRVNfU1VQUE9SVCkgcGFpcnMuaGFzSW5kaWNlcyA9ICdkJztcblxuICBmb3IgKHZhciBrZXkgaW4gcGFpcnMpIGFkZEdldHRlcihrZXksIHBhaXJzW2tleV0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbiAgdmFyIHJlc3VsdCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwUHJvdG90eXBlLCAnZmxhZ3MnKS5nZXQuY2FsbChPKTtcblxuICByZXR1cm4gcmVzdWx0ICE9PSBleHBlY3RlZCB8fCBjYWxscyAhPT0gZXhwZWN0ZWQ7XG59KTtcblxuLy8gYFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3NgIGdldHRlclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXQtcmVnZXhwLnByb3RvdHlwZS5mbGFnc1xuaWYgKEZPUkNFRCkgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFJlZ0V4cFByb3RvdHlwZSwgJ2ZsYWdzJywge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGdldDogcmVnRXhwRmxhZ3Ncbn0pO1xuIiwiLy8gY29uc3QgcmVwbGFjZW1lbnRzID0ge1xuLy8gICBBU0NJSVB1bmN0dWF0aW9uOiAnIVwiIyQlJlxcJygpKissXFxcXC0uLzo7PD0+P0BcXFxcW1xcXFxdXl9ge3x9ficsXG4vLyAgIFRyaWdnZXJDaGFyczogJ2BfXFwqXFxbXFxdXFwoXFwpJyxcbi8vICAgU2NoZW1lOiBgW0EtWmEtel1bQS1aYS16MC05XFwrXFwuXFwtXXsxLDMxfWAsXG4vLyAgIEVtYWlsOiBgW2EtekEtWjAtOS4hIyQlJicqKy89P15fXFxge3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcXFxcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqYCwgLy8gRnJvbSBDb21tb25NYXJrIHNwZWNcblxuLy8gfVxuY29uc3QgcmVwbGFjZW1lbnRzID0ge1xuICBBU0NJSVB1bmN0dWF0aW9uOiAvWyFcIiMkJSYnKCkqKyxcXC0uLzo7PD0+P0BbXFxdXl9ge3x9flxcXFxdLywgIFxuICBOb3RUcmlnZ2VyQ2hhcjogL1teYF8qW1xcXSgpPD4hfl0vLFxuICBTY2hlbWU6IC9bQS1aYS16XVtBLVphLXowLTkrLi1dezEsMzF9LyxcbiAgRW1haWw6IC9bYS16QS1aMC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcXC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKi8sIC8vIEZyb20gQ29tbW9uTWFyayBzcGVjXG4gIEhUTUxPcGVuVGFnOiAvPEhUTUxUYWdOYW1lKD86SFRNTEF0dHJpYnV0ZSkqXFxzKlxcLz8+LyxcbiAgSFRNTENsb3NlVGFnOiAvPFxcL0hUTUxUYWdOYW1lXFxzKj4vLFxuICBIVE1MVGFnTmFtZTogL1tBLVphLXpdW0EtWmEtejAtOS1dKi8sIFxuICBIVE1MQ29tbWVudDogLzwhLS0oPzpbXj4tXXwoPzpbXj4tXSg/OlteLV18LVteLV0pKlteLV0pKS0tPi8sXG4gIEhUTUxQSTogLzxcXD8oPzp8LnwoPzpbXj9dfFxcP1tePl0pKilcXD8+LyxcbiAgSFRNTERlY2xhcmF0aW9uOiAvPCFbQS1aXStcXHNbXj5dKj4vLFxuICBIVE1MQ0RBVEE6IC88IVxcW0NEQVRBXFxbLio/XFxdXFxdPi8sXG4gIEhUTUxBdHRyaWJ1dGU6IC9cXHMrW0EtWmEtel86XVtBLVphLXowLTlfLjotXSooPzpIVE1MQXR0VmFsdWUpPy8sXG4gIEhUTUxBdHRWYWx1ZTogL1xccyo9XFxzKig/Oig/OidbXiddKicpfCg/OlwiW15cIl0qXCIpfCg/OlteXFxzXCInPTw+YF0rKSkvLFxuICBLbm93blRhZzogL2FkZHJlc3N8YXJ0aWNsZXxhc2lkZXxiYXNlfGJhc2Vmb250fGJsb2NrcXVvdGV8Ym9keXxjYXB0aW9ufGNlbnRlcnxjb2x8Y29sZ3JvdXB8ZGR8ZGV0YWlsc3xkaWFsb2d8ZGlyfGRpdnxkbHxkdHxmaWVsZHNldHxmaWdjYXB0aW9ufGZpZ3VyZXxmb290ZXJ8Zm9ybXxmcmFtZXxmcmFtZXNldHxoMXxoMnxoM3xoNHxoNXxoNnxoZWFkfGhlYWRlcnxocnxodG1sfGlmcmFtZXxsZWdlbmR8bGl8bGlua3xtYWlufG1lbnV8bWVudWl0ZW18bmF2fG5vZnJhbWVzfG9sfG9wdGdyb3VwfG9wdGlvbnxwfHBhcmFtfHNlY3Rpb258c291cmNlfHN1bW1hcnl8dGFibGV8dGJvZHl8dGR8dGZvb3R8dGh8dGhlYWR8dGl0bGV8dHJ8dHJhY2t8dWwvXG59XG5cbi8vIEZyb20gQ29tbW9uTWFyay5qcy4gXG5jb25zdCBwdW5jdHVhdGlvbkxlYWRpbmcgPSBuZXcgUmVnRXhwKC9eKD86WyFcIiMkJSYnKCkqKyxcXC0uLzo7PD0+P0BbXFxdXFxcXF5fYHt8fX5cXHhBMVxceEE3XFx4QUJcXHhCNlxceEI3XFx4QkJcXHhCRlxcdTAzN0VcXHUwMzg3XFx1MDU1QS1cXHUwNTVGXFx1MDU4OVxcdTA1OEFcXHUwNUJFXFx1MDVDMFxcdTA1QzNcXHUwNUM2XFx1MDVGM1xcdTA1RjRcXHUwNjA5XFx1MDYwQVxcdTA2MENcXHUwNjBEXFx1MDYxQlxcdTA2MUVcXHUwNjFGXFx1MDY2QS1cXHUwNjZEXFx1MDZENFxcdTA3MDAtXFx1MDcwRFxcdTA3RjctXFx1MDdGOVxcdTA4MzAtXFx1MDgzRVxcdTA4NUVcXHUwOTY0XFx1MDk2NVxcdTA5NzBcXHUwQUYwXFx1MERGNFxcdTBFNEZcXHUwRTVBXFx1MEU1QlxcdTBGMDQtXFx1MEYxMlxcdTBGMTRcXHUwRjNBLVxcdTBGM0RcXHUwRjg1XFx1MEZEMC1cXHUwRkQ0XFx1MEZEOVxcdTBGREFcXHUxMDRBLVxcdTEwNEZcXHUxMEZCXFx1MTM2MC1cXHUxMzY4XFx1MTQwMFxcdTE2NkRcXHUxNjZFXFx1MTY5QlxcdTE2OUNcXHUxNkVCLVxcdTE2RURcXHUxNzM1XFx1MTczNlxcdTE3RDQtXFx1MTdENlxcdTE3RDgtXFx1MTdEQVxcdTE4MDAtXFx1MTgwQVxcdTE5NDRcXHUxOTQ1XFx1MUExRVxcdTFBMUZcXHUxQUEwLVxcdTFBQTZcXHUxQUE4LVxcdTFBQURcXHUxQjVBLVxcdTFCNjBcXHUxQkZDLVxcdTFCRkZcXHUxQzNCLVxcdTFDM0ZcXHUxQzdFXFx1MUM3RlxcdTFDQzAtXFx1MUNDN1xcdTFDRDNcXHUyMDEwLVxcdTIwMjdcXHUyMDMwLVxcdTIwNDNcXHUyMDQ1LVxcdTIwNTFcXHUyMDUzLVxcdTIwNUVcXHUyMDdEXFx1MjA3RVxcdTIwOERcXHUyMDhFXFx1MjMwOC1cXHUyMzBCXFx1MjMyOVxcdTIzMkFcXHUyNzY4LVxcdTI3NzVcXHUyN0M1XFx1MjdDNlxcdTI3RTYtXFx1MjdFRlxcdTI5ODMtXFx1Mjk5OFxcdTI5RDgtXFx1MjlEQlxcdTI5RkNcXHUyOUZEXFx1MkNGOS1cXHUyQ0ZDXFx1MkNGRVxcdTJDRkZcXHUyRDcwXFx1MkUwMC1cXHUyRTJFXFx1MkUzMC1cXHUyRTQyXFx1MzAwMS1cXHUzMDAzXFx1MzAwOC1cXHUzMDExXFx1MzAxNC1cXHUzMDFGXFx1MzAzMFxcdTMwM0RcXHUzMEEwXFx1MzBGQlxcdUE0RkVcXHVBNEZGXFx1QTYwRC1cXHVBNjBGXFx1QTY3M1xcdUE2N0VcXHVBNkYyLVxcdUE2RjdcXHVBODc0LVxcdUE4NzdcXHVBOENFXFx1QThDRlxcdUE4RjgtXFx1QThGQVxcdUE4RkNcXHVBOTJFXFx1QTkyRlxcdUE5NUZcXHVBOUMxLVxcdUE5Q0RcXHVBOURFXFx1QTlERlxcdUFBNUMtXFx1QUE1RlxcdUFBREVcXHVBQURGXFx1QUFGMFxcdUFBRjFcXHVBQkVCXFx1RkQzRVxcdUZEM0ZcXHVGRTEwLVxcdUZFMTlcXHVGRTMwLVxcdUZFNTJcXHVGRTU0LVxcdUZFNjFcXHVGRTYzXFx1RkU2OFxcdUZFNkFcXHVGRTZCXFx1RkYwMS1cXHVGRjAzXFx1RkYwNS1cXHVGRjBBXFx1RkYwQy1cXHVGRjBGXFx1RkYxQVxcdUZGMUJcXHVGRjFGXFx1RkYyMFxcdUZGM0ItXFx1RkYzRFxcdUZGM0ZcXHVGRjVCXFx1RkY1RFxcdUZGNUYtXFx1RkY2NV18XFx1RDgwMFtcXHVERDAwLVxcdUREMDJcXHVERjlGXFx1REZEMF18XFx1RDgwMVxcdURENkZ8XFx1RDgwMltcXHVEQzU3XFx1REQxRlxcdUREM0ZcXHVERTUwLVxcdURFNThcXHVERTdGXFx1REVGMC1cXHVERUY2XFx1REYzOS1cXHVERjNGXFx1REY5OS1cXHVERjlDXXxcXHVEODA0W1xcdURDNDctXFx1REM0RFxcdURDQkJcXHVEQ0JDXFx1RENCRS1cXHVEQ0MxXFx1REQ0MC1cXHVERDQzXFx1REQ3NFxcdURENzVcXHVEREM1LVxcdUREQzlcXHVERENEXFx1REREQlxcdUREREQtXFx1RERERlxcdURFMzgtXFx1REUzRFxcdURFQTldfFxcdUQ4MDVbXFx1RENDNlxcdUREQzEtXFx1REREN1xcdURFNDEtXFx1REU0M1xcdURGM0MtXFx1REYzRV18XFx1RDgwOVtcXHVEQzcwLVxcdURDNzRdfFxcdUQ4MUFbXFx1REU2RVxcdURFNkZcXHVERUY1XFx1REYzNy1cXHVERjNCXFx1REY0NF18XFx1RDgyRlxcdURDOUZ8XFx1RDgzNltcXHVERTg3LVxcdURFOEJdKS8pO1xuXG5jb25zdCBwdW5jdHVhdGlvblRyYWlsaW5nID0gbmV3IFJlZ0V4cCgvKD86WyFcIiMkJSYnKCkqKyxcXC0uLzo7PD0+P0BbXFxdXFxcXF5fYHt8fX5cXHhBMVxceEE3XFx4QUJcXHhCNlxceEI3XFx4QkJcXHhCRlxcdTAzN0VcXHUwMzg3XFx1MDU1QS1cXHUwNTVGXFx1MDU4OVxcdTA1OEFcXHUwNUJFXFx1MDVDMFxcdTA1QzNcXHUwNUM2XFx1MDVGM1xcdTA1RjRcXHUwNjA5XFx1MDYwQVxcdTA2MENcXHUwNjBEXFx1MDYxQlxcdTA2MUVcXHUwNjFGXFx1MDY2QS1cXHUwNjZEXFx1MDZENFxcdTA3MDAtXFx1MDcwRFxcdTA3RjctXFx1MDdGOVxcdTA4MzAtXFx1MDgzRVxcdTA4NUVcXHUwOTY0XFx1MDk2NVxcdTA5NzBcXHUwQUYwXFx1MERGNFxcdTBFNEZcXHUwRTVBXFx1MEU1QlxcdTBGMDQtXFx1MEYxMlxcdTBGMTRcXHUwRjNBLVxcdTBGM0RcXHUwRjg1XFx1MEZEMC1cXHUwRkQ0XFx1MEZEOVxcdTBGREFcXHUxMDRBLVxcdTEwNEZcXHUxMEZCXFx1MTM2MC1cXHUxMzY4XFx1MTQwMFxcdTE2NkRcXHUxNjZFXFx1MTY5QlxcdTE2OUNcXHUxNkVCLVxcdTE2RURcXHUxNzM1XFx1MTczNlxcdTE3RDQtXFx1MTdENlxcdTE3RDgtXFx1MTdEQVxcdTE4MDAtXFx1MTgwQVxcdTE5NDRcXHUxOTQ1XFx1MUExRVxcdTFBMUZcXHUxQUEwLVxcdTFBQTZcXHUxQUE4LVxcdTFBQURcXHUxQjVBLVxcdTFCNjBcXHUxQkZDLVxcdTFCRkZcXHUxQzNCLVxcdTFDM0ZcXHUxQzdFXFx1MUM3RlxcdTFDQzAtXFx1MUNDN1xcdTFDRDNcXHUyMDEwLVxcdTIwMjdcXHUyMDMwLVxcdTIwNDNcXHUyMDQ1LVxcdTIwNTFcXHUyMDUzLVxcdTIwNUVcXHUyMDdEXFx1MjA3RVxcdTIwOERcXHUyMDhFXFx1MjMwOC1cXHUyMzBCXFx1MjMyOVxcdTIzMkFcXHUyNzY4LVxcdTI3NzVcXHUyN0M1XFx1MjdDNlxcdTI3RTYtXFx1MjdFRlxcdTI5ODMtXFx1Mjk5OFxcdTI5RDgtXFx1MjlEQlxcdTI5RkNcXHUyOUZEXFx1MkNGOS1cXHUyQ0ZDXFx1MkNGRVxcdTJDRkZcXHUyRDcwXFx1MkUwMC1cXHUyRTJFXFx1MkUzMC1cXHUyRTQyXFx1MzAwMS1cXHUzMDAzXFx1MzAwOC1cXHUzMDExXFx1MzAxNC1cXHUzMDFGXFx1MzAzMFxcdTMwM0RcXHUzMEEwXFx1MzBGQlxcdUE0RkVcXHVBNEZGXFx1QTYwRC1cXHVBNjBGXFx1QTY3M1xcdUE2N0VcXHVBNkYyLVxcdUE2RjdcXHVBODc0LVxcdUE4NzdcXHVBOENFXFx1QThDRlxcdUE4RjgtXFx1QThGQVxcdUE4RkNcXHVBOTJFXFx1QTkyRlxcdUE5NUZcXHVBOUMxLVxcdUE5Q0RcXHVBOURFXFx1QTlERlxcdUFBNUMtXFx1QUE1RlxcdUFBREVcXHVBQURGXFx1QUFGMFxcdUFBRjFcXHVBQkVCXFx1RkQzRVxcdUZEM0ZcXHVGRTEwLVxcdUZFMTlcXHVGRTMwLVxcdUZFNTJcXHVGRTU0LVxcdUZFNjFcXHVGRTYzXFx1RkU2OFxcdUZFNkFcXHVGRTZCXFx1RkYwMS1cXHVGRjAzXFx1RkYwNS1cXHVGRjBBXFx1RkYwQy1cXHVGRjBGXFx1RkYxQVxcdUZGMUJcXHVGRjFGXFx1RkYyMFxcdUZGM0ItXFx1RkYzRFxcdUZGM0ZcXHVGRjVCXFx1RkY1RFxcdUZGNUYtXFx1RkY2NV18XFx1RDgwMFtcXHVERDAwLVxcdUREMDJcXHVERjlGXFx1REZEMF18XFx1RDgwMVxcdURENkZ8XFx1RDgwMltcXHVEQzU3XFx1REQxRlxcdUREM0ZcXHVERTUwLVxcdURFNThcXHVERTdGXFx1REVGMC1cXHVERUY2XFx1REYzOS1cXHVERjNGXFx1REY5OS1cXHVERjlDXXxcXHVEODA0W1xcdURDNDctXFx1REM0RFxcdURDQkJcXHVEQ0JDXFx1RENCRS1cXHVEQ0MxXFx1REQ0MC1cXHVERDQzXFx1REQ3NFxcdURENzVcXHVEREM1LVxcdUREQzlcXHVERENEXFx1REREQlxcdUREREQtXFx1RERERlxcdURFMzgtXFx1REUzRFxcdURFQTldfFxcdUQ4MDVbXFx1RENDNlxcdUREQzEtXFx1REREN1xcdURFNDEtXFx1REU0M1xcdURGM0MtXFx1REYzRV18XFx1RDgwOVtcXHVEQzcwLVxcdURDNzRdfFxcdUQ4MUFbXFx1REU2RVxcdURFNkZcXHVERUY1XFx1REYzNy1cXHVERjNCXFx1REY0NF18XFx1RDgyRlxcdURDOUZ8XFx1RDgzNltcXHVERTg3LVxcdURFOEJdKSQvKTtcblxuLy8gZXhwb3J0IGNvbnN0IGlubGluZVRyaWdnZXJDaGFycyA9IG5ldyBSZWdFeHAoYFske3JlcGxhY2VtZW50cy5UcmlnZ2VyQ2hhcnN9XWApO1xuXG4vKipcbiAqIFRoaXMgaXMgQ29tbW9uTWFyaydzIGJsb2NrIGdyYW1tYXIsIGJ1dCB3ZSdyZSBpZ25vcmluZyBuZXN0ZWQgYmxvY2tzIGhlcmUuICBcbiAqLyBcbmNvbnN0IGxpbmVHcmFtbWFyID0geyBcbiAgVE1IMTogeyBcbiAgICByZWdleHA6IC9eKCB7MCwzfSNcXHMpKC4qPykoKD86XFxzKyMrXFxzKik/KSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUgxXCI+JDE8L3NwYW4+JCQyPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSDFcIj4kMzwvc3Bhbj4nXG4gIH0sXG4gIFRNSDI6IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM30jI1xccykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSDJcIj4kMTwvc3Bhbj4kJDI8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1IMlwiPiQzPC9zcGFuPidcbiAgfSxcbiAgVE1IMzogeyBcbiAgICByZWdleHA6IC9eKCB7MCwzfSMjI1xccykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSDNcIj4kMTwvc3Bhbj4kJDI8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1IM1wiPiQzPC9zcGFuPidcbiAgfSxcbiAgVE1INDogeyBcbiAgICByZWdleHA6IC9eKCB7MCwzfSMjIyNcXHMpKC4qPykoKD86XFxzKyMrXFxzKik/KSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUg0XCI+JDE8L3NwYW4+JCQyPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSDRcIj4kMzwvc3Bhbj4nXG4gIH0sXG4gIFRNSDU6IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM30jIyMjI1xccykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSDVcIj4kMTwvc3Bhbj4kJDI8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1INVwiPiQzPC9zcGFuPidcbiAgfSxcbiAgVE1INjogeyBcbiAgICByZWdleHA6IC9eKCB7MCwzfSMjIyMjI1xccykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSDZcIj4kMTwvc3Bhbj4kJDI8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1INlwiPiQzPC9zcGFuPidcbiAgfSxcbiAgVE1CbG9ja3F1b3RlOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9PlsgXT8pKC4qKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUJsb2NrcXVvdGVcIj4kMTwvc3Bhbj4kJDInXG4gIH0sXG4gIFRNQ29kZUZlbmNlQmFja3RpY2tPcGVuOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9KD88c2VxPmBgYGAqKVxccyopKFteYF0qPykoXFxzKikkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1Db2RlRmVuY2VCYWNrdGlja1wiPiQxPC9zcGFuPjxzcGFuIGNsYXNzPVwiVE1JbmZvU3RyaW5nXCI+JDM8L3NwYW4+JDQnXG4gIH0sXG4gIFRNQ29kZUZlbmNlVGlsZGVPcGVuOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9KD88c2VxPn5+fn4qKVxccyopKC4qPykoXFxzKikkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1Db2RlRmVuY2VUaWxkZVwiPiQxPC9zcGFuPjxzcGFuIGNsYXNzPVwiVE1JbmZvU3RyaW5nXCI+JDM8L3NwYW4+JDQnXG4gIH0sXG4gIFRNQ29kZUZlbmNlQmFja3RpY2tDbG9zZTogeyBcbiAgICByZWdleHA6IC9eKCB7MCwzfSg/PHNlcT5gYGBgKikpKFxccyopJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNQ29kZUZlbmNlQmFja3RpY2tcIj4kMTwvc3Bhbj4kMydcbiAgfSxcbiAgVE1Db2RlRmVuY2VUaWxkZUNsb3NlOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9KD88c2VxPn5+fn4qKSkoXFxzKikkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1Db2RlRmVuY2VUaWxkZVwiPiQxPC9zcGFuPiQzJ1xuICB9LFxuICBUTUJsYW5rTGluZTogeyBcbiAgICByZWdleHA6IC9eKFsgXFx0XSopJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnJDAnXG4gIH0sXG4gIFRNU2V0ZXh0SDFNYXJrZXI6IHsgXG4gICAgcmVnZXhwOiAvXiB7MCwzfT0rXFxzKiQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTVNldGV4dEgxTWFya2VyXCI+JDA8L3NwYW4+J1xuICB9LFxuICBUTVNldGV4dEgyTWFya2VyOiB7IFxuICAgIHJlZ2V4cDogL14gezAsM30tK1xccyokLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1TZXRleHRIMU1hcmtlclwiPiQwPC9zcGFuPidcbiAgfSxcbiAgVE1IUjogeyBcbiAgICByZWdleHA6IC9eKCB7MCwzfShcXCpbIFxcdF0qXFwqWyBcXHRdKlxcKlsgXFx0Kl0qKXwoLVsgXFx0XSotWyBcXHRdKi1bIFxcdC1dKil8KF9bIFxcdF0qX1sgXFx0XSpfWyBcXHRfXSopKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUhSXCI+JDA8L3NwYW4+J1xuICB9LFxuICBUTVVMOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9WysqLV0gezEsNH0pKC4qKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTVVMXCI+JDE8L3NwYW4+JCQyJ1xuICB9LFxuICBUTU9MOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9XFxkezEsOX1bLildIHsxLDR9KSguKikkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1PTFwiPiQxPC9zcGFuPiQkMidcbiAgfSxcbiAgLy8gVE9ETzogVGhpcyBpcyBjdXJyZW50bHkgcHJldmVudGluZyBzdWJsaXN0cyAoYW5kIGFueSBjb250ZW50IHdpdGhpbiBsaXN0IGl0ZW1zLCByZWFsbHkpIGZyb20gd29ya2luZ1xuICBUTUluZGVudGVkQ29kZTogeyBcbiAgICByZWdleHA6IC9eKCB7NH18XFx0KSguKikkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1JbmRlbnRlZENvZGVcIj4kMTwvc3Bhbj4kMidcbiAgfSxcbiAgVE1MaW5rUmVmZXJlbmNlRGVmaW5pdGlvbjoge1xuICAgIC8vIFRPRE86IExpbmsgZGVzdGluYXRpb24gY2FuJ3QgaW5jbHVkZSB1bmJhbGFuY2VkIHBhcmFudGhlc2VzLCBidXQgd2UganVzdCBpZ25vcmUgdGhhdCBoZXJlIFxuICAgIHJlZ2V4cDogL14oIHswLDN9XFxbXFxzKikoW15cXHNcXF1dKD86W15cXF1dfFxcXFxcXF0pKj8pKFxccypcXF06XFxzKikoKD86W15cXHM8Pl0rKXwoPzo8KD86W148PlxcXFxdfFxcXFwuKSo+KSk/KFxccyopKCg/OlxcKCg/OlteKClcXFxcXXxcXFxcLikqXFwpKXwoPzpcIig/OlteXCJcXFxcXXxcXFxcLikqXCIpfCg/OicoPzpbXidcXFxcXXxcXFxcLikqJykpPyhcXHMqKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uXCI+JDE8L3NwYW4+PHNwYW4gY2xhc3M9XCJUTUxpbmtMYWJlbCBUTUxpbmtMYWJlbF9EZWZpbml0aW9uXCI+JDI8L3NwYW4+PHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNTGlua1JlZmVyZW5jZURlZmluaXRpb25cIj4kMzwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTGlua0Rlc3RpbmF0aW9uXCI+JDQ8L3NwYW4+JDU8c3BhbiBjbGFzcz1cIlRNTGlua1RpdGxlXCI+JDY8L3NwYW4+JDcnLFxuICAgIGxhYmVsUGxhY2Vob2xkZXI6IDIsIC8vIHRoaXMgZGVmaW5lcyB3aGljaCBwbGFjZWhvbGRlciBpbiB0aGUgYWJvdmUgcmVnZXggaXMgdGhlIGxpbmsgXCJsYWJlbFwiXG4gIH0sXG59O1xuXG4vKipcbiAqIEhUTUwgYmxvY2tzIGhhdmUgbXVsdGlwbGUgZGlmZmVyZW50IGNsYXNzZXMgb2Ygb3BlbmVyIGFuZCBjbG9zZXIuIFRoaXMgYXJyYXkgZGVmaW5lcyBhbGwgdGhlIGNhc2VzXG4gKi9cbnZhciBodG1sQmxvY2tHcmFtbWFyID0gW1xuICB7IHN0YXJ0OiAvXiB7MCwzfTwoPzpzY3JpcHR8cHJlfHN0eWxlKSg/Olxcc3w+fCQpL2ksIGVuZDogLyg/OjxcXC9zY3JpcHQ+fDxcXC9wcmU+fDxcXC9zdHlsZT4pL2ksIHBhcmFJbnRlcnJ1cHQ6IHRydWUgfSxcbiAgeyBzdGFydDogL14gezAsM308IS0tLywgZW5kOiAvLS0+LywgcGFyYUludGVycnVwdDogdHJ1ZSB9LFxuICB7IHN0YXJ0OiAvXiB7MCwzfTxcXD8vLCBlbmQ6IC9cXD8+LywgcGFyYUludGVycnVwdDogdHJ1ZSB9LFxuICB7IHN0YXJ0OiAvXiB7MCwzfTwhW0EtWl0vLCBlbmQ6IC8+LywgcGFyYUludGVycnVwdCA6IHRydWV9LFxuICB7IHN0YXJ0OiAvXiB7MCwzfTwhXFxbQ0RBVEFcXFsvLCBlbmQ6IC9cXF1cXF0+LywgcGFyYUludGVycnVwdCA6IHRydWV9LFxuICB7IHN0YXJ0OiAvXiB7MCwzfSg/Ojx8PFxcLykoPzpLbm93blRhZykoPzpcXHN8PnxcXC8+fCQpL2ksIGVuZDogZmFsc2UsIHBhcmFJbnRlcnJ1cHQ6IHRydWV9LFxuICB7IHN0YXJ0OiAvXiB7MCwzfSg/OkhUTUxPcGVuVGFnfEhUTUxDbG9zZVRhZylcXHMqJC8sIGVuZDogZmFsc2UsIHBhcmFJbnRlcnJ1cHQ6IGZhbHNlfSxcbl07XG5cbi8qKlxuICogU3RydWN0dXJlIG9mIHRoZSBvYmplY3Q6XG4gKiBUb3AgbGV2ZWwgZW50cmllcyBhcmUgcnVsZXMsIGVhY2ggY29uc2lzdGluZyBvZiBhIHJlZ3VsYXIgZXhwcmVzc2lvbnMgKGluIHN0cmluZyBmb3JtYXQpIGFzIHdlbGwgYXMgYSByZXBsYWNlbWVudC5cbiAqIEluIHRoZSByZWd1bGFyIGV4cHJlc3Npb25zLCByZXBsYWNlbWVudHMgZnJvbSB0aGUgb2JqZWN0ICdyZXBsYWNlbWVudHMnIHdpbGwgYmUgcHJvY2Vzc2VkIGJlZm9yZSBjb21waWxpbmcgaW50byB0aGUgcHJvcGVydHkgcmVnZXhwLlxuICovXG52YXIgaW5saW5lR3JhbW1hciA9IHtcbiAgZXNjYXBlIDoge1xuICAgIHJlZ2V4cDogL15cXFxcKEFTQ0lJUHVuY3R1YXRpb24pLyxcbiAgICByZXBsYWNlbWVudCA6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1Fc2NhcGVcIj5cXFxcPC9zcGFuPiQxJ1xuICB9LFxuICBjb2RlIDoge1xuICAgIHJlZ2V4cDogL14oYCspKCg/OlteYF0pfCg/OlteYF0uKj9bXmBdKSkoXFwxKS8sXG4gICAgcmVwbGFjZW1lbnQgOiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNQ29kZVwiPiQxPC9zcGFuPjxjb2RlIGNsYXNzPVwiVE1Db2RlXCI+JDI8L2NvZGU+PHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNQ29kZVwiPiQzPC9zcGFuPicgXG4gIH0sXG4gIGF1dG9saW5rIDoge1xuICAgIHJlZ2V4cDogL148KCg/OlNjaGVtZTpbXlxcczw+XSopfCg/OkVtYWlsKSk+LyxcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUF1dG9saW5rXCI+Jmx0Ozwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNQXV0b2xpbmtcIj4kMTwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1BdXRvbGlua1wiPiZndDs8L3NwYW4+J1xuICB9LFxuICBodG1sIDoge1xuICAgIHJlZ2V4cDogL14oKD86SFRNTE9wZW5UYWcpfCg/OkhUTUxDbG9zZVRhZyl8KD86SFRNTENvbW1lbnQpfCg/OkhUTUxQSSl8KD86SFRNTERlY2xhcmF0aW9uKXwoPzpIVE1MQ0RBVEEpKS8sXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNSFRNTFwiPiQxPC9zcGFuPicsXG4gIH0sXG4gIGxpbmtPcGVuIDoge1xuICAgIHJlZ2V4cDogL15cXFsvLFxuICAgIHJlcGxhY2VtZW50OiAnJ1xuICB9LFxuICBpbWFnZU9wZW4gOiB7XG4gICAgcmVnZXhwOiAvXiFcXFsvLFxuICAgIHJlcGxhY2VtZW50IDogJydcbiAgfSxcbiAgbGlua0xhYmVsIDoge1xuICAgIHJlZ2V4cDogL14oXFxbXFxzKikoW15cXF1dKj8pKFxccypcXF0pLyxcbiAgICByZXBsYWNlbWVudDogJycsXG4gICAgbGFiZWxQbGFjZWhvbGRlcjogMlxuICB9LFxuICBkZWZhdWx0IDoge1xuICAgIHJlZ2V4cDogL14oLnwoPzpOb3RUcmlnZ2VyQ2hhcispKS8sXG4gICAgcmVwbGFjZW1lbnQ6ICckMSdcbiAgfVxufTtcblxuLy8gUHJvY2VzcyByZXBsYWNlbWVudHMgaW4gcmVnZXhwc1xuY29uc3QgcmVwbGFjZW1lbnRSZWdleHAgPSBuZXcgUmVnRXhwKE9iamVjdC5rZXlzKHJlcGxhY2VtZW50cykuam9pbignfCcpKTtcblxuLy8gSW5saW5lXG5jb25zdCBpbmxpbmVSdWxlcyA9Wy4uLk9iamVjdC5rZXlzKGlubGluZUdyYW1tYXIpXTtcbmZvciAobGV0IHJ1bGUgb2YgaW5saW5lUnVsZXMpIHtcbiAgbGV0IHJlID0gaW5saW5lR3JhbW1hcltydWxlXS5yZWdleHAuc291cmNlO1xuICAvLyBSZXBsYWNlIHdoaWxlIHRoZXJlIGlzIHNvbWV0aGluZyB0byByZXBsYWNlLiBUaGlzIG1lYW5zIGl0IGFsc28gd29ya3Mgb3ZlciBtdWx0aXBsZSBsZXZlbHMgKHJlcGxhY2VtZW50cyBjb250YWluaW5nIHJlcGxhY2VtZW50cylcbiAgd2hpbGUgKHJlLm1hdGNoKHJlcGxhY2VtZW50UmVnZXhwKSkge1xuICAgIHJlID0gcmUucmVwbGFjZShyZXBsYWNlbWVudFJlZ2V4cCwgKHN0cmluZykgPT4geyByZXR1cm4gcmVwbGFjZW1lbnRzW3N0cmluZ10uc291cmNlOyB9KTtcbiAgfVxuICBpbmxpbmVHcmFtbWFyW3J1bGVdLnJlZ2V4cCA9IG5ldyBSZWdFeHAocmUsIGlubGluZUdyYW1tYXJbcnVsZV0ucmVnZXhwLmZsYWdzKTtcbn1cblxuLy8gSFRNTCBCbG9jayAob25seSBvcGVuaW5nIHJ1bGUgaXMgcHJvY2Vzc2VkIGN1cnJlbnRseSlcbmZvciAobGV0IHJ1bGUgb2YgaHRtbEJsb2NrR3JhbW1hcikge1xuICBsZXQgcmUgPSBydWxlLnN0YXJ0LnNvdXJjZTtcbiAgLy8gUmVwbGFjZSB3aGlsZSB0aGVyZSBpcyBzb21ldGhpbmcgdG8gcmVwbGFjZS4gVGhpcyBtZWFucyBpdCBhbHNvIHdvcmtzIG92ZXIgbXVsdGlwbGUgbGV2ZWxzIChyZXBsYWNlbWVudHMgY29udGFpbmluZyByZXBsYWNlbWVudHMpXG4gIHdoaWxlIChyZS5tYXRjaChyZXBsYWNlbWVudFJlZ2V4cCkpIHtcbiAgICByZSA9IHJlLnJlcGxhY2UocmVwbGFjZW1lbnRSZWdleHAsIChzdHJpbmcpID0+IHsgcmV0dXJuIHJlcGxhY2VtZW50c1tzdHJpbmddLnNvdXJjZTsgfSk7XG4gIH1cbiAgcnVsZS5zdGFydCA9IG5ldyBSZWdFeHAocmUsIHJ1bGUuc3RhcnQuZmxhZ3MpO1xufVxuXG4vKipcbiAqIEVzY2FwZXMgSFRNTCBzcGVjaWFsIGNoYXJhY3RlcnMgKDwsID4sIGFuZCAmKSBpbiB0aGUgc3RyaW5nLlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgcmF3IHN0cmluZyB0byBiZSBlc2NhcGVkXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgc3RyaW5nLCByZWFkeSB0byBiZSB1c2VkIGluIEhUTUxcbiAqL1xuZnVuY3Rpb24gaHRtbGVzY2FwZShzdHJpbmcpIHtcbiAgcmV0dXJuIChzdHJpbmcgPyBzdHJpbmcgOiAnJylcbiAgICAucmVwbGFjZSgvJi9nLCAnJmFtcDsnKVxuICAgIC5yZXBsYWNlKC88L2csICcmbHQ7JylcbiAgICAucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xufVxuLyoqXG4gKiBDb250YWlucyB0aGUgY29tbWFuZHMgdGhhdCBjYW4gYmUgc2VudCB0byB0aGUgZWRpdG9yLiBDb250YWlucyBvYmplY3RzIHdpdGggYSBuYW1lIHJlcHJlc2VudGluZyB0aGUgbmFtZSBvZiB0aGUgY29tbWFuZC5cbiAqIEVhY2ggb2YgdGhlIG9iamVjdHMgY29udGFpbnMgdGhlIGZvbGxvd2luZyBrZXlzOlxuICogXG4gKiAgIC0gdHlwZTogQ2FuIGJlIGVpdGhlciBpbmxpbmUgKGZvciBpbmxpbmUgZm9ybWF0dGluZykgb3IgbGluZSAoZm9yIGJsb2NrIC8gbGluZSBmb3JtYXR0aW5nKS5cbiAqICAgLSBjbGFzc05hbWU6IFVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGNvbW1hbmQgaXMgYWN0aXZlIGF0IGEgZ2l2ZW4gcG9zaXRpb24uIFxuICogICAgIEZvciBsaW5lIGZvcm1hdHRpbmcsIHRoaXMgbG9va3MgYXQgdGhlIGNsYXNzIG9mIHRoZSBsaW5lIGVsZW1lbnQuIEZvciBpbmxpbmUgZWxlbWVudHMsIHRyaWVzIHRvIGZpbmQgYW4gZW5jbG9zaW5nIGVsZW1lbnQgd2l0aCB0aGF0IGNsYXNzLlxuICogICAtIHNldCAvIHVuc2V0OiBDb250YWluIGluc3RydWN0aW9ucyBob3cgdG8gc2V0IGFuZCB1bnNldCB0aGUgY29tbWFuZC4gRm9yIGxpbmUgdHlwZSBjb21tYW5kcywgYm90aCBjb25zaXN0IG9mIGEgcGF0dGVybiBhbmQgcmVwbGFjZW1lbnQgdGhhdCBcbiAqICAgICB3aWxsIGJlIGFwcGxpZWQgdG8gZWFjaCBsaW5lICh1c2luZyBTdHJpbmcucmVwbGFjZSkuIEZvciBpbmxpbmUgdHlwZSBjb21tYW5kcywgdGhlIHNldCBvYmplY3QgY29udGFpbnMgYSBwcmUgYW5kIHBvc3Qgc3RyaW5nIHdoaWNoIHdpbGxcbiAqICAgICBiZSBpbnNlcnRlZCBiZWZvcmUgYW5kIGFmdGVyIHRoZSBzZWxlY3Rpb24uIFRoZSB1bnNldCBvYmplY3QgY29udGFpbnMgYSBwcmVQYXR0ZXJuIGFuZCBhIHBvc3RQYXR0ZXJuLiBCb3RoIHNob3VsZCBiZSByZWd1bGFyIGV4cHJlc3Npb25zIGFuZCBcbiAqICAgICB0aGV5IHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcG9ydGlvbiBvZiB0aGUgbGluZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBzZWxlY3Rpb24gKHVzaW5nIFN0cmluZy5yZXBsYWNlLCB3aXRoIGFuIGVtcHR5IHJlcGxhY2VtZW50IHN0cmluZykuXG4gKi9cbmNvbnN0IGNvbW1hbmRzID0ge1xuICAvLyBSZXBsYWNlbWVudHMgZm9yIHVuc2V0IGZvciBpbmxpbmUgY29tbWFuZHMgYXJlICcnIGJ5IGRlZmF1bHRcbiAgYm9sZDoge1xuICAgIHR5cGU6ICdpbmxpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTVN0cm9uZycsIFxuICAgIHNldDoge3ByZTogJyoqJywgcG9zdDogJyoqJ30sIFxuICAgIHVuc2V0OiB7cHJlUGF0dGVybjogLyg/OlxcKlxcKnxfXykkLywgcG9zdFBhdHRlcm46IC9eKD86XFwqXFwqfF9fKS99XG4gIH0sIFxuICBpdGFsaWM6IHtcbiAgICB0eXBlOiAnaW5saW5lJywgXG4gICAgY2xhc3NOYW1lOiAnVE1FbScsIFxuICAgIHNldDoge3ByZTogJyonLCBwb3N0OiAnKid9LCBcbiAgICB1bnNldDoge3ByZVBhdHRlcm46IC8oPzpcXCp8XykkLywgcG9zdFBhdHRlcm46IC9eKD86XFwqfF8pL31cbiAgfSxcbiAgY29kZToge1xuICAgIHR5cGU6ICdpbmxpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUNvZGUnLCBcbiAgICBzZXQ6IHtwcmU6ICdgJywgcG9zdDogJ2AnfSwgXG4gICAgdW5zZXQ6IHtwcmVQYXR0ZXJuOiAvYCskLywgcG9zdFBhdHRlcm46IC9eYCsvfSAvLyBGSVhNRSB0aGlzIGRvZXNuJ3QgZW5zdXJlIGJhbGFuY2VkIGJhY2t0aWNrcyByaWdodCBub3dcbiAgfSwgXG4gIHN0cmlrZXRocm91Z2g6IHtcbiAgICB0eXBlOiAnaW5saW5lJywgXG4gICAgY2xhc3NOYW1lOiAnVE1TdHJpa2V0aHJvdWdoJywgXG4gICAgc2V0OiB7cHJlOiAnfn4nLCBwb3N0OiAnfn4nfSwgXG4gICAgdW5zZXQ6IHtwcmVQYXR0ZXJuOi9+fiQvLCBwb3N0UGF0dGVybjogL15+fi8gfVxuICB9LFxuICBoMToge1xuICAgIHR5cGU6ICdsaW5lJywgXG4gICAgY2xhc3NOYW1lOiAnVE1IMScsIFxuICAgIHNldDoge3BhdHRlcm46IC9eKCB7MCwzfSg/Oig/OiMrfFswLTldezEsOX1bKS5dfFs+XFwtKitdKVxccyspPykoLiopJC8sIHJlcGxhY2VtZW50OiAnIyAkMid9LCBcbiAgICB1bnNldDoge3BhdHRlcm46IC9eKCB7MCwzfSNcXHMrKSguKj8pKCg/OlxccysjK1xccyopPykkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIGgyOiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUgyJywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICcjIyAkMid9LCBcbiAgICB1bnNldDoge3BhdHRlcm46IC9eKCB7MCwzfSMjXFxzKykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIHJlcGxhY2VtZW50OiAnJDInfVxuICB9LFxuICBoMzoge1xuICAgIHR5cGU6ICdsaW5lJywgXG4gICAgY2xhc3NOYW1lOiAnVE1IMycsIFxuICAgIHNldDoge3BhdHRlcm46IC9eKCB7MCwzfSg/Oig/OiMrfFswLTldezEsOX1bKS5dfFs+XFwtKitdKVxccyspPykoLiopJC8sIHJlcGxhY2VtZW50OiAnIyMjICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9IyMjXFxzKykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIHJlcGxhY2VtZW50OiAnJDInfVxuICB9LFxuICBoNDoge1xuICAgIHR5cGU6ICdsaW5lJywgXG4gICAgY2xhc3NOYW1lOiAnVE1INCcsIFxuICAgIHNldDoge3BhdHRlcm46IC9eKCB7MCwzfSg/Oig/OiMrfFswLTldezEsOX1bKS5dfFs+XFwtKitdKVxccyspPykoLiopJC8sIHJlcGxhY2VtZW50OiAnIyMjIyAkMid9LCBcbiAgICB1bnNldDoge3BhdHRlcm46IC9eKCB7MCwzfSMjIyNcXHMrKSguKj8pKCg/OlxccysjK1xccyopPykkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIGg1OiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUg1JywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICcjIyMjIyAkMid9LCBcbiAgICB1bnNldDoge3BhdHRlcm46IC9eKCB7MCwzfSMjIyMjXFxzKykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIHJlcGxhY2VtZW50OiAnJDInfVxuICB9LFxuICBoNjoge1xuICAgIHR5cGU6ICdsaW5lJywgXG4gICAgY2xhc3NOYW1lOiAnVE1INicsIFxuICAgIHNldDoge3BhdHRlcm46IC9eKCB7MCwzfSg/Oig/OiMrfFswLTldezEsOX1bKS5dfFs+XFwtKitdKVxccyspPykoLiopJC8sIHJlcGxhY2VtZW50OiAnIyMjIyMjICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9IyMjIyMjXFxzKykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIHJlcGxhY2VtZW50OiAnJDInfVxuICB9LFxuICB1bDoge1xuICAgIHR5cGU6ICdsaW5lJywgXG4gICAgY2xhc3NOYW1lOiAnVE1VTCcsIFxuICAgIHNldDoge3BhdHRlcm46IC9eKCB7MCwzfSg/Oig/OiMrfFswLTldezEsOX1bKS5dfFs+XFwtKitdKVxccyspPykoLiopJC8sIHJlcGxhY2VtZW50OiAnLSAkMid9LCBcbiAgICB1bnNldDoge3BhdHRlcm46IC9eKCB7MCwzfVsrKi1dIHsxLDR9KSguKikkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIG9sOiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTU9MJywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICckIy4gJDInfSwgXG4gICAgdW5zZXQ6IHtwYXR0ZXJuOiAvXiggezAsM31cXGR7MSw5fVsuKV0gezEsNH0pKC4qKSQvLCByZXBsYWNlbWVudDogJyQyJ31cbiAgfSwgXG4gIGJsb2NrcXVvdGU6IHtcbiAgICB0eXBlOiAnbGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNQmxvY2txdW90ZScsIFxuICAgIHNldDoge3BhdHRlcm46IC9eKCB7MCwzfSg/Oig/OiMrfFswLTldezEsOX1bKS5dfFs+XFwtKitdKVxccyspPykoLiopJC8sIHJlcGxhY2VtZW50OiAnPiAkMid9LCBcbiAgICB1bnNldDoge3BhdHRlcm46IC9eKCB7MCwzfT5bIF0/KSguKikkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG59O1xuXG5leHBvcnQgeyBsaW5lR3JhbW1hciwgaW5saW5lR3JhbW1hciwgcHVuY3R1YXRpb25MZWFkaW5nLCBwdW5jdHVhdGlvblRyYWlsaW5nLCBodG1sZXNjYXBlLCBodG1sQmxvY2tHcmFtbWFyLCBjb21tYW5kcyB9OyIsImltcG9ydCB7IGlubGluZUdyYW1tYXIsIGxpbmVHcmFtbWFyLCBwdW5jdHVhdGlvbkxlYWRpbmcsIHB1bmN0dWF0aW9uVHJhaWxpbmcsIGh0bWxlc2NhcGUsIGh0bWxCbG9ja0dyYW1tYXIsIGNvbW1hbmRzIH0gZnJvbSBcIi4vZ3JhbW1hclwiO1xuXG5jbGFzcyBFZGl0b3Ige1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzID0ge30pIHsgICAgXG4gICAgdGhpcy5lID0gbnVsbDtcbiAgICB0aGlzLnRleHRhcmVhID0gbnVsbDtcbiAgICB0aGlzLmxpbmVzID0gW107XG4gICAgdGhpcy5saW5lRWxlbWVudHMgPSBbXTtcbiAgICB0aGlzLmxpbmVUeXBlcyA9IFtdO1xuICAgIHRoaXMubGluZUNhcHR1cmVzID0gW107XG4gICAgdGhpcy5saW5lUmVwbGFjZW1lbnRzID0gW107XG4gICAgdGhpcy5saW5rTGFiZWxzID0gW107XG4gICAgdGhpcy5saW5lRGlydHkgPSBbXTtcbiAgICB0aGlzLmxhc3RDb21tYW5kU3RhdGUgPSBudWxsO1xuXG4gICAgdGhpcy5saXN0ZW5lcnMgPSB7XG4gICAgICBjaGFuZ2U6IFtdLFxuICAgICAgc2VsZWN0aW9uOiBbXSxcbiAgICB9O1xuXG4gICAgbGV0IGVsZW1lbnQgPSBwcm9wcy5lbGVtZW50O1xuICAgIHRoaXMudGV4dGFyZWEgPSBwcm9wcy50ZXh0YXJlYTtcblxuICAgIGlmICh0aGlzLnRleHRhcmVhICYmICF0aGlzLnRleHRhcmVhLnRhZ05hbWUpIHtcbiAgICAgIHRoaXMudGV4dGFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLnRleHRhcmVhKTtcbiAgICAgIGlmICghZWxlbWVudCkgZWxlbWVudCA9IHRoaXMudGV4dGFyZWE7XG4gICAgfVxuXG4gICAgaWYgKGVsZW1lbnQgJiYgIWVsZW1lbnQudGFnTmFtZSkge1xuICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByb3BzLmVsZW1lbnQpO1xuICAgIH1cbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdOyBcbiAgICB9XG4gICAgaWYgKGVsZW1lbnQudGFnTmFtZSA9PSAnVEVYVEFSRUEnKSB7XG4gICAgICB0aGlzLnRleHRhcmVhID0gZWxlbWVudDtcbiAgICAgIGVsZW1lbnQgPSB0aGlzLnRleHRhcmVhLnBhcmVudE5vZGU7IFxuICAgIH1cblxuICAgIGlmICh0aGlzLnRleHRhcmVhKSB7XG4gICAgICB0aGlzLnRleHRhcmVhLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgfVxuXG4gICAgdGhpcy5jcmVhdGVFZGl0b3JFbGVtZW50KGVsZW1lbnQpO1xuICAgIC8vIFRPRE8gUGxhY2Vob2xkZXIgZm9yIGVtcHR5IGNvbnRlbnRcbiAgICB0aGlzLnNldENvbnRlbnQocHJvcHMuY29udGVudCB8fCAodGhpcy50ZXh0YXJlYSA/IHRoaXMudGV4dGFyZWEudmFsdWUgOiBmYWxzZSkgfHwgJyMgSGVsbG8gVGlueU1ERSFcXG5FZGl0ICoqaGVyZSoqJyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgZWRpdG9yIGVsZW1lbnQgaW5zaWRlIHRoZSB0YXJnZXQgZWxlbWVudCBvZiB0aGUgRE9NIHRyZWVcbiAgICogQHBhcmFtIGVsZW1lbnQgVGhlIHRhcmdldCBlbGVtZW50IG9mIHRoZSBET00gdHJlZVxuICAgKi9cbiAgY3JlYXRlRWRpdG9yRWxlbWVudChlbGVtZW50KSB7XG4gICAgdGhpcy5lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5lLmNsYXNzTmFtZSA9ICdUaW55TURFJztcbiAgICB0aGlzLmUuY29udGVudEVkaXRhYmxlID0gdHJ1ZTtcbiAgICAvLyBUaGUgZm9sbG93aW5nIGlzIGltcG9ydGFudCBmb3IgZm9ybWF0dGluZyBwdXJwb3NlcywgYnV0IGFsc28gc2luY2Ugb3RoZXJ3aXNlIHRoZSBicm93c2VyIHJlcGxhY2VzIHN1YnNlcXVlbnQgc3BhY2VzIHdpdGggICZuYnNwOyAmbmJzcDtcbiAgICAvLyBUaGF0IGJyZWFrcyBhIGxvdCBvZiBzdHVmZiwgc28gd2UgZG8gdGhpcyBoZXJlIGFuZCBub3QgaW4gQ1NT4oCUdGhlcmVmb3JlLCB5b3UgZG9uJ3QgaGF2ZSB0byByZW1lbWJlciB0byBidXQgdGhpcyBpbiB0aGUgQ1NTIGZpbGVcbiAgICB0aGlzLmUuc3R5bGUud2hpdGVTcGFjZSA9ICdwcmUtd3JhcCc7IFxuICAgIC8vIEF2b2lkIGZvcm1hdHRpbmcgKEIgLyBJIC8gVSkgcG9wcGluZyB1cCBvbiBpT1NcbiAgICB0aGlzLmUuc3R5bGUud2Via2l0VXNlck1vZGlmeSA9ICdyZWFkLXdyaXRlLXBsYWludGV4dC1vbmx5JztcbiAgICBpZiAodGhpcy50ZXh0YXJlYSAmJiB0aGlzLnRleHRhcmVhLnBhcmVudE5vZGUgPT0gZWxlbWVudCAmJiB0aGlzLnRleHRhcmVhLm5leHRTaWJsaW5nKSB7XG4gICAgICBlbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLmUsIHRoaXMudGV4dGFyZWEubmV4dFNpYmxpbmcpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lKTtcbiAgICB9XG5cbiAgICB0aGlzLmUuYWRkRXZlbnRMaXN0ZW5lcihcImlucHV0XCIsIChlKSA9PiB0aGlzLmhhbmRsZUlucHV0RXZlbnQoZSkpO1xuICAgIC8vIHRoaXMuZS5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCAoZSkgPT4gdGhpcy5oYW5kbGVLZXlkb3duRXZlbnQoZSkpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJzZWxlY3Rpb25jaGFuZ2VcIiwgKGUpID0+IHRoaXMuaGFuZGxlU2VsZWN0aW9uQ2hhbmdlRXZlbnQoZSkpO1xuICAgIHRoaXMuZS5hZGRFdmVudExpc3RlbmVyKFwicGFzdGVcIiwgKGUpID0+IHRoaXMuaGFuZGxlUGFzdGUoZSkpO1xuICAgIC8vIHRoaXMuZS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGUpID0+IHRoaXMuaGFuZGxlS2V5RG93bihlKSk7XG4gICAgdGhpcy5saW5lRWxlbWVudHMgPSB0aGlzLmUuY2hpbGROb2RlczsgLy8gdGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgdXBkYXRlXG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZWRpdG9yIGNvbnRlbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IFRoZSBuZXcgTWFya2Rvd24gY29udGVudFxuICAgKi9cbiAgc2V0Q29udGVudChjb250ZW50KSB7XG4gICAgLy8gRGVsZXRlIGFueSBleGlzdGluZyBjb250ZW50XG4gICAgd2hpbGUgKHRoaXMuZS5maXJzdENoaWxkKSB7XG4gICAgICB0aGlzLmUucmVtb3ZlQ2hpbGQodGhpcy5lLmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgICB0aGlzLmxpbmVzID0gY29udGVudC5zcGxpdCgvKD86XFxyXFxufFxccnxcXG4pLyk7XG4gICAgdGhpcy5saW5lRGlydHkgPSBbXTtcbiAgICBmb3IgKGxldCBsaW5lTnVtID0gMDsgbGluZU51bSA8IHRoaXMubGluZXMubGVuZ3RoOyBsaW5lTnVtKyspIHtcbiAgICAgIGxldCBsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgdGhpcy5lLmFwcGVuZENoaWxkKGxlKTtcbiAgICAgIHRoaXMubGluZURpcnR5LnB1c2godHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMubGluZVR5cGVzID0gbmV3IEFycmF5KHRoaXMubGluZXMubGVuZ3RoKTtcbiAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgICB0aGlzLmZpcmVDaGFuZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBlZGl0b3IgY29udGVudCBhcyBhIE1hcmtkb3duIHN0cmluZy5cbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGVkaXRvciBjb250ZW50IGFzIGEgbWFya2Rvd24gc3RyaW5nXG4gICAqL1xuICBnZXRDb250ZW50KCkge1xuICAgIHJldHVybiB0aGlzLmxpbmVzLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIG1haW4gbWV0aG9kIHRvIHVwZGF0ZSB0aGUgZm9ybWF0dGluZyAoZnJvbSB0aGlzLmxpbmVzIHRvIEhUTUwgb3V0cHV0KVxuICAgKi9cbiAgdXBkYXRlRm9ybWF0dGluZygpIHtcbiAgICAvLyBGaXJzdCwgcGFyc2UgbGluZSB0eXBlcy4gVGhpcyB3aWxsIHVwZGF0ZSB0aGlzLmxpbmVUeXBlcywgdGhpcy5saW5lUmVwbGFjZW1lbnRzLCBhbmQgdGhpcy5saW5lQ2FwdHVyZXNcbiAgICAvLyBXZSBkb24ndCBhcHBseSB0aGUgZm9ybWF0dGluZyB5ZXRcbiAgICB0aGlzLnVwZGF0ZUxpbmVUeXBlcygpO1xuICAgIC8vIENvbGxlY3QgYW55IHZhbGlkIGxpbmsgbGFiZWxzIGZyb20gbGluayByZWZlcmVuY2UgZGVmaW5pdGlvbnPigJR3ZSBuZWVkIHRoYXQgZm9yIGZvcm1hdHRpbmcgdG8gZGV0ZXJtaW5lIHdoYXQncyBhIHZhbGlkIGxpbmtcbiAgICB0aGlzLnVwZGF0ZUxpbmtMYWJlbHMoKTtcbiAgICAvLyBOb3csIGFwcGx5IHRoZSBmb3JtYXR0aW5nXG4gICAgdGhpcy5hcHBseUxpbmVUeXBlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhpcy5saW5rTGFiZWxzOiBGb3IgZXZlcnkgbGluayByZWZlcmVuY2UgZGVmaW5pdGlvbiAobGluZSB0eXBlIFRNTGlua1JlZmVyZW5jZURlZmluaXRpb24pLCB3ZSBjb2xsZWN0IHRoZSBsYWJlbFxuICAgKi9cbiAgdXBkYXRlTGlua0xhYmVscygpIHtcbiAgICB0aGlzLmxpbmtMYWJlbHMgPSBbXTtcbiAgICBmb3IgKGxldCBsID0gMDsgbCA8IHRoaXMubGluZXMubGVuZ3RoOyBsKyspIHtcbiAgICAgIGlmICh0aGlzLmxpbmVUeXBlc1tsXSA9PSAnVE1MaW5rUmVmZXJlbmNlRGVmaW5pdGlvbicpIHtcbiAgICAgICAgdGhpcy5saW5rTGFiZWxzLnB1c2godGhpcy5saW5lQ2FwdHVyZXNbbF1bbGluZUdyYW1tYXIuVE1MaW5rUmVmZXJlbmNlRGVmaW5pdGlvbi5sYWJlbFBsYWNlaG9sZGVyXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBmdW5jdGlvbiB0byByZXBsYWNlIHBsYWNlaG9sZGVycyBmcm9tIGEgUmVnRXhwIGNhcHR1cmUuIFRoZSByZXBsYWNlbWVudCBzdHJpbmcgY2FuIGNvbnRhaW4gcmVndWxhciBkb2xsYXIgcGxhY2Vob2xkZXJzIChlLmcuLCAkMSksXG4gICAqIHdoaWNoIGFyZSBpbnRlcnByZXRlZCBsaWtlIGluIFN0cmluZy5yZXBsYWNlKCksIGJ1dCBhbHNvIGRvdWJsZSBkb2xsYXIgcGxhY2Vob2xkZXJzICgkJDEpLiBJbiB0aGUgY2FzZSBvZiBkb3VibGUgZG9sbGFyIHBsYWNlaG9sZGVycywgXG4gICAqIE1hcmtkb3duIGlubGluZSBncmFtbWFyIGlzIGFwcGxpZWQgb24gdGhlIGNvbnRlbnQgb2YgdGhlIGNhcHR1cmVkIHN1Ymdyb3VwLCBpLmUuLCAkJDEgcHJvY2Vzc2VzIGlubGluZSBNYXJrZG93biBncmFtbWFyIGluIHRoZSBjb250ZW50IG9mIHRoZVxuICAgKiBmaXJzdCBjYXB0dXJlZCBzdWJncm91cCwgYW5kIHJlcGxhY2VzIGAkJDFgIHdpdGggdGhlIHJlc3VsdC5cbiAgICogXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZXBsYWNlbWVudCBUaGUgcmVwbGFjZW1lbnQgc3RyaW5nLCBpbmNsdWRpbmcgcGxhY2Vob2xkZXJzLlxuICAgKiBAcGFyYW0gIGNhcHR1cmUgVGhlIHJlc3VsdCBvZiBhIFJlZ0V4cC5leGVjKCkgY2FsbFxuICAgKiBAcmV0dXJucyBUaGUgcmVwbGFjZW1lbnQgc3RyaW5nLCB3aXRoIHBsYWNlaG9sZGVycyByZXBsYWNlZCBmcm9tIHRoZSBjYXB0dXJlIHJlc3VsdC5cbiAgICovXG4gIHJlcGxhY2UocmVwbGFjZW1lbnQsIGNhcHR1cmUpIHtcbiAgICByZXR1cm4gcmVwbGFjZW1lbnRcbiAgICAgIC5yZXBsYWNlKC8oXFwkezEsMn0pKFswLTldKS9nLCAoc3RyLCBwMSwgcDIpID0+IHtcbiAgICAgICAgaWYgKHAxID09ICckJykgcmV0dXJuIGh0bWxlc2NhcGUoY2FwdHVyZVtwMl0pO1xuICAgICAgICBlbHNlIHJldHVybiBgPHNwYW4gY2xhc3M9XCJUTUlubGluZUZvcm1hdHRlZFwiPiR7dGhpcy5wcm9jZXNzSW5saW5lU3R5bGVzKGNhcHR1cmVbcDJdKX08L3NwYW4+YDtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgdGhlIGxpbmUgdHlwZXMgKGZyb20gdGhpcy5saW5lVHlwZXMgYXMgd2VsbCBhcyB0aGUgY2FwdHVyZSByZXN1bHQgaW4gdGhpcy5saW5lUmVwbGFjZW1lbnRzIGFuZCB0aGlzLmxpbmVDYXB0dXJlcykgXG4gICAqIGFuZCBwcm9jZXNzZXMgaW5saW5lIGZvcm1hdHRpbmcgZm9yIGFsbCBsaW5lcy5cbiAgICovXG4gIGFwcGx5TGluZVR5cGVzKCkge1xuICAgIGZvciAobGV0IGxpbmVOdW0gPSAwOyBsaW5lTnVtIDwgdGhpcy5saW5lcy5sZW5ndGg7IGxpbmVOdW0rKykge1xuICAgICAgaWYgKHRoaXMubGluZURpcnR5W2xpbmVOdW1dKSB7XG4gICAgICAgIGxldCBjb250ZW50SFRNTCA9IHRoaXMucmVwbGFjZSh0aGlzLmxpbmVSZXBsYWNlbWVudHNbbGluZU51bV0sIHRoaXMubGluZUNhcHR1cmVzW2xpbmVOdW1dKTtcbiAgICAgICAgLy8gdGhpcy5saW5lSFRNTFtsaW5lTnVtXSA9IChjb250ZW50SFRNTCA9PSAnJyA/ICc8YnIgLz4nIDogY29udGVudEhUTUwpOyAvLyBQcmV2ZW50IGVtcHR5IGVsZW1lbnRzIHdoaWNoIGNhbid0IGJlIHNlbGVjdGVkIGV0Yy5cbiAgICAgICAgdGhpcy5saW5lRWxlbWVudHNbbGluZU51bV0uY2xhc3NOYW1lID0gdGhpcy5saW5lVHlwZXNbbGluZU51bV07XG4gICAgICAgIHRoaXMubGluZUVsZW1lbnRzW2xpbmVOdW1dLnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnKTtcbiAgICAgICAgdGhpcy5saW5lRWxlbWVudHNbbGluZU51bV0uaW5uZXJIVE1MID0gKGNvbnRlbnRIVE1MID09ICcnID8gJzxiciAvPicgOiBjb250ZW50SFRNTCk7IC8vIFByZXZlbnQgZW1wdHkgZWxlbWVudHMgd2hpY2ggY2FuJ3QgYmUgc2VsZWN0ZWQgZXRjLlxuICAgICAgfVxuICAgICAgdGhpcy5saW5lRWxlbWVudHNbbGluZU51bV0uZGF0YXNldC5saW5lTnVtID0gbGluZU51bTtcbiAgICB9ICAgIFxuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgbGluZSB0eXBlcyBmb3IgYWxsIGxpbmVzIGJhc2VkIG9uIHRoZSBsaW5lIC8gYmxvY2sgZ3JhbW1hci4gQ2FwdHVyZXMgdGhlIHJlc3VsdHMgb2YgdGhlIHJlc3BlY3RpdmUgbGluZVxuICAgKiBncmFtbWFyIHJlZ3VsYXIgZXhwcmVzc2lvbnMuXG4gICAqIFVwZGF0ZXMgdGhpcy5saW5lVHlwZXMsIHRoaXMubGluZUNhcHR1cmVzLCBhbmQgdGhpcy5saW5lUmVwbGFjZW1lbnRzLlxuICAgKi9cbiAgdXBkYXRlTGluZVR5cGVzKCkge1xuICAgIGxldCBjb2RlQmxvY2tUeXBlID0gZmFsc2U7XG4gICAgbGV0IGNvZGVCbG9ja1NlcUxlbmd0aCA9IDA7XG4gICAgbGV0IGh0bWxCbG9jayA9IGZhbHNlO1xuXG4gICAgZm9yIChsZXQgbGluZU51bSA9IDA7IGxpbmVOdW0gPCB0aGlzLmxpbmVzLmxlbmd0aDsgbGluZU51bSsrKSB7XG4gICAgICBsZXQgbGluZVR5cGUgPSAnVE1QYXJhJztcbiAgICAgIGxldCBsaW5lQ2FwdHVyZSA9IFt0aGlzLmxpbmVzW2xpbmVOdW1dXTtcbiAgICAgIGxldCBsaW5lUmVwbGFjZW1lbnQgPSAnJCQwJzsgLy8gRGVmYXVsdCByZXBsYWNlbWVudCBmb3IgcGFyYWdyYXBoOiBJbmxpbmUgZm9ybWF0IHRoZSBlbnRpcmUgbGluZVxuXG4gICAgICAvLyBDaGVjayBvbmdvaW5nIGNvZGUgYmxvY2tzXG4gICAgICAvLyBpZiAobGluZU51bSA+IDAgJiYgKHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSAnVE1Db2RlRmVuY2VCYWNrdGlja09wZW4nIHx8IHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSAnVE1GZW5jZWRDb2RlQmFja3RpY2snKSkge1xuICAgICAgaWYgKGNvZGVCbG9ja1R5cGUgPT0gJ1RNQ29kZUZlbmNlQmFja3RpY2tPcGVuJykge1xuICAgICAgICAvLyBXZSdyZSBpbiBhIGJhY2t0aWNrLWZlbmNlZCBjb2RlIGJsb2NrLCBjaGVjayBpZiB0aGUgY3VycmVudCBsaW5lIGNsb3NlcyBpdFxuICAgICAgICBsZXQgY2FwdHVyZSA9IGxpbmVHcmFtbWFyLlRNQ29kZUZlbmNlQmFja3RpY2tDbG9zZS5yZWdleHAuZXhlYyh0aGlzLmxpbmVzW2xpbmVOdW1dKTtcbiAgICAgICAgaWYgKGNhcHR1cmUgJiYgY2FwdHVyZS5ncm91cHNbJ3NlcSddLmxlbmd0aCA+PSBjb2RlQmxvY2tTZXFMZW5ndGgpIHtcbiAgICAgICAgICBsaW5lVHlwZSA9ICdUTUNvZGVGZW5jZUJhY2t0aWNrQ2xvc2UnO1xuICAgICAgICAgIGxpbmVSZXBsYWNlbWVudCA9IGxpbmVHcmFtbWFyLlRNQ29kZUZlbmNlQmFja3RpY2tDbG9zZS5yZXBsYWNlbWVudDtcbiAgICAgICAgICBsaW5lQ2FwdHVyZSA9IGNhcHR1cmU7XG4gICAgICAgICAgY29kZUJsb2NrVHlwZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxpbmVUeXBlID0gJ1RNRmVuY2VkQ29kZUJhY2t0aWNrJztcbiAgICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSAnJDAnO1xuICAgICAgICAgIGxpbmVDYXB0dXJlID0gW3RoaXMubGluZXNbbGluZU51bV1dO1xuICAgICAgICB9IFxuICAgICAgfVxuICAgICAgLy8gaWYgKGxpbmVOdW0gPiAwICYmICh0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gJ1RNQ29kZUZlbmNlVGlsZGVPcGVuJyB8fCB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gJ1RNRmVuY2VkQ29kZVRpbGRlJykpIHtcbiAgICAgIGVsc2UgaWYgKGNvZGVCbG9ja1R5cGUgPT0gJ1RNQ29kZUZlbmNlVGlsZGVPcGVuJykge1xuICAgICAgICAvLyBXZSdyZSBpbiBhIHRpbGRlLWZlbmNlZCBjb2RlIGJsb2NrXG4gICAgICAgIGxldCBjYXB0dXJlID0gbGluZUdyYW1tYXIuVE1Db2RlRmVuY2VUaWxkZUNsb3NlLnJlZ2V4cC5leGVjKHRoaXMubGluZXNbbGluZU51bV0pO1xuICAgICAgICBpZiAoY2FwdHVyZSAmJiBjYXB0dXJlLmdyb3Vwc1snc2VxJ10ubGVuZ3RoID49IGNvZGVCbG9ja1NlcUxlbmd0aCkgIHtcbiAgICAgICAgICBsaW5lVHlwZSA9ICdUTUNvZGVGZW5jZVRpbGRlQ2xvc2UnO1xuICAgICAgICAgIGxpbmVSZXBsYWNlbWVudCA9IGxpbmVHcmFtbWFyLlRNQ29kZUZlbmNlVGlsZGVDbG9zZS5yZXBsYWNlbWVudDtcbiAgICAgICAgICBsaW5lQ2FwdHVyZSA9IGNhcHR1cmU7XG4gICAgICAgICAgY29kZUJsb2NrVHlwZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGxpbmVUeXBlID0gJ1RNRmVuY2VkQ29kZVRpbGRlJztcbiAgICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSAnJDAnO1xuICAgICAgICAgIGxpbmVDYXB0dXJlID0gW3RoaXMubGluZXNbbGluZU51bV1dO1xuICAgICAgICB9IFxuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBIVE1MIGJsb2NrIHR5cGVzXG4gICAgICBpZiAobGluZVR5cGUgPT0gJ1RNUGFyYScgJiYgaHRtbEJsb2NrID09PSBmYWxzZSkge1xuICAgICAgICBmb3IgKGxldCBodG1sQmxvY2tUeXBlIG9mIGh0bWxCbG9ja0dyYW1tYXIpIHtcbiAgICAgICAgICBpZiAodGhpcy5saW5lc1tsaW5lTnVtXS5tYXRjaChodG1sQmxvY2tUeXBlLnN0YXJ0KSkge1xuICAgICAgICAgICAgLy8gTWF0Y2hpbmcgc3RhcnQgY29uZGl0aW9uLiBDaGVjayBpZiB0aGlzIHRhZyBjYW4gc3RhcnQgaGVyZSAobm90IGFsbCBzdGFydCBjb25kaXRpb25zIGFsbG93IGJyZWFraW5nIGEgcGFyYWdyYXBoKS5cbiAgICAgICAgICAgIGlmIChodG1sQmxvY2tUeXBlLnBhcmFJbnRlcnJ1cHQgfHwgbGluZU51bSA9PSAwIHx8ICEodGhpcy5saW5lVHlwZXNbbGluZU51bS0xXSA9PSAnVE1QYXJhJyB8fCB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtLTFdID09ICdUTVVMJyB8fCB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtLTFdID09ICdUTU9MJyB8fCB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtLTFdID09ICdUTUJsb2NrcXVvdGUnKSkge1xuICAgICAgICAgICAgICBodG1sQmxvY2sgPSBodG1sQmxvY2tUeXBlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGh0bWxCbG9jayAhPT0gZmFsc2UpIHtcbiAgICAgICAgbGluZVR5cGUgPSAnVE1IVE1MQmxvY2snO1xuICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSAnJDAnOyAvLyBObyBmb3JtYXR0aW5nIGluIFRNSFRNTEJsb2NrXG4gICAgICAgIGxpbmVDYXB0dXJlID0gW3RoaXMubGluZXNbbGluZU51bV1dOyAvLyBUaGlzIHNob3VsZCBhbHJlYWR5IGJlIHNldCBidXQgYmV0dGVyIHNhZmUgdGhhbiBzb3JyeVxuXG4gICAgICAgIC8vIENoZWNrIGlmIEhUTUwgYmxvY2sgc2hvdWxkIGJlIGNsb3NlZFxuICAgICAgICBpZiAoaHRtbEJsb2NrLmVuZCkge1xuICAgICAgICAgIC8vIFNwZWNpZmljIGVuZCBjb25kaXRpb25cbiAgICAgICAgICBpZiAodGhpcy5saW5lc1tsaW5lTnVtXS5tYXRjaChodG1sQmxvY2suZW5kKSkge1xuICAgICAgICAgICAgaHRtbEJsb2NrID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE5vIHNwZWNpZmljIGVuZCBjb25kaXRpb24sIGVuZHMgd2l0aCBibGFuayBsaW5lXG4gICAgICAgICAgaWYgKGxpbmVOdW0gPT0gdGhpcy5saW5lcy5sZW5ndGggLSAxIHx8IHRoaXMubGluZXNbbGluZU51bSsxXS5tYXRjaChsaW5lR3JhbW1hci5UTUJsYW5rTGluZS5yZWdleHApKSB7XG4gICAgICAgICAgICBodG1sQmxvY2sgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgYWxsIHJlZ2V4cHMgaWYgd2UgaGF2ZW4ndCBhcHBsaWVkIG9uZSBvZiB0aGUgY29kZSBibG9jayB0eXBlc1xuICAgICAgaWYgKGxpbmVUeXBlID09ICdUTVBhcmEnKSB7XG4gICAgICAgIGZvciAobGV0IHR5cGUgaW4gbGluZUdyYW1tYXIpIHtcbiAgICAgICAgICBpZiAobGluZUdyYW1tYXJbdHlwZV0ucmVnZXhwKSB7XG4gICAgICAgICAgICBsZXQgY2FwdHVyZSA9IGxpbmVHcmFtbWFyW3R5cGVdLnJlZ2V4cC5leGVjKHRoaXMubGluZXNbbGluZU51bV0pO1xuICAgICAgICAgICAgaWYgKGNhcHR1cmUpIHtcbiAgICAgICAgICAgICAgbGluZVR5cGUgPSB0eXBlO1xuICAgICAgICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSBsaW5lR3JhbW1hclt0eXBlXS5yZXBsYWNlbWVudDtcbiAgICAgICAgICAgICAgbGluZUNhcHR1cmUgPSBjYXB0dXJlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gSWYgd2UndmUgb3BlbmVkIGEgY29kZSBibG9jaywgcmVtZW1iZXIgdGhhdFxuICAgICAgaWYgKGxpbmVUeXBlID09ICdUTUNvZGVGZW5jZUJhY2t0aWNrT3BlbicgfHwgbGluZVR5cGUgPT0gJ1RNQ29kZUZlbmNlVGlsZGVPcGVuJykge1xuICAgICAgICBjb2RlQmxvY2tUeXBlID0gbGluZVR5cGU7XG4gICAgICAgIGNvZGVCbG9ja1NlcUxlbmd0aCA9IGxpbmVDYXB0dXJlLmdyb3Vwc1snc2VxJ10ubGVuZ3RoO1xuICAgICAgfVxuXG4gICAgICAvLyBMaW5rIHJlZmVyZW5jZSBkZWZpbml0aW9uIGFuZCBpbmRlbnRlZCBjb2RlIGNhbid0IGludGVycnVwdCBhIHBhcmFncmFwaFxuICAgICAgaWYgKFxuICAgICAgICAobGluZVR5cGUgPT0gJ1RNSW5kZW50ZWRDb2RlJyB8fCBsaW5lVHlwZSA9PSAnVE1MaW5rUmVmZXJlbmNlRGVmaW5pdGlvbicpIFxuICAgICAgICAmJiBsaW5lTnVtID4gMCBcbiAgICAgICAgJiYgKHRoaXMubGluZVR5cGVzW2xpbmVOdW0tMV0gPT0gJ1RNUGFyYScgfHwgdGhpcy5saW5lVHlwZXNbbGluZU51bS0xXSA9PSAnVE1VTCcgfHwgdGhpcy5saW5lVHlwZXNbbGluZU51bS0xXSA9PSAnVE1PTCcgfHwgdGhpcy5saW5lVHlwZXNbbGluZU51bS0xXSA9PSAnVE1CbG9ja3F1b3RlJylcbiAgICAgICkge1xuICAgICAgICAvLyBGYWxsIGJhY2sgdG8gVE1QYXJhXG4gICAgICAgIGxpbmVUeXBlID0gJ1RNUGFyYSc7XG4gICAgICAgIGxpbmVDYXB0dXJlID0gW3RoaXMubGluZXNbbGluZU51bV1dO1xuICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSAnJCQwJztcbiAgICAgIH1cblxuICAgICAgLy8gU2V0ZXh0IEgyIG1hcmtlcnMgdGhhdCBjYW4gYWxzbyBiZSBpbnRlcnByZXRlZCBhcyBhbiBlbXB0eSBsaXN0IGl0ZW0gc2hvdWxkIGJlIHJlZ2FyZGVkIGFzIHN1Y2ggKGFzIHBlciBDb21tb25NYXJrIHNwZWMpXG4gICAgICBpZiAobGluZVR5cGUgPT0gJ1RNU2V0ZXh0SDJNYXJrZXInKSB7XG4gICAgICAgIGxldCBjYXB0dXJlID0gbGluZUdyYW1tYXIuVE1VTC5yZWdleHAuZXhlYyh0aGlzLmxpbmVzW2xpbmVOdW1dKTtcbiAgICAgICAgaWYgKGNhcHR1cmUpIHtcbiAgICAgICAgICBsaW5lVHlwZSA9ICdUTVVMJztcbiAgICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSBsaW5lR3JhbW1hci5UTVVMLnJlcGxhY2VtZW50O1xuICAgICAgICAgIGxpbmVDYXB0dXJlID0gY2FwdHVyZTtcbiAgICAgICAgfSAgICAgIFxuICAgICAgfVxuXG4gICAgICAvLyBTZXRleHQgaGVhZGluZ3MgYXJlIG9ubHkgdmFsaWQgaWYgcHJlY2VkZWQgYnkgYSBwYXJhZ3JhcGggKGFuZCBpZiBzbywgdGhleSBjaGFuZ2UgdGhlIHR5cGUgb2YgdGhlIHByZXZpb3VzIHBhcmFncmFwaClcbiAgICAgIGlmIChsaW5lVHlwZSA9PSAnVE1TZXRleHRIMU1hcmtlcicgfHwgbGluZVR5cGUgPT0gJ1RNU2V0ZXh0SDJNYXJrZXInKSB7XG4gICAgICAgIGlmIChsaW5lTnVtID09IDAgfHwgdGhpcy5saW5lVHlwZXNbbGluZU51bSAtIDFdICE9ICdUTVBhcmEnKSB7XG4gICAgICAgICAgLy8gU2V0ZXh0IG1hcmtlciBpcyBpbnZhbGlkLiBIb3dldmVyLCBhIEgyIG1hcmtlciBtaWdodCBzdGlsbCBiZSBhIHZhbGlkIEhSLCBzbyBsZXQncyBjaGVjayB0aGF0XG4gICAgICAgICAgbGV0IGNhcHR1cmUgPSBsaW5lR3JhbW1hci5UTUhSLnJlZ2V4cC5leGVjKHRoaXMubGluZXNbbGluZU51bV0pO1xuICAgICAgICAgIGlmIChjYXB0dXJlKSB7XG4gICAgICAgICAgICAvLyBWYWxpZCBIUlxuICAgICAgICAgICAgbGluZVR5cGUgPSAnVE1IUic7XG4gICAgICAgICAgICBsaW5lQ2FwdHVyZSA9IGNhcHR1cmU7XG4gICAgICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSBsaW5lR3JhbW1hci5UTUhSLnJlcGxhY2VtZW50O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBOb3QgdmFsaWQgSFIsIGZvcm1hdCBhcyBUTVBhcmFcbiAgICAgICAgICAgIGxpbmVUeXBlID0gJ1RNUGFyYSc7XG4gICAgICAgICAgICBsaW5lQ2FwdHVyZSA9IFt0aGlzLmxpbmVzW2xpbmVOdW1dXTtcbiAgICAgICAgICAgIGxpbmVSZXBsYWNlbWVudCA9ICckJDAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBWYWxpZCBzZXRleHQgbWFya2VyLiBDaGFuZ2UgdHlwZXMgb2YgcHJlY2VkaW5nIHBhcmEgbGluZXNcbiAgICAgICAgICBsZXQgaGVhZGluZ0xpbmUgPSBsaW5lTnVtIC0gMTtcbiAgICAgICAgICBjb25zdCBoZWFkaW5nTGluZVR5cGUgPSAobGluZVR5cGUgPT0gJ1RNU2V0ZXh0SDFNYXJrZXInID8gJ1RNU2V0ZXh0SDEnIDogJ1RNU2V0ZXh0SDInKTtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBpZiAodGhpcy5saW5lVHlwZXNbaGVhZGluZ0xpbmVUeXBlXSAhPSBoZWFkaW5nTGluZVR5cGUpIHtcbiAgICAgICAgICAgICAgdGhpcy5saW5lVHlwZXNbaGVhZGluZ0xpbmVdID0gaGVhZGluZ0xpbmVUeXBlOyBcbiAgICAgICAgICAgICAgdGhpcy5saW5lRGlydHlbaGVhZGluZ0xpbmVUeXBlXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxpbmVSZXBsYWNlbWVudHNbaGVhZGluZ0xpbmVdID0gJyQkMCc7XG4gICAgICAgICAgICB0aGlzLmxpbmVDYXB0dXJlc1toZWFkaW5nTGluZV0gPSBbdGhpcy5saW5lc1toZWFkaW5nTGluZV1dO1xuXG4gICAgICAgICAgICBoZWFkaW5nTGluZS0tO1xuICAgICAgICAgIH0gd2hpbGUoaGVhZGluZ0xpbmUgPj0gMCAmJiB0aGlzLmxpbmVUeXBlc1toZWFkaW5nTGluZV0gPT0gJ1RNUGFyYScpOyBcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gTGFzdGx5LCBzYXZlIHRoZSBsaW5lIHN0eWxlIHRvIGJlIGFwcGxpZWQgbGF0ZXJcbiAgICAgIGlmICh0aGlzLmxpbmVUeXBlc1tsaW5lTnVtXSAhPSBsaW5lVHlwZSkge1xuICAgICAgICB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtXSA9IGxpbmVUeXBlO1xuICAgICAgICB0aGlzLmxpbmVEaXJ0eVtsaW5lTnVtXSA9IHRydWU7XG4gICAgICB9XG4gICAgICB0aGlzLmxpbmVSZXBsYWNlbWVudHNbbGluZU51bV0gPSBsaW5lUmVwbGFjZW1lbnQ7XG4gICAgICB0aGlzLmxpbmVDYXB0dXJlc1tsaW5lTnVtXSA9IGxpbmVDYXB0dXJlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGFsbCBsaW5lIGNvbnRlbnRzIGZyb20gdGhlIEhUTUwsIHRoZW4gcmUtYXBwbGllcyBmb3JtYXR0aW5nLlxuICAgKi9cbiAgdXBkYXRlTGluZUNvbnRlbnRzQW5kRm9ybWF0dGluZygpIHtcbiAgICB0aGlzLmNsZWFyRGlydHlGbGFnKCk7XG4gICAgdGhpcy51cGRhdGVMaW5lQ29udGVudHMoKTtcbiAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0cyB0byBwYXJzZSBhIGxpbmsgb3IgaW1hZ2UgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBvcGVuaW5nIFsgb3IgIVsgaGFzIGFscmVhZHkgYmVlbiBtYXRjaGVkLiBcbiAgICogUmV0dXJucyBmYWxzZSBpZiB0aGlzIGlzIG5vdCBhIHZhbGlkIGxpbmssIGltYWdlLiBTZWUgYmVsb3cgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbmFsU3RyaW5nIFRoZSBvcmlnaW5hbCBzdHJpbmcsIHN0YXJ0aW5nIGF0IHRoZSBvcGVuaW5nIG1hcmtlciAoWyBvciAhWylcbiAgICogQHBhcmFtIHtib29sZWFufSBpc0ltYWdlIFdoZXRoZXIgb3Igbm90IHRoaXMgaXMgYW4gaW1hZ2UgKG9wZW5lciA9PSAhWylcbiAgICogQHJldHVybnMgZmFsc2UgaWYgbm90IGEgdmFsaWQgbGluayAvIGltYWdlLiBcbiAgICogT3RoZXJ3aXNlIHJldHVybnMgYW4gb2JqZWN0IHdpdGggdHdvIHByb3BlcnRpZXM6IG91dHB1dCBpcyB0aGUgc3RyaW5nIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBwcm9jZXNzZWQgb3V0cHV0LCBcbiAgICogY2hhckNvdW50IGlzIHRoZSBudW1iZXIgb2YgaW5wdXQgY2hhcmFjdGVycyAoZnJvbSBvcmlnaW5hbFN0cmluZykgY29uc3VtZWQuXG4gICAqL1xuICBwYXJzZUxpbmtPckltYWdlKG9yaWdpbmFsU3RyaW5nLCBpc0ltYWdlKSB7XG4gICAgLy8gU2tpcCB0aGUgb3BlbmluZyBicmFja2V0XG4gICAgbGV0IHRleHRPZmZzZXQgPSBpc0ltYWdlID8gMiA6IDE7XG4gICAgbGV0IG9wZW5lciA9IG9yaWdpbmFsU3RyaW5nLnN1YnN0cigwLCB0ZXh0T2Zmc2V0KTtcbiAgICBsZXQgdHlwZSA9IGlzSW1hZ2UgPyAnVE1JbWFnZScgOiAnVE1MaW5rJztcbiAgICBsZXQgY3VycmVudE9mZnNldCA9IHRleHRPZmZzZXQ7XG4gICAgXG4gICAgbGV0IGJyYWNrZXRMZXZlbCA9IDE7XG4gICAgbGV0IGxpbmtUZXh0ID0gZmFsc2U7XG4gICAgbGV0IGxpbmtSZWYgPSBmYWxzZTtcbiAgICBsZXQgbGlua0xhYmVsID0gW107XG4gICAgbGV0IGxpbmtEZXRhaWxzID0gW107IC8vIElmIG1hdGNoZWQsIHRoaXMgd2lsbCBiZSBhbiBhcnJheTogW3doaXRlc3BhY2UgKyBsaW5rIGRlc3RpbmF0aW9uIGRlbGltaXRlciwgbGluayBkZXN0aW5hdGlvbiwgbGluayBkZXN0aW5hdGlvbiBkZWxpbWl0ZXIsIHdoaXRlc3BhY2UsIGxpbmsgdGl0bGUgZGVsaW1pdGVyLCBsaW5rIHRpdGxlLCBsaW5rIHRpdGxlIGRlbGltaXRlciArIHdoaXRlc3BhY2VdLiBBbGwgY2FuIGJlIGVtcHR5IHN0cmluZ3MuXG5cbiAgXG4gICAgdGV4dE91dGVyOiB3aGlsZSAoY3VycmVudE9mZnNldCA8IG9yaWdpbmFsU3RyaW5nLmxlbmd0aCAmJiBsaW5rVGV4dCA9PT0gZmFsc2UgLyogZW1wdHkgc3RyaW5nIGlzIG9rYXkgKi8pIHtcbiAgICAgIGxldCBzdHJpbmcgPSBvcmlnaW5hbFN0cmluZy5zdWJzdHIoY3VycmVudE9mZnNldCk7XG4gIFxuICAgICAgLy8gQ2FwdHVyZSBhbnkgZXNjYXBlcyBhbmQgY29kZSBibG9ja3MgYXQgY3VycmVudCBwb3NpdGlvbiwgdGhleSBiaW5kIG1vcmUgc3Ryb25nbHkgdGhhbiBsaW5rc1xuICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSB0byBhY3R1YWxseSBwcm9jZXNzIHRoZW0gaGVyZSwgdGhhdCdsbCBiZSBkb25lIGxhdGVyIGluIGNhc2UgdGhlIGxpbmsgLyBpbWFnZSBpcyB2YWxpZCwgYnV0IHdlIG5lZWQgdG8gc2tpcCBvdmVyIHRoZW0uXG4gICAgICBmb3IgKGxldCBydWxlIG9mIFsnZXNjYXBlJywgJ2NvZGUnLCAnYXV0b2xpbmsnLCAnaHRtbCddKSB7XG4gICAgICAgIGxldCBjYXAgPSBpbmxpbmVHcmFtbWFyW3J1bGVdLnJlZ2V4cC5leGVjKHN0cmluZyk7XG4gICAgICAgIGlmIChjYXApIHtcbiAgICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgICAgY29udGludWUgdGV4dE91dGVyOyBcbiAgICAgICAgfVxuICAgICAgfVxuICBcbiAgICAgIC8vIENoZWNrIGZvciBpbWFnZS4gSXQncyBva2F5IGZvciBhbiBpbWFnZSB0byBiZSBpbmNsdWRlZCBpbiBhIGxpbmsgb3IgaW1hZ2VcbiAgICAgIGlmIChzdHJpbmcubWF0Y2goaW5saW5lR3JhbW1hci5pbWFnZU9wZW4ucmVnZXhwKSkge1xuICAgICAgICAvLyBPcGVuaW5nIGltYWdlLiBJdCdzIG9rYXkgaWYgdGhpcyBpcyBhIG1hdGNoaW5nIHBhaXIgb2YgYnJhY2tldHNcbiAgICAgICAgYnJhY2tldExldmVsKys7XG4gICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gMjtcbiAgICAgICAgY29udGludWUgdGV4dE91dGVyO1xuICAgICAgfVxuICBcbiAgICAgIC8vIENoZWNrIGZvciBsaW5rIChub3QgYW4gaW1hZ2UgYmVjYXVzZSB0aGF0IHdvdWxkIGhhdmUgYmVlbiBjYXB0dXJlZCBhbmQgc2tpcHBlZCBvdmVyIGFib3ZlKVxuICAgICAgaWYgKHN0cmluZy5tYXRjaChpbmxpbmVHcmFtbWFyLmxpbmtPcGVuLnJlZ2V4cCkpIHtcbiAgICAgICAgLy8gT3BlbmluZyBicmFja2V0LiBUd28gdGhpbmdzIHRvIGRvOlxuICAgICAgICAvLyAxKSBpdCdzIG9rYXkgaWYgdGhpcyBwYXJ0IG9mIGEgcGFpciBvZiBicmFja2V0cy5cbiAgICAgICAgLy8gMikgSWYgd2UgYXJlIGN1cnJlbnRseSB0cnlpbmcgdG8gcGFyc2UgYSBsaW5rLCB0aGlzIG5lc3RlZCBicmFja2V0IG11c24ndCBzdGFydCBhIHZhbGlkIGxpbmsgKG5vIG5lc3RlZCBsaW5rcyBhbGxvd2VkKVxuICAgICAgICBicmFja2V0TGV2ZWwrKztcbiAgICAgICAgLy8gaWYgKGJyYWNrZXRMZXZlbCA+PSAyKSByZXR1cm4gZmFsc2U7IC8vIE5lc3RlZCB1bmVzY2FwZWQgYnJhY2tldHMsIHRoaXMgZG9lc24ndCBxdWFsaWZ5IGFzIGEgbGluayAvIGltYWdlXG4gICAgICAgIGlmICghaXNJbWFnZSkge1xuICAgICAgICAgIGlmICh0aGlzLnBhcnNlTGlua09ySW1hZ2Uoc3RyaW5nLCBmYWxzZSkpIHtcbiAgICAgICAgICAgIC8vIFZhbGlkIGxpbmsgaW5zaWRlIHRoaXMgcG9zc2libGUgbGluaywgd2hpY2ggbWFrZXMgdGhpcyBsaW5rIGludmFsaWQgKGlubmVyIGxpbmtzIGJlYXQgb3V0ZXIgb25lcylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudE9mZnNldCArPSAxO1xuICAgICAgICBjb250aW51ZSB0ZXh0T3V0ZXI7XG4gICAgICB9XG4gIFxuICAgICAgLy8gQ2hlY2sgZm9yIGNsb3NpbmcgYnJhY2tldFxuICAgICAgaWYgKHN0cmluZy5tYXRjaCgvXlxcXS8pKSB7XG4gICAgICAgIGJyYWNrZXRMZXZlbC0tO1xuICAgICAgICBpZiAoYnJhY2tldExldmVsID09IDApIHtcbiAgICAgICAgICAvLyBGb3VuZCBtYXRjaGluZyBicmFja2V0IGFuZCBoYXZlbid0IGZvdW5kIGFueXRoaW5nIGRpc3F1YWxpZnlpbmcgdGhpcyBhcyBsaW5rIC8gaW1hZ2UuXG4gICAgICAgICAgbGlua1RleHQgPSBvcmlnaW5hbFN0cmluZy5zdWJzdHIodGV4dE9mZnNldCwgY3VycmVudE9mZnNldCAtIHRleHRPZmZzZXQpO1xuICAgICAgICAgIGN1cnJlbnRPZmZzZXQrKztcbiAgICAgICAgICBjb250aW51ZSB0ZXh0T3V0ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgXG4gICAgICAvLyBOb3RoaW5nIG1hdGNoZXMsIHByb2NlZWQgdG8gbmV4dCBjaGFyXG4gICAgICBjdXJyZW50T2Zmc2V0Kys7XG4gICAgfVxuICBcbiAgICAvLyBEaWQgd2UgZmluZCBhIGxpbmsgdGV4dCAoaS5lLiwgZmluZCBhIG1hdGNoaW5nIGNsb3NpbmcgYnJhY2tldD8pXG4gICAgaWYgKGxpbmtUZXh0ID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlOyAvLyBOb3BlXG4gIFxuICAgIC8vIFNvIGZhciwgc28gZ29vZC4gV2UndmUgZ290IGEgdmFsaWQgbGluayB0ZXh0LiBMZXQncyBzZWUgd2hhdCB0eXBlIG9mIGxpbmsgdGhpcyBpc1xuICAgIGxldCBuZXh0Q2hhciA9IGN1cnJlbnRPZmZzZXQgPCBvcmlnaW5hbFN0cmluZy5sZW5ndGggPyBvcmlnaW5hbFN0cmluZy5zdWJzdHIoY3VycmVudE9mZnNldCwgMSkgOiAnJzsgXG5cbiAgICAvLyBSRUZFUkVOQ0UgTElOS1NcbiAgICBpZiAobmV4dENoYXIgPT0gJ1snKSB7XG4gICAgICBsZXQgc3RyaW5nID0gb3JpZ2luYWxTdHJpbmcuc3Vic3RyKGN1cnJlbnRPZmZzZXQpO1xuICAgICAgbGV0IGNhcCA9IGlubGluZUdyYW1tYXIubGlua0xhYmVsLnJlZ2V4cC5leGVjKHN0cmluZyk7XG4gICAgICBpZiAoY2FwKSB7XG4gICAgICAgIC8vIFZhbGlkIGxpbmsgbGFiZWxcbiAgICAgICAgY3VycmVudE9mZnNldCArPSBjYXBbMF0ubGVuZ3RoO1xuICAgICAgICBsaW5rTGFiZWwucHVzaChjYXBbMV0sIGNhcFsyXSwgY2FwWzNdKTtcbiAgICAgICAgaWYgKGNhcFtpbmxpbmVHcmFtbWFyLmxpbmtMYWJlbC5sYWJlbFBsYWNlaG9sZGVyXSkge1xuICAgICAgICAgIC8vIEZ1bGwgcmVmZXJlbmNlIGxpbmtcbiAgICAgICAgICBsaW5rUmVmID0gY2FwW2lubGluZUdyYW1tYXIubGlua0xhYmVsLmxhYmVsUGxhY2Vob2xkZXJdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIENvbGxhcHNlZCByZWZlcmVuY2UgbGlua1xuICAgICAgICAgIGxpbmtSZWYgPSBsaW5rVGV4dC50cmltKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vdCBhIHZhbGlkIGxpbmsgbGFiZWxcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSAgIFxuICAgIH0gZWxzZSBpZiAobmV4dENoYXIgIT0gJygnKSB7XG4gICAgICBcbiAgICAgIC8vIFNob3J0Y3V0IHJlZiBsaW5rXG4gICAgICBsaW5rUmVmID0gbGlua1RleHQudHJpbSgpO1xuXG4gICAgLy8gSU5MSU5FIExJTktTXG4gICAgfSBlbHNlIHsgLy8gbmV4dENoYXIgPT0gJygnXG4gICAgICBcbiAgICAgIC8vIFBvdGVudGlhbCBpbmxpbmUgbGlua1xuICAgICAgY3VycmVudE9mZnNldCsrO1xuXG4gICAgICBsZXQgcGFyZW50aGVzaXNMZXZlbCA9IDE7XG4gICAgICBpbmxpbmVPdXRlcjogd2hpbGUgKGN1cnJlbnRPZmZzZXQgPCBvcmlnaW5hbFN0cmluZy5sZW5ndGggJiYgcGFyZW50aGVzaXNMZXZlbCA+IDApIHtcbiAgICAgICAgbGV0IHN0cmluZyA9IG9yaWdpbmFsU3RyaW5nLnN1YnN0cihjdXJyZW50T2Zmc2V0KTtcblxuICAgICAgICAvLyBQcm9jZXNzIHdoaXRlc3BhY2VcbiAgICAgICAgbGV0IGNhcCA9IC9eXFxzKy8uZXhlYyhzdHJpbmcpO1xuICAgICAgICBpZiAoY2FwKSB7XG4gICAgICAgICAgc3dpdGNoIChsaW5rRGV0YWlscy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDogbGlua0RldGFpbHMucHVzaChjYXBbMF0pOyBicmVhazsgLy8gT3BlbmluZyB3aGl0ZXNwYWNlXG4gICAgICAgICAgICBjYXNlIDE6IGxpbmtEZXRhaWxzLnB1c2goY2FwWzBdKTsgYnJlYWs7Ly8gT3BlbiBkZXN0aW5hdGlvbiwgYnV0IG5vdCBhIGRlc3RpbmF0aW9uIHlldDsgZGVzaW5hdGlvbiBvcGVuZWQgd2l0aCA8XG4gICAgICAgICAgICBjYXNlIDI6IC8vIE9wZW4gZGVzdGluYXRpb24gd2l0aCBjb250ZW50IGluIGl0LiBXaGl0ZXNwYWNlIG9ubHkgYWxsb3dlZCBpZiBvcGVuZWQgYnkgYW5nbGUgYnJhY2tldCwgb3RoZXJ3aXNlIHRoaXMgY2xvc2VzIHRoZSBkZXN0aW5hdGlvblxuICAgICAgICAgICAgICBpZiAobGlua0RldGFpbHNbMF0ubWF0Y2goLzwvKSkge1xuICAgICAgICAgICAgICAgIGxpbmtEZXRhaWxzWzFdID0gbGlua0RldGFpbHNbMV0uY29uY2F0KGNhcFswXSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudGhlc2lzTGV2ZWwgIT0gMSkgcmV0dXJuIGZhbHNlOyAvLyBVbmJhbGFuY2VkIHBhcmVudGhlc2lzXG4gICAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaCgnJyk7IC8vIEVtcHR5IGVuZCBkZWxpbWl0ZXIgZm9yIGRlc3RpbmF0aW9uXG4gICAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChjYXBbMF0pOyAvLyBXaGl0ZXNwYWNlIGluIGJldHdlZW4gZGVzdGluYXRpb24gYW5kIHRpdGxlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDM6IGxpbmtEZXRhaWxzLnB1c2goY2FwWzBdKTsgYnJlYWs7IC8vIFdoaXRlc3BhY2UgYmV0d2VlbiBkZXN0aW5hdGlvbiBhbmQgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIGZhbHNlOyAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gKG5vIG9wZW5lciBmb3IgdGl0bGUgeWV0LCBidXQgbW9yZSB3aGl0ZXNwYWNlIHRvIGNhcHR1cmUpXG4gICAgICAgICAgICBjYXNlIDU6IGxpbmtEZXRhaWxzLnB1c2goJycpOyAvLyBXaGl0ZXNwYWNlIGF0IGJlZ2lubmluZyBvZiB0aXRsZSwgcHVzaCBlbXB0eSB0aXRsZSBhbmQgY29udGludWVcbiAgICAgICAgICAgIGNhc2UgNjogbGlua0RldGFpbHNbNV0gPSBsaW5rRGV0YWlsc1s1XS5jb25jYXQoY2FwWzBdKTsgYnJlYWs7IC8vIFdoaXRlc3BhY2UgaW4gdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNzogbGlua0RldGFpbHNbNl0gPSBsaW5rRGV0YWlsc1s2XS5jb25jYXQoY2FwWzBdKTsgYnJlYWs7IC8vIFdoaXRlc3BhY2UgYWZ0ZXIgY2xvc2luZyBkZWxpbWl0ZXJcbiAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBmYWxzZTsgLy8gV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlXG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gY2FwWzBdLmxlbmd0aDtcbiAgICAgICAgICBjb250aW51ZSBpbmxpbmVPdXRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3MgYmFja3NsYXNoIGVzY2FwZXNcbiAgICAgICAgY2FwID0gaW5saW5lR3JhbW1hci5lc2NhcGUucmVnZXhwLmV4ZWMoc3RyaW5nKTtcbiAgICAgICAgaWYgKGNhcCkge1xuICAgICAgICAgIHN3aXRjaCAobGlua0RldGFpbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDA6IGxpbmtEZXRhaWxzLnB1c2goJycpOyAvLyB0aGlzIG9wZW5zIHRoZSBsaW5rIGRlc3RpbmF0aW9uLCBhZGQgZW1wdHkgb3BlbmluZyBkZWxpbWl0ZXIgYW5kIHByb2NlZWQgdG8gbmV4dCBjYXNlXG4gICAgICAgICAgICBjYXNlIDE6IGxpbmtEZXRhaWxzLnB1c2goY2FwWzBdKTsgYnJlYWs7IC8vIFRoaXMgb3BlbnMgdGhlIGxpbmsgZGVzdGluYXRpb24sIGFwcGVuZCBpdFxuICAgICAgICAgICAgY2FzZSAyOiBsaW5rRGV0YWlsc1sxXSA9IGxpbmtEZXRhaWxzWzFdLmNvbmNhdChjYXBbMF0pOyBicmVhazsgLy8gUGFydCBvZiB0aGUgbGluayBkZXN0aW5hdGlvblxuICAgICAgICAgICAgY2FzZSAzOiByZXR1cm4gZmFsc2U7IC8vIExhY2tpbmcgb3BlbmluZyBkZWxpbWl0ZXIgZm9yIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIGZhbHNlOyAvLyBMY2FraW5nIG9wZW5pbmcgZGVsaW1pdGVyIGZvciBsaW5rIHRpdGxlXG4gICAgICAgICAgICBjYXNlIDU6IGxpbmtEZXRhaWxzLnB1c2goJycpOyAvLyBUaGlzIG9wZW5zIHRoZSBsaW5rIHRpdGxlXG4gICAgICAgICAgICBjYXNlIDY6IGxpbmtEZXRhaWxzWzVdID0gbGlua0RldGFpbHNbNV0uY29uY2F0KGNhcFswXSk7IGJyZWFrOyAvLyBQYXJ0IG9mIHRoZSBsaW5rIHRpdGxlXG4gICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7IC8vIEFmdGVyIGxpbmsgdGl0bGUgd2FzIGNsb3NlZCwgd2l0aG91dCBjbG9zaW5nIHBhcmVudGhlc2lzXG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gY2FwWzBdLmxlbmd0aDtcbiAgICAgICAgICBjb250aW51ZSBpbmxpbmVPdXRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3Mgb3BlbmluZyBhbmdsZSBicmFja2V0IGFzIGRlaWxpbWl0ZXIgb2YgZGVzdGluYXRpb25cbiAgICAgICAgaWYgKGxpbmtEZXRhaWxzLmxlbmd0aCA8IDIgJiYgc3RyaW5nLm1hdGNoKC9ePC8pKSB7XG4gICAgICAgICAgaWYgKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSAwKSBsaW5rRGV0YWlscy5wdXNoKCcnKTtcbiAgICAgICAgICBsaW5rRGV0YWlsc1swXSA9IGxpbmtEZXRhaWxzWzBdLmNvbmNhdCgnPCcpO1xuICAgICAgICAgIGN1cnJlbnRPZmZzZXQrKztcbiAgICAgICAgICBjb250aW51ZSBpbmxpbmVPdXRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3MgY2xvc2luZyBhbmdsZSBicmFja2V0IGFzIGRlbGltaXRlciBvZiBkZXN0aW5hdGlvblxuICAgICAgICBpZiAoKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSAxIHx8IGxpbmtEZXRhaWxzLmxlbmd0aCA9PSAyKSAmJiBzdHJpbmcubWF0Y2goL14+LykpIHtcbiAgICAgICAgICBpZiAobGlua0RldGFpbHMubGVuZ3RoID09IDEpIGxpbmtEZXRhaWxzLnB1c2goJycpOyAvLyBFbXB0eSBsaW5rIGRlc3RpbmF0aW9uXG4gICAgICAgICAgbGlua0RldGFpbHMucHVzaCgnPicpO1xuICAgICAgICAgIGN1cnJlbnRPZmZzZXQrKztcbiAgICAgICAgICBjb250aW51ZSBpbmxpbmVPdXRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3MgIG5vbi1wYXJlbnRoZXNpcyBkZWxpbWl0ZXIgZm9yIHRpdGxlLiBcbiAgICAgICAgY2FwID0gL15bXCInXS8uZXhlYyhzdHJpbmcpXG4gICAgICAgIC8vIEZvciB0aGlzIHRvIGJlIGEgdmFsaWQgb3BlbmVyLCB3ZSBoYXZlIHRvIGVpdGhlciBoYXZlIG5vIGRlc3RpbmF0aW9uLCBvbmx5IHdoaXRlc3BhY2Ugc28gZmFyLFxuICAgICAgICAvLyBvciBhIGRlc3RpbmF0aW9uIHdpdGggdHJhaWxpbmcgd2hpdGVzcGFjZS5cbiAgICAgICAgaWYgKGNhcCAmJiAobGlua0RldGFpbHMubGVuZ3RoID09IDAgfHwgbGlua0RldGFpbHMubGVuZ3RoID09IDEgfHwgbGlua0RldGFpbHMubGVuZ3RoID09IDQpKSB7XG4gICAgICAgICAgd2hpbGUgKGxpbmtEZXRhaWxzLmxlbmd0aCA8IDQpIGxpbmtEZXRhaWxzLnB1c2goJycpO1xuICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goY2FwWzBdKTtcbiAgICAgICAgICBjdXJyZW50T2Zmc2V0Kys7XG4gICAgICAgICAgY29udGludWUgaW5saW5lT3V0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3IgdGhpcyB0byBiZSBhIHZhbGlkIGNsb3Nlciwgd2UgaGF2ZSB0byBoYXZlIGFuIG9wZW5lciBhbmQgc29tZSBvciBubyB0aXRsZSwgYW5kIHRoaXMgaGFzIHRvIG1hdGNoIHRoZSBvcGVuZXJcbiAgICAgICAgaWYgKGNhcCAmJiAobGlua0RldGFpbHMubGVuZ3RoID09IDUgfHwgbGlua0RldGFpbHMubGVuZ3RoID09IDYpICYmIGxpbmtEZXRhaWxzWzRdID09IGNhcFswXSkge1xuICAgICAgICAgIGlmIChsaW5rRGV0YWlscy5sZW5ndGggPT0gNSkgbGlua0RldGFpbHMucHVzaCgnJyk7IC8vIEVtcHR5IGxpbmsgdGl0bGVcbiAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKGNhcFswXSk7XG4gICAgICAgICAgY3VycmVudE9mZnNldCsrO1xuICAgICAgICAgIGNvbnRpbnVlIGlubGluZU91dGVyO1xuICAgICAgICB9XG4gICAgICAgIC8vIE90aGVyIGNhc2VzIChsaW5rRGV0YWlscy5sZW5ndGggPT0gMiwgMywgNykgd2lsbCBiZSBoYW5kbGVkIHdpdGggdGhlIFwiZGVmYXVsdFwiIGNhc2UgYmVsb3cuXG5cbiAgICAgICAgLy8gUHJvY2VzcyBvcGVuaW5nIHBhcmVudGhlc2lzXG4gICAgICAgIGlmIChzdHJpbmcubWF0Y2goL15cXCgvKSkge1xuICAgICAgICAgIHN3aXRjaCAobGlua0RldGFpbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDA6IGxpbmtEZXRhaWxzLnB1c2goJycpOyAvLyB0aGlzIG9wZW5zIHRoZSBsaW5rIGRlc3RpbmF0aW9uLCBhZGQgZW1wdHkgb3BlbmluZyBkZWxpbWl0ZXIgYW5kIHByb2NlZWQgdG8gbmV4dCBjYXNlXG4gICAgICAgICAgICBjYXNlIDE6IGxpbmtEZXRhaWxzLnB1c2goJycpOyAvLyBUaGlzIG9wZW5zIHRoZSBsaW5rIGRlc3RpbmF0aW9uXG4gICAgICAgICAgICBjYXNlIDI6IC8vIFBhcnQgb2YgdGhlIGxpbmsgZGVzdGluYXRpb25cbiAgICAgICAgICAgICAgbGlua0RldGFpbHNbMV0gPSBsaW5rRGV0YWlsc1sxXS5jb25jYXQoJygnKTsgXG4gICAgICAgICAgICAgIGlmICghbGlua0RldGFpbHNbMF0ubWF0Y2goLzwkLykpIHBhcmVudGhlc2lzTGV2ZWwrKzsgIFxuICAgICAgICAgICAgICBicmVhazsgXG4gICAgICAgICAgICBjYXNlIDM6IGxpbmtEZXRhaWxzLnB1c2goJycpOyAgLy8gIG9wZW5pbmcgZGVsaW1pdGVyIGZvciBsaW5rIHRpdGxlXG4gICAgICAgICAgICBjYXNlIDQ6IGxpbmtEZXRhaWxzLnB1c2goJygnKTsgYnJlYWs7Ly8gb3BlbmluZyBkZWxpbWl0ZXIgZm9yIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNTogbGlua0RldGFpbHMucHVzaCgnJyk7IC8vIG9wZW5zIHRoZSBsaW5rIHRpdGxlLCBhZGQgZW1wdHkgdGl0bGUgY29udGVudCBhbmQgcHJvY2VlZCB0byBuZXh0IGNhc2UgXG4gICAgICAgICAgICBjYXNlIDY6Ly8gUGFydCBvZiB0aGUgbGluayB0aXRsZS4gVW4tZXNjYXBlZCBwYXJlbnRoZXNpcyBvbmx5IGFsbG93ZWQgaW4gXCIgb3IgJyBkZWxpbWl0ZWQgdGl0bGVcbiAgICAgICAgICAgICAgaWYgKGxpbmtEZXRhaWxzWzRdID09ICcoJykgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICBsaW5rRGV0YWlsc1s1XSA9IGxpbmtEZXRhaWxzWzVdLmNvbmNhdCgnKCcpOyBcbiAgICAgICAgICAgICAgYnJlYWs7IFxuICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGZhbHNlOyAvLyBBZnRlciBsaW5rIHRpdGxlIHdhcyBjbG9zZWQsIHdpdGhvdXQgY2xvc2luZyBwYXJlbnRoZXNpc1xuICAgICAgICAgIH1cbiAgICAgICAgICBjdXJyZW50T2Zmc2V0Kys7XG4gICAgICAgICAgY29udGludWUgaW5saW5lT3V0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcm9jZXNzIGNsb3NpbmcgcGFyZW50aGVzaXNcbiAgICAgICAgaWYgKHN0cmluZy5tYXRjaCgvXlxcKS8pKSB7XG4gICAgICAgICAgaWYgKGxpbmtEZXRhaWxzLmxlbmd0aCA8PSAyKSB7XG4gICAgICAgICAgICAvLyBXZSBhcmUgaW5zaWRlIHRoZSBsaW5rIGRlc3RpbmF0aW9uLiBQYXJlbnRoZXNlcyBoYXZlIHRvIGJlIG1hdGNoZWQgaWYgbm90IGluIGFuZ2xlIGJyYWNrZXRzXG4gICAgICAgICAgICB3aGlsZSAobGlua0RldGFpbHMubGVuZ3RoIDwgMikgbGlua0RldGFpbHMucHVzaCgnJyk7XG5cbiAgICAgICAgICAgIGlmICghbGlua0RldGFpbHNbMF0ubWF0Y2goLzwkLykpIHBhcmVudGhlc2lzTGV2ZWwtLTtcblxuICAgICAgICAgICAgaWYgKHBhcmVudGhlc2lzTGV2ZWwgPiAwKSB7XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzWzFdID0gbGlua0RldGFpbHNbMV0uY29uY2F0KCcpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICB9IGVsc2UgaWYgKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA1IHx8IGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA2KSB7XG4gICAgICAgICAgICAvLyBXZSBhcmUgaW5zaWRlIHRoZSBsaW5rIHRpdGxlLiBcbiAgICAgICAgICAgIGlmIChsaW5rRGV0YWlsc1s0XSA9PSAnKCcpIHtcbiAgICAgICAgICAgICAgLy8gVGhpcyBjbG9zZXMgdGhlIGxpbmsgdGl0bGVcbiAgICAgICAgICAgICAgaWYgKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA1KSBsaW5rRGV0YWlscy5wdXNoKCcnKTtcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaCgnKScpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gSnVzdCByZWd1bGFyIG9sJyBjb250ZW50XG4gICAgICAgICAgICAgIGlmIChsaW5rRGV0YWlscy5sZW5ndGggPT0gNSkgbGlua0RldGFpbHMucHVzaCgnKScpO1xuICAgICAgICAgICAgICBlbHNlIGxpbmtEZXRhaWxzWzVdID0gbGlua0RldGFpbHNbNV0uY29uY2F0KCcpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlICB7XG4gICAgICAgICAgICBwYXJlbnRoZXNpc0xldmVsLS07IC8vIFRoaXMgc2hvdWxkIGRlY3JlYXNlIGl0IGZyb20gMSB0byAwLi4uXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHBhcmVudGhlc2lzTGV2ZWwgPT0gMCkge1xuICAgICAgICAgICAgLy8gTm8gaW52YWxpZCBjb25kaXRpb24sIGxldCdzIG1ha2Ugc3VyZSB0aGUgbGlua0RldGFpbHMgYXJyYXkgaXMgY29tcGxldGVcbiAgICAgICAgICAgIHdoaWxlIChsaW5rRGV0YWlscy5sZW5ndGggPCA3KSBsaW5rRGV0YWlscy5wdXNoKCcnKTtcbiAgICAgICAgICB9IFxuXG4gICAgICAgICAgY3VycmVudE9mZnNldCsrO1xuICAgICAgICAgIGNvbnRpbnVlIGlubGluZU91dGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQW55IG9sZCBjaGFyYWN0ZXJcbiAgICAgICAgY2FwID0gL14uLy5leGVjKHN0cmluZyk7XG4gICAgICAgIGlmIChjYXApIHtcbiAgICAgICAgICBzd2l0Y2ggKGxpbmtEZXRhaWxzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOiBsaW5rRGV0YWlscy5wdXNoKCcnKTsgLy8gdGhpcyBvcGVucyB0aGUgbGluayBkZXN0aW5hdGlvbiwgYWRkIGVtcHR5IG9wZW5pbmcgZGVsaW1pdGVyIGFuZCBwcm9jZWVkIHRvIG5leHQgY2FzZVxuICAgICAgICAgICAgY2FzZSAxOiBsaW5rRGV0YWlscy5wdXNoKGNhcFswXSk7IGJyZWFrOyAvLyBUaGlzIG9wZW5zIHRoZSBsaW5rIGRlc3RpbmF0aW9uLCBhcHBlbmQgaXRcbiAgICAgICAgICAgIGNhc2UgMjogbGlua0RldGFpbHNbMV0gPSBsaW5rRGV0YWlsc1sxXS5jb25jYXQoY2FwWzBdKTsgYnJlYWs7IC8vIFBhcnQgb2YgdGhlIGxpbmsgZGVzdGluYXRpb25cbiAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIGZhbHNlOyAvLyBMYWNraW5nIG9wZW5pbmcgZGVsaW1pdGVyIGZvciBsaW5rIHRpdGxlXG4gICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBmYWxzZTsgLy8gTGNha2luZyBvcGVuaW5nIGRlbGltaXRlciBmb3IgbGluayB0aXRsZVxuICAgICAgICAgICAgY2FzZSA1OiBsaW5rRGV0YWlscy5wdXNoKCcnKTsgLy8gVGhpcyBvcGVucyB0aGUgbGluayB0aXRsZVxuICAgICAgICAgICAgY2FzZSA2OiBsaW5rRGV0YWlsc1s1XSA9IGxpbmtEZXRhaWxzWzVdLmNvbmNhdChjYXBbMF0pOyBicmVhazsgLy8gUGFydCBvZiB0aGUgbGluayB0aXRsZVxuICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGZhbHNlOyAvLyBBZnRlciBsaW5rIHRpdGxlIHdhcyBjbG9zZWQsIHdpdGhvdXQgY2xvc2luZyBwYXJlbnRoZXNpc1xuICAgICAgICAgIH1cbiAgICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgICAgY29udGludWUgaW5saW5lT3V0ZXI7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgXCJJbmZpbml0ZSBsb29wXCI7IC8vIHdlIHNob3VsZCBuZXZlciBnZXQgaGVyZSBzaW5jZSB0aGUgbGFzdCB0ZXN0IG1hdGNoZXMgYW55IGNoYXJhY3RlclxuICAgICAgfVxuICAgICAgaWYgKHBhcmVudGhlc2lzTGV2ZWwgPiAwKSByZXR1cm4gZmFsc2U7IC8vIFBhcmVudGhlcyhlcykgbm90IGNsb3NlZFxuXG4gICAgfVxuXG4gICAgaWYgKGxpbmtSZWYgIT09IGZhbHNlKSB7XG4gICAgICAvLyBSZWYgbGluazsgY2hlY2sgdGhhdCBsaW5rUmVmIGlzIHZhbGlkXG4gICAgICBsZXQgdmFsaWQgPSBmYWxzZTtcbiAgICAgIGZvciAobGV0IGxhYmVsIG9mIHRoaXMubGlua0xhYmVscykge1xuICAgICAgICBpZiAobGFiZWwgPT0gbGlua1JlZikge1xuICAgICAgICAgIHZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV0IGxhYmVsID0gdmFsaWQgPyBcIlRNTGlua0xhYmVsIFRNTGlua0xhYmVsX1ZhbGlkXCIgOiBcIlRNTGlua0xhYmVsIFRNTGlua0xhYmVsX0ludmFsaWRcIlxuICAgICAgbGV0IG91dHB1dCA9IGA8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPiR7b3BlbmVyfTwvc3Bhbj48c3BhbiBjbGFzcz1cIiR7dHlwZX0gJHsobGlua0xhYmVsLmxlbmd0aCA8IDMgfHwgIWxpbmtMYWJlbFsxXSkgPyBsYWJlbCA6IFwiXCJ9XCI+JHt0aGlzLnByb2Nlc3NJbmxpbmVTdHlsZXMobGlua1RleHQpfTwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPl08L3NwYW4+YDtcblxuICAgICAgaWYgKGxpbmtMYWJlbC5sZW5ndGggPj0gMykge1xuICAgICAgICBvdXRwdXQgPSBvdXRwdXQuY29uY2F0KFxuICAgICAgICAgIGA8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPiR7bGlua0xhYmVsWzBdfTwvc3Bhbj5gLFxuICAgICAgICAgIGA8c3BhbiBjbGFzcz1cIiR7bGFiZWx9XCI+JHtsaW5rTGFiZWxbMV19PC9zcGFuPmAsXG4gICAgICAgICAgYDxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya18ke3R5cGV9XCI+JHtsaW5rTGFiZWxbMl19PC9zcGFuPmBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG91dHB1dCA6IG91dHB1dCxcbiAgICAgICAgY2hhckNvdW50IDogIGN1cnJlbnRPZmZzZXRcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAobGlua0RldGFpbHMpIHtcbiAgICAgIC8vIElubGluZSBsaW5rXG5cbiAgICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiwgYnV0IGJldHRlciBzYWZlIHRoYW4gc29ycnkuXG4gICAgICB3aGlsZSAobGlua0RldGFpbHMubGVuZ3RoIDwgNykge1xuICAgICAgICBsaW5rRGV0YWlscy5wdXNoKCcnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3V0cHV0OiBgPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrXyR7dHlwZX1cIj4ke29wZW5lcn08L3NwYW4+PHNwYW4gY2xhc3M9XCIke3R5cGV9XCI+JHt0aGlzLnByb2Nlc3NJbmxpbmVTdHlsZXMobGlua1RleHQpfTwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPl0oJHtsaW5rRGV0YWlsc1swXX08L3NwYW4+PHNwYW4gY2xhc3M9XCIke3R5cGV9RGVzdGluYXRpb25cIj4ke2xpbmtEZXRhaWxzWzFdfTwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPiR7bGlua0RldGFpbHNbMl19JHtsaW5rRGV0YWlsc1szXX0ke2xpbmtEZXRhaWxzWzRdfTwvc3Bhbj48c3BhbiBjbGFzcz1cIiR7dHlwZX1UaXRsZVwiPiR7bGlua0RldGFpbHNbNV19PC9zcGFuPjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya18ke3R5cGV9XCI+JHtsaW5rRGV0YWlsc1s2XX0pPC9zcGFuPmAsXG4gICAgICAgIGNoYXJDb3VudDogY3VycmVudE9mZnNldFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEZvcm1hdHMgYSBtYXJrZG93biBzdHJpbmcgYXMgSFRNTCwgdXNpbmcgTWFya2Rvd24gaW5saW5lIGZvcm1hdHRpbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW5hbFN0cmluZyBUaGUgaW5wdXQgKG1hcmtkb3duIGlubGluZSBmb3JtYXR0ZWQpIHN0cmluZ1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgSFRNTCBmb3JtYXR0ZWQgb3V0cHV0XG4gICAqL1xuICBwcm9jZXNzSW5saW5lU3R5bGVzKG9yaWdpbmFsU3RyaW5nKSB7XG4gICAgbGV0IHByb2Nlc3NlZCA9ICcnO1xuICAgIGxldCBzdGFjayA9IFtdOyAvLyBTdGFjayBpcyBhbiBhcnJheSBvZiBvYmplY3RzIG9mIHRoZSBmb3JtYXQ6IHtkZWxpbWl0ZXIsIGRlbGltU3RyaW5nLCBjb3VudCwgb3V0cHV0fVxuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGxldCBzdHJpbmcgPSBvcmlnaW5hbFN0cmluZztcbiAgXG4gIFxuICAgIG91dGVyOiB3aGlsZSAoc3RyaW5nKSB7XG4gICAgICAvLyBQcm9jZXNzIHNpbXBsZSBydWxlcyAobm9uLWRlbGltaXRlcilcbiAgICAgIGZvciAobGV0IHJ1bGUgb2YgWydlc2NhcGUnLCAnY29kZScsICdhdXRvbGluaycsICdodG1sJ10pIHtcbiAgICAgICAgbGV0IGNhcCA9IGlubGluZUdyYW1tYXJbcnVsZV0ucmVnZXhwLmV4ZWMoc3RyaW5nKTtcbiAgICAgICAgaWYgKGNhcCkge1xuICAgICAgICAgIHN0cmluZyA9IHN0cmluZy5zdWJzdHIoY2FwWzBdLmxlbmd0aCk7XG4gICAgICAgICAgb2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgICAgcHJvY2Vzc2VkICs9IGlubGluZUdyYW1tYXJbcnVsZV0ucmVwbGFjZW1lbnRcbiAgICAgICAgICAgIC8vIC5yZXBsYWNlKC9cXCRcXCQoWzEtOV0pL2csIChzdHIsIHAxKSA9PiBwcm9jZXNzSW5saW5lU3R5bGVzKGNhcFtwMV0pKSAvLyB0b2RvIHJlY3Vyc2l2ZSBjYWxsaW5nXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwkKFsxLTldKS9nLCAoc3RyLCBwMSkgPT4gaHRtbGVzY2FwZShjYXBbcDFdKSk7XG4gICAgICAgICAgY29udGludWUgb3V0ZXI7IFxuICAgICAgICB9XG4gICAgICB9XG4gIFxuICAgICAgLy8gQ2hlY2sgZm9yIGxpbmtzIC8gaW1hZ2VzXG4gICAgICBsZXQgcG90ZW50aWFsTGluayA9IHN0cmluZy5tYXRjaChpbmxpbmVHcmFtbWFyLmxpbmtPcGVuLnJlZ2V4cCk7XG4gICAgICBsZXQgcG90ZW50aWFsSW1hZ2UgPSBzdHJpbmcubWF0Y2goaW5saW5lR3JhbW1hci5pbWFnZU9wZW4ucmVnZXhwKTtcbiAgICAgIGlmIChwb3RlbnRpYWxJbWFnZSB8fCBwb3RlbnRpYWxMaW5rKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLnBhcnNlTGlua09ySW1hZ2Uoc3RyaW5nLCBwb3RlbnRpYWxJbWFnZSk7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICBwcm9jZXNzZWQgPSBgJHtwcm9jZXNzZWR9JHtyZXN1bHQub3V0cHV0fWA7XG4gICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnN1YnN0cihyZXN1bHQuY2hhckNvdW50KTtcbiAgICAgICAgICBvZmZzZXQgKz0gcmVzdWx0LmNoYXJDb3VudDtcbiAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBDaGVjayBmb3IgZW0gLyBzdHJvbmcgZGVsaW1pdGVyc1xuICAgICAgbGV0IGNhcCA9IC8oXlxcKispfCheXyspLy5leGVjKHN0cmluZyk7XG4gICAgICBpZiAoY2FwKSB7XG4gICAgICAgIGxldCBkZWxpbUNvdW50ID0gY2FwWzBdLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZGVsaW1TdHJpbmcgPSBjYXBbMF07XG4gICAgICAgIGNvbnN0IGN1cnJlbnREZWxpbWl0ZXIgPSBjYXBbMF1bMF07IC8vIFRoaXMgc2hvdWxkIGJlICogb3IgX1xuICBcbiAgICAgICAgc3RyaW5nID0gc3RyaW5nLnN1YnN0cihjYXBbMF0ubGVuZ3RoKTtcbiAgICAgIFxuICAgICAgICAvLyBXZSBoYXZlIGEgZGVsaW1pdGVyIHJ1bi4gTGV0J3MgY2hlY2sgaWYgaXQgY2FuIG9wZW4gb3IgY2xvc2UgYW4gZW1waGFzaXMuXG4gICAgICAgIFxuICAgICAgICBjb25zdCBwcmVjZWRpbmcgPSAob2Zmc2V0ID4gMCkgPyBvcmlnaW5hbFN0cmluZy5zdWJzdHIoMCwgb2Zmc2V0KSA6ICcgJzsgLy8gYmVnaW5uaW5nIGFuZCBlbmQgb2YgbGluZSBjb3VudCBhcyB3aGl0ZXNwYWNlXG4gICAgICAgIGNvbnN0IGZvbGxvd2luZyA9IChvZmZzZXQgKyBjYXBbMF0ubGVuZ3RoIDwgb3JpZ2luYWxTdHJpbmcubGVuZ3RoKSA/IHN0cmluZyA6ICcgJztcbiAgXG4gICAgICAgIGNvbnN0IHB1bmN0dWF0aW9uRm9sbG93cyA9IGZvbGxvd2luZy5tYXRjaChwdW5jdHVhdGlvbkxlYWRpbmcpO1xuICAgICAgICBjb25zdCBwdW5jdHVhdGlvblByZWNlZGVzID0gcHJlY2VkaW5nLm1hdGNoKHB1bmN0dWF0aW9uVHJhaWxpbmcpO1xuICAgICAgICBjb25zdCB3aGl0ZXNwYWNlRm9sbG93cyA9IGZvbGxvd2luZy5tYXRjaCgvXlxccy8pO1xuICAgICAgICBjb25zdCB3aGl0ZXNwYWNlUHJlY2VkZXMgPSBwcmVjZWRpbmcubWF0Y2goL1xccyQvKTtcbiAgXG4gICAgICAgIC8vIFRoZXNlIGFyZSB0aGUgcnVsZXMgZm9yIHJpZ2h0LWZsYW5raW5nIGFuZCBsZWZ0LWZsYW5raW5nIGRlbGltaXRlciBydW5zIGFzIHBlciBDb21tb25NYXJrIHNwZWNcbiAgICAgICAgbGV0IGNhbk9wZW4gPSAhd2hpdGVzcGFjZUZvbGxvd3MgJiYgKCFwdW5jdHVhdGlvbkZvbGxvd3MgfHwgISF3aGl0ZXNwYWNlUHJlY2VkZXMgfHwgISFwdW5jdHVhdGlvblByZWNlZGVzKTtcbiAgICAgICAgbGV0IGNhbkNsb3NlID0gIXdoaXRlc3BhY2VQcmVjZWRlcyAmJiAoIXB1bmN0dWF0aW9uUHJlY2VkZXMgfHwgISF3aGl0ZXNwYWNlRm9sbG93cyB8fCAhIXB1bmN0dWF0aW9uRm9sbG93cyk7XG4gIFxuICAgICAgICAvLyBVbmRlcnNjb3JlcyBoYXZlIG1vcmUgZGV0YWlsZWQgcnVsZXMgdGhhbiBqdXN0IGJlaW5nIHBhcnQgb2YgbGVmdC0gb3IgcmlnaHQtZmxhbmtpbmcgcnVuOlxuICAgICAgICBpZiAoY3VycmVudERlbGltaXRlciA9PSAnXycgJiYgY2FuT3BlbiAmJiBjYW5DbG9zZSkge1xuICAgICAgICAgIGNhbk9wZW4gPSBwdW5jdHVhdGlvblByZWNlZGVzO1xuICAgICAgICAgIGNhbkNsb3NlID0gcHVuY3R1YXRpb25Gb2xsb3dzO1xuICAgICAgICB9XG4gIFxuICAgICAgICAvLyBJZiB0aGUgZGVsaW1pdGVyIGNhbiBjbG9zZSwgY2hlY2sgdGhlIHN0YWNrIGlmIHRoZXJlJ3Mgc29tZXRoaW5nIGl0IGNhbiBjbG9zZVxuICAgICAgICBpZiAoY2FuQ2xvc2UpIHtcbiAgICAgICAgICBsZXQgc3RhY2tQb2ludGVyID0gc3RhY2subGVuZ3RoIC0gMTtcbiAgICAgICAgICAvLyBTZWUgaWYgd2UgY2FuIGZpbmQgYSBtYXRjaGluZyBvcGVuaW5nIGRlbGltaXRlciwgbW92ZSBkb3duIHRocm91Z2ggdGhlIHN0YWNrXG4gICAgICAgICAgd2hpbGUgKGRlbGltQ291bnQgJiYgc3RhY2tQb2ludGVyID49IDApIHtcbiAgICAgICAgICAgIGlmIChzdGFja1tzdGFja1BvaW50ZXJdLmRlbGltaXRlciA9PSBjdXJyZW50RGVsaW1pdGVyKSB7XG4gICAgICAgICAgICAgIC8vIFdlIGZvdW5kIGEgbWF0Y2hpbmcgZGVsaW1pdGVyLCBsZXQncyBjb25zdHJ1Y3QgdGhlIGZvcm1hdHRlZCBzdHJpbmdcbiAgXG4gICAgICAgICAgICAgIC8vIEZpcnN0bHksIGlmIHdlIHNraXBwZWQgYW55IHN0YWNrIGxldmVscywgcG9wIHRoZW0gaW1tZWRpYXRlbHkgKG5vbi1tYXRjaGluZyBkZWxpbWl0ZXJzKVxuICAgICAgICAgICAgICB3aGlsZSAoc3RhY2tQb2ludGVyIDwgc3RhY2subGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gc3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc2VkID0gYCR7ZW50cnkub3V0cHV0fSR7ZW50cnkuZGVsaW1TdHJpbmcuc3Vic3RyKDAsIGVudHJ5LmNvdW50KX0ke3Byb2Nlc3NlZH1gO1xuICAgICAgICAgICAgICB9XG4gIFxuICAgICAgICAgICAgICAvLyBUaGVuLCBmb3JtYXQgdGhlIHN0cmluZ1xuICAgICAgICAgICAgICBpZiAoZGVsaW1Db3VudCA+PSAyICYmIHN0YWNrW3N0YWNrUG9pbnRlcl0uY291bnQgPj0gMikge1xuICAgICAgICAgICAgICAgIC8vIFN0cm9uZ1xuICAgICAgICAgICAgICAgIHByb2Nlc3NlZCA9IGA8c3BhbiBjbGFzcz1cIlRNTWFya1wiPiR7Y3VycmVudERlbGltaXRlcn0ke2N1cnJlbnREZWxpbWl0ZXJ9PC9zcGFuPjxzdHJvbmcgY2xhc3M9XCJUTVN0cm9uZ1wiPiR7cHJvY2Vzc2VkfTwvc3Ryb25nPjxzcGFuIGNsYXNzPVwiVE1NYXJrXCI+JHtjdXJyZW50RGVsaW1pdGVyfSR7Y3VycmVudERlbGltaXRlcn08L3NwYW4+YDtcbiAgICAgICAgICAgICAgICBkZWxpbUNvdW50IC09IDI7XG4gICAgICAgICAgICAgICAgc3RhY2tbc3RhY2tQb2ludGVyXS5jb3VudCAtPSAyO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEVtXG4gICAgICAgICAgICAgICAgcHJvY2Vzc2VkID0gYDxzcGFuIGNsYXNzPVwiVE1NYXJrXCI+JHtjdXJyZW50RGVsaW1pdGVyfTwvc3Bhbj48ZW0gY2xhc3M9XCJUTUVtXCI+JHtwcm9jZXNzZWR9PC9lbT48c3BhbiBjbGFzcz1cIlRNTWFya1wiPiR7Y3VycmVudERlbGltaXRlcn08L3NwYW4+YDtcbiAgICAgICAgICAgICAgICBkZWxpbUNvdW50IC09IDE7XG4gICAgICAgICAgICAgICAgc3RhY2tbc3RhY2tQb2ludGVyXS5jb3VudCAtPSAxO1xuICAgICAgICAgICAgICB9XG4gIFxuICAgICAgICAgICAgICAvLyBJZiB0aGF0IHN0YWNrIGxldmVsIGlzIGVtcHR5IG5vdywgcG9wIGl0XG4gICAgICAgICAgICAgIGlmIChzdGFja1tzdGFja1BvaW50ZXJdLmNvdW50ID09IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgZW50cnkgPSBzdGFjay5wb3AoKTtcbiAgICAgICAgICAgICAgICBwcm9jZXNzZWQgPSBgJHtlbnRyeS5vdXRwdXR9JHtwcm9jZXNzZWR9YFxuICAgICAgICAgICAgICAgIHN0YWNrUG9pbnRlci0tO1xuICAgICAgICAgICAgICB9XG4gIFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gVGhpcyBzdGFjayBsZXZlbCdzIGRlbGltaXRlciB0eXBlIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnQgZGVsaW1pdGVyIHR5cGVcbiAgICAgICAgICAgICAgLy8gR28gZG93biBvbmUgbGV2ZWwgaW4gdGhlIHN0YWNrXG4gICAgICAgICAgICAgIHN0YWNrUG9pbnRlci0tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB0aGVyZSBhcmUgc3RpbGwgZGVsaW1pdGVycyBsZWZ0LCBhbmQgdGhlIGRlbGltaXRlciBydW4gY2FuIG9wZW4sIHB1c2ggaXQgb24gdGhlIHN0YWNrXG4gICAgICAgIGlmIChkZWxpbUNvdW50ICYmIGNhbk9wZW4pIHtcbiAgICAgICAgICBzdGFjay5wdXNoKHtcbiAgICAgICAgICAgIGRlbGltaXRlcjogY3VycmVudERlbGltaXRlcixcbiAgICAgICAgICAgIGRlbGltU3RyaW5nOiBkZWxpbVN0cmluZyxcbiAgICAgICAgICAgIGNvdW50OiBkZWxpbUNvdW50LFxuICAgICAgICAgICAgb3V0cHV0OiBwcm9jZXNzZWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwcm9jZXNzZWQgPSAnJzsgLy8gQ3VycmVudCBmb3JtYXR0ZWQgb3V0cHV0IGhhcyBiZWVuIHB1c2hlZCBvbiB0aGUgc3RhY2sgYW5kIHdpbGwgYmUgcHJlcGVuZGVkIHdoZW4gdGhlIHN0YWNrIGdldHMgcG9wcGVkXG4gICAgICAgICAgZGVsaW1Db3VudCA9IDA7XG4gICAgICAgIH1cbiAgXG4gICAgICAgIC8vIEFueSBkZWxpbWl0ZXJzIHRoYXQgYXJlIGxlZnQgKGNsb3NpbmcgdW5tYXRjaGVkKSBhcmUgYXBwZW5kZWQgdG8gdGhlIG91dHB1dC5cbiAgICAgICAgaWYgKGRlbGltQ291bnQpIHtcbiAgICAgICAgICBwcm9jZXNzZWQgPSBgJHtwcm9jZXNzZWR9JHtkZWxpbVN0cmluZy5zdWJzdHIoMCxkZWxpbUNvdW50KX1gO1xuICAgICAgICB9XG4gIFxuICAgICAgICBvZmZzZXQgKz0gY2FwWzBdLmxlbmd0aDtcbiAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGZvciBzdHJpa2V0aHJvdWdoIGRlbGltaXRlclxuICAgICAgY2FwID0gL15+fi8uZXhlYyhzdHJpbmcpO1xuICAgICAgaWYgKGNhcCkge1xuICAgICAgICBsZXQgY29uc3VtZWQgPSBmYWxzZTtcbiAgICAgICAgbGV0IHN0YWNrUG9pbnRlciA9IHN0YWNrLmxlbmd0aCAtIDE7XG4gICAgICAgIC8vIFNlZSBpZiB3ZSBjYW4gZmluZCBhIG1hdGNoaW5nIG9wZW5pbmcgZGVsaW1pdGVyLCBtb3ZlIGRvd24gdGhyb3VnaCB0aGUgc3RhY2tcbiAgICAgICAgd2hpbGUgKCFjb25zdW1lZCAmJiBzdGFja1BvaW50ZXIgPj0gMCkge1xuICAgICAgICAgIGlmIChzdGFja1tzdGFja1BvaW50ZXJdLmRlbGltaXRlciA9PSAnficpIHtcbiAgICAgICAgICAgIC8vIFdlIGZvdW5kIGEgbWF0Y2hpbmcgZGVsaW1pdGVyLCBsZXQncyBjb25zdHJ1Y3QgdGhlIGZvcm1hdHRlZCBzdHJpbmdcblxuICAgICAgICAgICAgLy8gRmlyc3RseSwgaWYgd2Ugc2tpcHBlZCBhbnkgc3RhY2sgbGV2ZWxzLCBwb3AgdGhlbSBpbW1lZGlhdGVseSAobm9uLW1hdGNoaW5nIGRlbGltaXRlcnMpXG4gICAgICAgICAgICB3aGlsZSAoc3RhY2tQb2ludGVyIDwgc3RhY2subGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICBjb25zdCBlbnRyeSA9IHN0YWNrLnBvcCgpO1xuICAgICAgICAgICAgICBwcm9jZXNzZWQgPSBgJHtlbnRyeS5vdXRwdXR9JHtlbnRyeS5kZWxpbVN0cmluZy5zdWJzdHIoMCwgZW50cnkuY291bnQpfSR7cHJvY2Vzc2VkfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFRoZW4sIGZvcm1hdCB0aGUgc3RyaW5nXG4gICAgICAgICAgICBwcm9jZXNzZWQgPSBgPHNwYW4gY2xhc3M9XCJUTU1hcmtcIj5+fjwvc3Bhbj48ZGVsIGNsYXNzPVwiVE1TdHJpa2V0aHJvdWdoXCI+JHtwcm9jZXNzZWR9PC9kZWw+PHNwYW4gY2xhc3M9XCJUTU1hcmtcIj5+fjwvc3Bhbj5gO1xuICAgICAgICAgICAgbGV0IGVudHJ5ID0gc3RhY2sucG9wKCk7XG4gICAgICAgICAgICBwcm9jZXNzZWQgPSBgJHtlbnRyeS5vdXRwdXR9JHtwcm9jZXNzZWR9YFxuICAgICAgICAgICAgY29uc3VtZWQgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUaGlzIHN0YWNrIGxldmVsJ3MgZGVsaW1pdGVyIHR5cGUgZG9lc24ndCBtYXRjaCB0aGUgY3VycmVudCBkZWxpbWl0ZXIgdHlwZVxuICAgICAgICAgICAgLy8gR28gZG93biBvbmUgbGV2ZWwgaW4gdGhlIHN0YWNrXG4gICAgICAgICAgICBzdGFja1BvaW50ZXItLTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBzdGlsbCBkZWxpbWl0ZXJzIGxlZnQsIGFuZCB0aGUgZGVsaW1pdGVyIHJ1biBjYW4gb3BlbiwgcHVzaCBpdCBvbiB0aGUgc3RhY2tcbiAgICAgICAgaWYgKCFjb25zdW1lZCkge1xuICAgICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgICAgZGVsaW1pdGVyOiAnficsXG4gICAgICAgICAgICBkZWxpbVN0cmluZzogJ35+JyxcbiAgICAgICAgICAgIGNvdW50OiAyLFxuICAgICAgICAgICAgb3V0cHV0OiBwcm9jZXNzZWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwcm9jZXNzZWQgPSAnJzsgLy8gQ3VycmVudCBmb3JtYXR0ZWQgb3V0cHV0IGhhcyBiZWVuIHB1c2hlZCBvbiB0aGUgc3RhY2sgYW5kIHdpbGwgYmUgcHJlcGVuZGVkIHdoZW4gdGhlIHN0YWNrIGdldHMgcG9wcGVkXG4gICAgICAgIH1cblxuICAgICAgICBvZmZzZXQgKz0gY2FwWzBdLmxlbmd0aDtcbiAgICAgICAgc3RyaW5nID0gc3RyaW5nLnN1YnN0cihjYXBbMF0ubGVuZ3RoKTsgXG4gICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgfVxuICAgICAgXG4gIFxuICAgICAgLy8gUHJvY2VzcyAnZGVmYXVsdCcgcnVsZVxuICAgICAgY2FwID0gaW5saW5lR3JhbW1hci5kZWZhdWx0LnJlZ2V4cC5leGVjKHN0cmluZyk7XG4gICAgICBpZiAoY2FwKSB7XG4gICAgICAgIHN0cmluZyA9IHN0cmluZy5zdWJzdHIoY2FwWzBdLmxlbmd0aCk7XG4gICAgICAgIG9mZnNldCArPSBjYXBbMF0ubGVuZ3RoO1xuICAgICAgICBwcm9jZXNzZWQgKz0gaW5saW5lR3JhbW1hci5kZWZhdWx0LnJlcGxhY2VtZW50XG4gICAgICAgICAgLnJlcGxhY2UoL1xcJChbMS05XSkvZywgKHN0ciwgcDEpID0+IGh0bWxlc2NhcGUoY2FwW3AxXSkpO1xuICAgICAgICBjb250aW51ZSBvdXRlcjsgXG4gICAgICB9XG4gICAgICB0aHJvdyAnSW5maW5pdGUgbG9vcCEnO1xuICAgIH1cbiAgXG4gICAgLy8gRW1wdHkgdGhlIHN0YWNrLCBhbnkgb3BlbmluZyBkZWxpbWl0ZXJzIGFyZSB1bnVzZWRcbiAgICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7XG4gICAgICBjb25zdCBlbnRyeSA9IHN0YWNrLnBvcCgpO1xuICAgICAgcHJvY2Vzc2VkID0gYCR7ZW50cnkub3V0cHV0fSR7ZW50cnkuZGVsaW1TdHJpbmcuc3Vic3RyKDAsIGVudHJ5LmNvdW50KX0ke3Byb2Nlc3NlZH1gO1xuICAgIH1cbiAgXG4gICAgcmV0dXJuIHByb2Nlc3NlZDtcbiAgfVxuXG4gIC8qKiBcbiAgICogQ2xlYXJzIHRoZSBsaW5lIGRpcnR5IGZsYWcgKHJlc2V0cyBpdCB0byBhbiBhcnJheSBvZiBmYWxzZSlcbiAgICovXG4gIGNsZWFyRGlydHlGbGFnKCkge1xuICAgIHRoaXMubGluZURpcnR5ID0gbmV3IEFycmF5KHRoaXMubGluZXMubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGluZURpcnR5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmxpbmVEaXJ0eVtpXSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBjbGFzcyBwcm9wZXJ0aWVzIChsaW5lcywgbGluZUVsZW1lbnRzKSBmcm9tIHRoZSBET00uXG4gICAqIEByZXR1cm5zIHRydWUgaWYgY29udGVudHMgY2hhbmdlZFxuICAgKi9cbiAgdXBkYXRlTGluZUNvbnRlbnRzKCkge1xuICAgIC8vIHRoaXMubGluZURpcnR5ID0gW107IFxuICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgY2hhbmdlZCBhbnl0aGluZyBhYm91dCB0aGUgbnVtYmVyIG9mIGxpbmVzIChpbnNlcnRlZCBvciBkZWxldGVkIGEgcGFyYWdyYXBoKVxuICAgIC8vIDwgMCBtZWFucyBsaW5lKHMpIHJlbW92ZWQ7ID4gMCBtZWFucyBsaW5lKHMpIGFkZGVkXG4gICAgbGV0IGxpbmVEZWx0YSA9IHRoaXMuZS5jaGlsZEVsZW1lbnRDb3VudCAtIHRoaXMubGluZXMubGVuZ3RoO1xuICAgIGlmIChsaW5lRGVsdGEpIHtcbiAgICAgIC8vIHl1cC4gTGV0J3MgdHJ5IGhvdyBtdWNoIHdlIGNhbiBzYWx2YWdlIChmaW5kIG91dCB3aGljaCBsaW5lcyBmcm9tIGJlZ2lubmluZyBhbmQgZW5kIHdlcmUgdW5jaGFuZ2VkKVxuICAgICAgLy8gRmluZCBsaW5lcyBmcm9tIHRoZSBiZWdpbm5pbmcgdGhhdCBoYXZlbid0IGNoYW5nZWQuLi5cbiAgICAgIGxldCBmaXJzdENoYW5nZWRMaW5lID0gMDtcbiAgICAgIHdoaWxlIChcbiAgICAgICAgICBmaXJzdENoYW5nZWRMaW5lIDw9IHRoaXMubGluZXMubGVuZ3RoIFxuICAgICAgICAgICYmIGZpcnN0Q2hhbmdlZExpbmUgPD0gdGhpcy5saW5lRWxlbWVudHMubGVuZ3RoXG4gICAgICAgICAgJiYgdGhpcy5saW5lRWxlbWVudHNbZmlyc3RDaGFuZ2VkTGluZV0gLy8gQ2hlY2sgdGhhdCB0aGUgbGluZSBlbGVtZW50IGhhc24ndCBiZWVuIGRlbGV0ZWRcbiAgICAgICAgICAmJiB0aGlzLmxpbmVzW2ZpcnN0Q2hhbmdlZExpbmVdID09IHRoaXMubGluZUVsZW1lbnRzW2ZpcnN0Q2hhbmdlZExpbmVdLnRleHRDb250ZW50XG4gICAgICApIHtcbiAgICAgICAgZmlyc3RDaGFuZ2VkTGluZSsrO1xuICAgICAgfVxuXG4gICAgICAvLyBFbmQgYWxzbyBmcm9tIHRoZSBlbmRcbiAgICAgIGxldCBsYXN0Q2hhbmdlZExpbmUgPSAtMTtcbiAgICAgIHdoaWxlIChcbiAgICAgICAgICAtbGFzdENoYW5nZWRMaW5lIDwgdGhpcy5saW5lcy5sZW5ndGggXG4gICAgICAgICAgJiYgLWxhc3RDaGFuZ2VkTGluZSA8IHRoaXMubGluZUVsZW1lbnRzLmxlbmd0aFxuICAgICAgICAgICYmIHRoaXMubGluZXNbdGhpcy5saW5lcy5sZW5ndGggKyBsYXN0Q2hhbmdlZExpbmVdID09IHRoaXMubGluZUVsZW1lbnRzW3RoaXMubGluZUVsZW1lbnRzLmxlbmd0aCArIGxhc3RDaGFuZ2VkTGluZV0udGV4dENvbnRlbnRcbiAgICAgICkge1xuICAgICAgICBsYXN0Q2hhbmdlZExpbmUtLTtcbiAgICAgIH1cblxuICAgICAgbGV0IGxpbmVzVG9EZWxldGUgPSB0aGlzLmxpbmVzLmxlbmd0aCArIGxhc3RDaGFuZ2VkTGluZSArIDEgLSBmaXJzdENoYW5nZWRMaW5lO1xuICAgICAgaWYgKGxpbmVzVG9EZWxldGUgPCAtbGluZURlbHRhKSBsaW5lc1RvRGVsZXRlID0gLWxpbmVEZWx0YTtcbiAgICAgIGlmIChsaW5lc1RvRGVsZXRlIDwgMCkgbGluZXNUb0RlbGV0ZSA9IDA7XG5cbiAgICAgIGxldCBsaW5lc1RvQWRkID0gW107XG4gICAgICBmb3IgKGxldCBsID0gMDsgbCA8IGxpbmVzVG9EZWxldGUgKyBsaW5lRGVsdGE7IGwrKykge1xuICAgICAgICBsaW5lc1RvQWRkLnB1c2godGhpcy5saW5lRWxlbWVudHNbZmlyc3RDaGFuZ2VkTGluZSArIGxdLnRleHRDb250ZW50KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3BsaWNlTGluZXMoZmlyc3RDaGFuZ2VkTGluZSwgbGluZXNUb0RlbGV0ZSwgbGluZXNUb0FkZCwgZmFsc2UpO1xuICAgICAgXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vIGxpbmVzIGFkZGVkIG9yIHJlbW92ZWRcbiAgICAgIGZvciAobGV0IGxpbmUgPSAwOyBsaW5lIDwgdGhpcy5saW5lRWxlbWVudHMubGVuZ3RoOyBsaW5lKyspIHtcbiAgICAgICAgbGV0IGUgPSB0aGlzLmxpbmVFbGVtZW50c1tsaW5lXTtcbiAgICAgICAgbGV0IGN0ID0gZS50ZXh0Q29udGVudDtcbiAgICAgICAgaWYgKHRoaXMubGluZXNbbGluZV0gIT09IGN0KSB7XG4gICAgICAgICAgLy8gTGluZSBjaGFuZ2VkLCB1cGRhdGUgaXRcbiAgICAgICAgICB0aGlzLmxpbmVzW2xpbmVdID0gY3Q7XG4gICAgICAgICAgdGhpcy5saW5lRGlydHlbbGluZV0gPSB0cnVlOyBcbiAgICAgICAgfSBcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIGEgbmV3IHBhcmFncmFwaC5cbiAgICogQHBhcmFtIHNlbCBUaGUgY3VycmVudCBzZWxlY3Rpb25cbiAgICovXG4gIHByb2Nlc3NOZXdQYXJhZ3JhcGgoc2VsKSB7XG4gICAgaWYgKCFzZWwpIHJldHVybjtcblxuICAgIC8vIFVwZGF0ZSBsaW5lcyBmcm9tIGNvbnRlbnRcbiAgICB0aGlzLnVwZGF0ZUxpbmVDb250ZW50cygpO1xuXG4gICAgbGV0IGNvbnRpbnVhYmxlVHlwZSA9IGZhbHNlO1xuICAgIC8vIExldCdzIHNlZSBpZiB3ZSBuZWVkIHRvIGNvbnRpbnVlIGEgbGlzdFxuXG4gICAgbGV0IGNoZWNrTGluZSA9IHNlbC5jb2wgPiAwID8gc2VsLnJvdyA6IHNlbC5yb3cgLSAxO1xuICAgIHN3aXRjaCAodGhpcy5saW5lVHlwZXNbY2hlY2tMaW5lXSkge1xuICAgICAgY2FzZSAnVE1VTCc6IGNvbnRpbnVhYmxlVHlwZSA9ICdUTVVMJzsgYnJlYWs7XG4gICAgICBjYXNlICdUTU9MJzogY29udGludWFibGVUeXBlID0gJ1RNT0wnOyBicmVhaztcbiAgICAgIGNhc2UgJ1RNSW5kZW50ZWRDb2RlJzogY29udGludWFibGVUeXBlID0gJ1RNSW5kZW50ZWRDb2RlJzsgYnJlYWs7XG4gICAgfVxuXG4gICAgbGV0IGxpbmVzID0gdGhpcy5saW5lc1tzZWwucm93XS5yZXBsYWNlKC9cXG5cXG4kLywgJ1xcbicpLnNwbGl0KC8oPzpcXHJcXG58XFxufFxccikvKTtcbiAgICBpZiAobGluZXMubGVuZ3RoID09IDEpIHtcbiAgICAgIC8vIE5vIG5ldyBsaW5lXG4gICAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zcGxpY2VMaW5lcyhzZWwucm93LCAxLCBsaW5lcywgdHJ1ZSk7XG4gICAgc2VsLnJvdysrO1xuICAgIHNlbC5jb2wgPSAwO1xuXG4gICAgaWYgKGNvbnRpbnVhYmxlVHlwZSkge1xuICAgICAgLy8gQ2hlY2sgaWYgdGhlIHByZXZpb3VzIGxpbmUgd2FzIG5vbi1lbXB0eVxuICAgICAgbGV0IGNhcHR1cmUgPSBsaW5lR3JhbW1hcltjb250aW51YWJsZVR5cGVdLnJlZ2V4cC5leGVjKHRoaXMubGluZXNbc2VsLnJvdyAtIDFdKTtcbiAgICAgIGlmIChjYXB0dXJlKSB7XG4gICAgICAgIC8vIENvbnZlbnRpb246IGNhcHR1cmVbMV0gaXMgdGhlIGxpbmUgdHlwZSBtYXJrZXIsIGNhcHR1cmVbMl0gaXMgdGhlIGNvbnRlbnRcbiAgICAgICAgaWYgKGNhcHR1cmVbMl0pIHtcbiAgICAgICAgICAvLyBQcmV2aW91cyBsaW5lIGhhcyBjb250ZW50LCBjb250aW51ZSB0aGUgY29udGludWFibGUgdHlwZVxuXG4gICAgICAgICAgLy8gSGFjayBmb3IgT0w6IGluY3JlbWVudCBudW1iZXJcbiAgICAgICAgICBpZiAoY29udGludWFibGVUeXBlID09ICdUTU9MJykge1xuICAgICAgICAgICAgY2FwdHVyZVsxXSA9IGNhcHR1cmVbMV0ucmVwbGFjZSgvXFxkezEsOX0vLCAocmVzdWx0KSA9PiB7IHJldHVybiBwYXJzZUludChyZXN1bHRbMF0pICsgMX0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmxpbmVzW3NlbC5yb3ddID0gYCR7Y2FwdHVyZVsxXX0ke3RoaXMubGluZXNbc2VsLnJvd119YDtcbiAgICAgICAgICB0aGlzLmxpbmVEaXJ0eVtzZWwucm93XSA9IHRydWU7XG4gICAgICAgICAgc2VsLmNvbCA9IGNhcHR1cmVbMV0ubGVuZ3RoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFByZXZpb3VzIGxpbmUgaGFzIG5vIGNvbnRlbnQsIHJlbW92ZSB0aGUgY29udGludWFibGUgdHlwZSBmcm9tIHRoZSBwcmV2aW91cyByb3dcbiAgICAgICAgICB0aGlzLmxpbmVzW3NlbC5yb3cgLSAxXSA9ICcnO1xuICAgICAgICAgIHRoaXMubGluZURpcnR5W3NlbC5yb3cgLSAxXSA9IHRydWU7XG4gICAgICAgIH0gICAgIFxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgfVxuXG4gIC8vIC8qKlxuICAvLyAgKiBQcm9jZXNzZXMgYSBcImRlbGV0ZVwiIGlucHV0IGFjdGlvbi5cbiAgLy8gICogQHBhcmFtIHtvYmplY3R9IGZvY3VzIFRoZSBzZWxlY3Rpb25cbiAgLy8gICogQHBhcmFtIHtib29sZWFufSBmb3J3YXJkIElmIHRydWUsIHBlcmZvcm1zIGEgZm9yd2FyZCBkZWxldGUsIG90aGVyd2lzZSBwZXJmb3JtcyBhIGJhY2t3YXJkIGRlbGV0ZVxuICAvLyAgKi9cbiAgLy8gcHJvY2Vzc0RlbGV0ZShmb2N1cywgZm9yd2FyZCkge1xuICAvLyAgIGlmICghZm9jdXMpIHJldHVybjtcbiAgLy8gICBsZXQgYW5jaG9yID0gdGhpcy5nZXRTZWxlY3Rpb24odHJ1ZSk7XG4gIC8vICAgLy8gRG8gd2UgaGF2ZSBhIG5vbi1lbXB0eSBzZWxlY3Rpb24/IFxuICAvLyAgIGlmIChmb2N1cy5jb2wgIT0gYW5jaG9yLmNvbCB8fCBmb2N1cy5yb3cgIT0gYW5jaG9yLnJvdykge1xuICAvLyAgICAgLy8gbm9uLWVtcHR5LiBkaXJlY3Rpb24gZG9lc24ndCBtYXR0ZXIuXG4gIC8vICAgICB0aGlzLnBhc3RlKCcnLCBhbmNob3IsIGZvY3VzKTtcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgaWYgKGZvcndhcmQpIHtcbiAgLy8gICAgICAgaWYgKGZvY3VzLmNvbCA8IHRoaXMubGluZXNbZm9jdXMucm93XS5sZW5ndGgpIHRoaXMucGFzdGUoJycsIHtyb3c6IGZvY3VzLnJvdywgY29sOiBmb2N1cy5jb2wgKyAxfSwgZm9jdXMpO1xuICAvLyAgICAgICBlbHNlIGlmIChmb2N1cy5jb2wgPCB0aGlzLmxpbmVzLmxlbmd0aCkgdGhpcy5wYXN0ZSgnJywge3JvdzogZm9jdXMucm93ICsgMSwgY29sOiAwfSwgZm9jdXMpO1xuICAvLyAgICAgICAvLyBPdGhlcndpc2UsIHdlJ3JlIGF0IHRoZSB2ZXJ5IGVuZCBhbmQgY2FuJ3QgZGVsZXRlIGZvcndhcmRcbiAgLy8gICAgIH0gZWxzZSB7XG4gIC8vICAgICAgIGlmIChmb2N1cy5jb2wgPiAwKSB0aGlzLnBhc3RlKCcnLCB7cm93OiBmb2N1cy5yb3csIGNvbDogZm9jdXMuY29sIC0gMX0sIGZvY3VzKTtcbiAgLy8gICAgICAgZWxzZSBpZiAoZm9jdXMucm93ID4gMCkgdGhpcy5wYXN0ZSgnJywge3JvdzogZm9jdXMucm93IC0gMSwgY29sOiB0aGlzLmxpbmVzW2ZvY3VzLnJvdyAtIDFdLmxlbmd0aCAtIDF9LCBmb2N1cyk7XG4gIC8vICAgICAgIC8vIE90aGVyd2lzZSwgd2UncmUgYXQgdGhlIHZlcnkgYmVnaW5uaW5nIGFuZCBjYW4ndCBkZWxldGUgYmFja3dhcmRzXG4gIC8vICAgICB9XG4gIC8vICAgfVxuXG4gIC8vIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUgc2VsZWN0aW9uIGNvdW50ZWQgYnkgcm93IGFuZCBjb2x1bW4gb2YgdGhlIGVkaXRvciBNYXJrZG93biBjb250ZW50IChhcyBvcHBvc2VkIHRvIHRoZSBwb3NpdGlvbiBpbiB0aGUgRE9NKS5cbiAgICogXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZ2V0QW5jaG9yIGlmIHNldCB0byB0cnVlLCBnZXRzIHRoZSBzZWxlY3Rpb24gYW5jaG9yIChzdGFydCBwb2ludCBvZiB0aGUgc2VsZWN0aW9uKSwgb3RoZXJ3aXNlIGdldHMgdGhlIGZvY3VzIChlbmQgcG9pbnQpLlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IEFuIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHNlbGVjdGlvbiwgd2l0aCBwcm9wZXJ0aWVzIGNvbCBhbmQgcm93LlxuICAgKi9cbiAgZ2V0U2VsZWN0aW9uKGdldEFuY2hvciA9IGZhbHNlKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgIGxldCBzdGFydE5vZGUgPSAoZ2V0QW5jaG9yID8gc2VsZWN0aW9uLmFuY2hvck5vZGUgOiBzZWxlY3Rpb24uZm9jdXNOb2RlKTtcbiAgICBpZiAoIXN0YXJ0Tm9kZSkgcmV0dXJuIG51bGw7XG4gICAgbGV0IG9mZnNldCA9IHN0YXJ0Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgPyAoZ2V0QW5jaG9yID8gc2VsZWN0aW9uLmFuY2hvck9mZnNldCA6IHNlbGVjdGlvbi5mb2N1c09mZnNldCkgOiAwO1xuICBcbiAgICBpZiAoc3RhcnROb2RlID09IHRoaXMuZSkge1xuICAgICAgcmV0dXJuIHtyb3c6IDAsIGNvbDogb2Zmc2V0fTtcbiAgICB9XG5cbiAgICBsZXQgY29sID0gdGhpcy5jb21wdXRlQ29sdW1uKHN0YXJ0Tm9kZSwgb2Zmc2V0KTsgICAgXG4gICAgaWYgKGNvbCA9PT0gbnVsbCkgcmV0dXJuIG51bGw7IC8vIFdlIGFyZSBvdXRzaWRlIG9mIHRoZSBlZGl0b3JcblxuICAgIC8vIEZpbmQgdGhlIHJvdyBub2RlXG4gICAgbGV0IG5vZGUgPSBzdGFydE5vZGU7XG4gICAgd2hpbGUgKG5vZGUucGFyZW50RWxlbWVudCAhPSB0aGlzLmUpIHtcbiAgICAgIG5vZGUgPSBub2RlLnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgbGV0IHJvdyA9IDA7XG4gICAgLy8gQ2hlY2sgaWYgd2UgY2FuIHJlYWQgYSBsaW5lIG51bWJlciBmcm9tIHRoZSBkYXRhLWxpbmUtbnVtIGF0dHJpYnV0ZS5cbiAgICAvLyBUaGUgbGFzdCBjb25kaXRpb24gaXMgYSBzZWN1cml0eSBtZWFzdXJlIHNpbmNlIGluc2VydGluZyBhIG5ldyBwYXJhZ3JhcGggY29waWVzIHRoZSBwcmV2aW91cyByb3dzJyBsaW5lIG51bWJlclxuICAgIGlmIChub2RlLmRhdGFzZXQgJiYgbm9kZS5kYXRhc2V0LmxpbmVOdW0gJiYgKCFub2RlLnByZXZpb3VzU2libGluZyB8fCBub2RlLnByZXZpb3VzU2libGluZy5kYXRhc2V0LmxpbmVOdW0gIT0gbm9kZS5kYXRhc2V0LmxpbmVOdW0gKSkge1xuICAgICAgcm93ID0gcGFyc2VJbnQobm9kZS5kYXRhc2V0LmxpbmVOdW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aGlsZSAobm9kZS5wcmV2aW91c1NpYmxpbmcpIHtcbiAgICAgICAgcm93Kys7XG4gICAgICAgIG5vZGUgPSBub2RlLnByZXZpb3VzU2libGluZztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtyb3c6IHJvdywgY29sOiBjb2wsIG5vZGU6IHN0YXJ0Tm9kZX07XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgYSBjb2x1bW4gd2l0aGluIGFuIGVkaXRvciBsaW5lIGZyb20gYSBub2RlIGFuZCBvZmZzZXQgd2l0aGluIHRoYXQgbm9kZS5cbiAgICogQHBhcmFtIHtOb2RlfSBzdGFydE5vZGUgVGhlIG5vZGVcbiAgICogQHBhcmFtIHtpbnR9IG9mZnNldCBUSGUgc2VsZWN0aW9uXG4gICAqIEByZXR1cm5zIHtpbnR9IHRoZSBjb2x1bW4sIG9yIG51bGwgaWYgdGhlIG5vZGUgaXMgbm90IGluc2lkZSB0aGUgZWRpdG9yXG4gICAqL1xuICBjb21wdXRlQ29sdW1uKHN0YXJ0Tm9kZSwgb2Zmc2V0KSB7XG4gICAgbGV0IG5vZGUgPSBzdGFydE5vZGU7XG4gICAgbGV0IGNvbCA9IG9mZnNldDtcbiAgICAvLyBGaXJzdCwgbWFrZSBzdXJlIHdlJ3JlIGFjdHVhbGx5IGluIHRoZSBlZGl0b3IuXG4gICAgd2hpbGUgKG5vZGUgJiYgbm9kZS5wYXJlbnROb2RlICE9IHRoaXMuZSkge1xuICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICB9XG4gICAgaWYgKG5vZGUgPT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgXG4gICAgbm9kZSA9IHN0YXJ0Tm9kZTtcbiAgICB3aGlsZSAobm9kZS5wYXJlbnROb2RlICE9IHRoaXMuZSkge1xuICAgICAgaWYgKG5vZGUucHJldmlvdXNTaWJsaW5nKSB7XG4gICAgICAgIG5vZGUgPSBub2RlLnByZXZpb3VzU2libGluZztcbiAgICAgICAgY29sICs9IG5vZGUudGV4dENvbnRlbnQubGVuZ3RoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBET00gbm9kZSBhbmQgb2Zmc2V0IHdpdGhpbiB0aGF0IG5vZGUgZnJvbSBhIHBvc2l0aW9uIGV4cHJlc3NlZCBhcyByb3cgYW5kIGNvbHVtbi5cbiAgICogQHBhcmFtIHtpbnR9IHJvdyBSb3cgKGxpbmUgbnVtYmVyKVxuICAgKiBAcGFyYW0ge2ludH0gY29sIENvbHVtblxuICAgKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCB0d28gcHJvcGVydGllczogbm9kZSBhbmQgb2Zmc2V0LiBvZmZzZXQgbWF5IGJlIG51bGw7XG4gICAqL1xuICBjb21wdXRlTm9kZUFuZE9mZnNldChyb3csIGNvbCwgYmluZFJpZ2h0ID0gZmFsc2UpIHtcbiAgICBpZiAocm93ID49IHRoaXMubGluZUVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgLy8gU2VsZWN0aW9uIHBhc3QgdGhlIGVuZCBvZiB0ZXh0LCBzZXQgc2VsZWN0aW9uIHRvIGVuZCBvZiB0ZXh0XG4gICAgICByb3cgPSB0aGlzLmxpbmVFbGVtZW50cy5sZW5ndGggLSAxO1xuICAgICAgY29sID0gdGhpcy5saW5lc1tyb3ddLmxlbmd0aDtcbiAgICB9IFxuICAgIGlmIChjb2wgPiB0aGlzLmxpbmVzW3Jvd10ubGVuZ3RoKSB7XG4gICAgICBjb2wgPSB0aGlzLmxpbmVzW3Jvd10ubGVuZ3RoO1xuICAgIH1cbiAgICBjb25zdCBwYXJlbnROb2RlID0gdGhpcy5saW5lRWxlbWVudHNbcm93XTtcbiAgICBsZXQgbm9kZSA9IHBhcmVudE5vZGUuZmlyc3RDaGlsZDtcblxuICAgIGxldCBjaGlsZHJlbkNvbXBsZXRlID0gZmFsc2U7XG4gICAgLy8gZGVmYXVsdCByZXR1cm4gdmFsdWVcbiAgICBsZXQgcnYgPSB7bm9kZTogcGFyZW50Tm9kZS5maXJzdENoaWxkID8gcGFyZW50Tm9kZS5maXJzdENoaWxkIDogcGFyZW50Tm9kZSwgb2Zmc2V0OiAwfTtcblxuICAgIHdoaWxlIChub2RlICE9IHBhcmVudE5vZGUpIHtcbiAgICAgIGlmICghY2hpbGRyZW5Db21wbGV0ZSAmJiBub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgICBpZiAobm9kZS5ub2RlVmFsdWUubGVuZ3RoID49IGNvbCkge1xuICAgICAgICAgIGlmIChiaW5kUmlnaHQgJiYgbm9kZS5ub2RlVmFsdWUubGVuZ3RoID09IGNvbCkge1xuICAgICAgICAgICAgLy8gU2VsZWN0aW9uIGlzIGF0IHRoZSBlbmQgb2YgdGhpcyB0ZXh0IG5vZGUsIGJ1dCB3ZSBhcmUgYmluZGluZyByaWdodCAocHJlZmVyIGFuIG9mZnNldCBvZiAwIGluIHRoZSBuZXh0IHRleHQgbm9kZSlcbiAgICAgICAgICAgIC8vIFJlbWVtYmVyIHJldHVybiB2YWx1ZSBpbiBjYXNlIHdlIGRvbid0IGZpbmQgYW5vdGhlciB0ZXh0IG5vZGVcbiAgICAgICAgICAgIHJ2ID0ge25vZGU6IG5vZGUsIG9mZnNldDogY29sfTtcbiAgICAgICAgICAgIGNvbCA9IDA7XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuKHtub2RlOiBub2RlLCBvZmZzZXQ6IGNvbH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2wgLT0gbm9kZS5ub2RlVmFsdWUubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9IFxuICAgICAgaWYgKCFjaGlsZHJlbkNvbXBsZXRlICYmIG5vZGUuZmlyc3RDaGlsZCkge1xuICAgICAgICBub2RlID0gbm9kZS5maXJzdENoaWxkO1xuICAgICAgfSBlbHNlIGlmIChub2RlLm5leHRTaWJsaW5nKSB7XG4gICAgICAgIGNoaWxkcmVuQ29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGlsZHJlbkNvbXBsZXRlID0gdHJ1ZTtcbiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFaXRoZXIsIHRoZSBwb3NpdGlvbiB3YXMgaW52YWxpZCBhbmQgd2UganVzdCByZXR1cm4gdGhlIGRlZmF1bHQgcmV0dXJuIHZhbHVlXG4gICAgLy8gT3Igd2UgYXJlIGJpbmRpbmcgcmlnaHQgYW5kIHRoZSBzZWxlY3Rpb24gaXMgYXQgdGhlIGVuZCBvZiB0aGUgbGluZVxuICAgIHJldHVybiBydjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZWxlY3Rpb24gYmFzZWQgb24gcm93cyBhbmQgY29sdW1ucyB3aXRoaW4gdGhlIGVkaXRvciBNYXJrZG93biBjb250ZW50LlxuICAgKiBAcGFyYW0ge29iamVjdH0gZm9jdXMgT2JqZWN0IHJlcHJlc2VudGluZyB0aGUgc2VsZWN0aW9uLCBuZWVkcyB0byBoYXZlIHByb3BlcnRpZXMgcm93IGFuZCBjb2wuXG4gICAqL1xuICBzZXRTZWxlY3Rpb24oZm9jdXMsIGFuY2hvciA9IG51bGwpIHtcbiAgICBpZiAoIWZvY3VzKSByZXR1cm47XG5cbiAgICBsZXQgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuXG4gICAgbGV0IHtub2RlOiBmb2N1c05vZGUsIG9mZnNldDogZm9jdXNPZmZzZXR9ID0gdGhpcy5jb21wdXRlTm9kZUFuZE9mZnNldChmb2N1cy5yb3csIGZvY3VzLmNvbCwgKGFuY2hvciAmJiBhbmNob3Iucm93ID09IGZvY3VzLnJvdyAmJiBhbmNob3IuY29sID4gZm9jdXMuY29sKSk7IC8vIEJpbmQgc2VsZWN0aW9uIHJpZ2h0IGlmIGFuY2hvciBpcyBpbiB0aGUgc2FtZSByb3cgYW5kIGJlaGluZCB0aGUgZm9jdXNcbiAgICBsZXQgYW5jaG9yTm9kZSA9IG51bGwsIGFuY2hvck9mZnNldCA9IG51bGw7XG4gICAgaWYgKGFuY2hvciAmJiAoYW5jaG9yLnJvdyAhPSBmb2N1cy5yb3cgfHwgYW5jaG9yLmNvbCAhPSBmb2N1cy5jb2wpKSB7XG4gICAgICBsZXQge25vZGUsIG9mZnNldH0gPSB0aGlzLmNvbXB1dGVOb2RlQW5kT2Zmc2V0KGFuY2hvci5yb3csIGFuY2hvci5jb2wsIGZvY3VzLnJvdyA9PSBhbmNob3Iucm93ICYmIGZvY3VzLmNvbCA+IGFuY2hvci5jb2wpO1xuICAgICAgYW5jaG9yTm9kZSA9IG5vZGU7XG4gICAgICBhbmNob3JPZmZzZXQgPSBvZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKGFuY2hvck5vZGUpIHJhbmdlLnNldFN0YXJ0KGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCk7XG4gICAgZWxzZSByYW5nZS5zZXRTdGFydChmb2N1c05vZGUsIGZvY3VzT2Zmc2V0KTtcbiAgICByYW5nZS5zZXRFbmQoZm9jdXNOb2RlLCBmb2N1c09mZnNldCk7XG4gICAgXG4gICAgbGV0IHdpbmRvd1NlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICB3aW5kb3dTZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgd2luZG93U2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKTtcbiAgfVxuXG4gIC8qKiBcbiAgICogRXZlbnQgaGFuZGxlciBmb3IgaW5wdXQgZXZlbnRzIFxuICAgKi9cbiAgaGFuZGxlSW5wdXRFdmVudChldmVudCkge1xuICAgIGxldCBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoKGV2ZW50LmlucHV0VHlwZSA9PSAnaW5zZXJ0UGFyYWdyYXBoJyB8fCBldmVudC5pbnB1dFR5cGUgPT0gJ2luc2VydExpbmVCcmVhaycpICYmIGZvY3VzKSB7XG4gICAgICB0aGlzLmNsZWFyRGlydHlGbGFnKCk7XG4gICAgICB0aGlzLnByb2Nlc3NOZXdQYXJhZ3JhcGgoZm9jdXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMuZS5maXJzdENoaWxkKSB7XG4gICAgICAgIHRoaXMuZS5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz1cIlRNQmxhbmtMaW5lXCI+PGJyPjwvZGl2Pic7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgZm9yIChsZXQgY2hpbGROb2RlID0gdGhpcy5lLmZpcnN0Q2hpbGQ7IGNoaWxkTm9kZTsgY2hpbGROb2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgaWYgKGNoaWxkTm9kZS5ub2RlVHlwZSAhPSAzIHx8IGNoaWxkTm9kZS50YWdOYW1lICE9ICdESVYnKSB7XG4gICAgICAgICAgICAvLyBGb3VuZCBhIGNoaWxkIG5vZGUgdGhhdCdzIGVpdGhlciBub3QgYW4gZWxlbWVudCBvciBub3QgYSBkaXYuIFdyYXAgaXQgaW4gYSBkaXYuXG4gICAgICAgICAgICBsZXQgZGl2V3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgdGhpcy5lLmluc2VydEJlZm9yZShkaXZXcmFwcGVyLCBjaGlsZE5vZGUpO1xuICAgICAgICAgICAgdGhpcy5lLnJlbW92ZUNoaWxkKGNoaWxkTm9kZSk7XG4gICAgICAgICAgICBkaXZXcmFwcGVyLmFwcGVuZENoaWxkKGNoaWxkTm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZUxpbmVDb250ZW50c0FuZEZvcm1hdHRpbmcoKTsgIFxuICAgIH1cbiAgICBpZiAoZm9jdXMpIHRoaXMuc2V0U2VsZWN0aW9uKGZvY3VzKTtcbiAgICB0aGlzLmZpcmVDaGFuZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBoYW5kbGVyIGZvciBcInNlbGVjdGlvbmNoYW5nZVwiIGV2ZW50cy5cbiAgICovXG4gIGhhbmRsZVNlbGVjdGlvbkNoYW5nZUV2ZW50KCkge1xuICAgIHRoaXMuZmlyZVNlbGVjdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIFwic3BsaWNlXCIgbmV3IGxpbmVzIGludG8gdGhlIGFycmF5cyB0aGlzLmxpbmVzLCB0aGlzLmxpbmVEaXJ0eSwgdGhpcy5saW5lVHlwZXMsIGFuZCB0aGUgRE9NIGVsZW1lbnRzIFxuICAgKiB1bmRlcm5lYXRoIHRoZSBlZGl0b3IgZWxlbWVudC5cbiAgICogVGhpcyBtZXRob2QgaXMgZXNzZW50aWFsbHkgQXJyYXkuc3BsaWNlLCBvbmx5IHRoYXQgdGhlIHRoaXJkIHBhcmFtZXRlciB0YWtlcyBhbiB1bi1zcHJlYWQgYXJyYXkgKGFuZCB0aGUgZm9ydGggcGFyYW1ldGVyKVxuICAgKiBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIERPTSBzaG91bGQgYWxzbyBiZSBhZGp1c3RlZC5cbiAgICogXG4gICAqIEBwYXJhbSB7aW50fSBzdGFydExpbmUgUG9zaXRpb24gYXQgd2hpY2ggdG8gc3RhcnQgY2hhbmdpbmcgdGhlIGFycmF5IG9mIGxpbmVzXG4gICAqIEBwYXJhbSB7aW50fSBsaW5lc1RvRGVsZXRlIE51bWJlciBvZiBsaW5lcyB0byBkZWxldGVcbiAgICogQHBhcmFtIHthcnJheX0gbGluZXNUb0luc2VydCBBcnJheSBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgbGluZXMgdG8gYmUgaW5zZXJ0ZWRcbiAgICogQHBhcmFtIHtib29sZWFufSBhZGp1c3RMaW5lRWxlbWVudHMgSWYgdHJ1ZSwgdGhlbiA8ZGl2PiBlbGVtZW50cyBhcmUgYWxzbyBpbnNlcnRlZCBpbiB0aGUgRE9NIGF0IHRoZSByZXNwZWN0aXZlIHBvc2l0aW9uXG4gICAqL1xuICBzcGxpY2VMaW5lcyhzdGFydExpbmUsIGxpbmVzVG9EZWxldGUgPSAwLCBsaW5lc1RvSW5zZXJ0ID0gW10sIGFkanVzdExpbmVFbGVtZW50cyA9IHRydWUpIHtcbiAgICBpZiAoYWRqdXN0TGluZUVsZW1lbnRzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzVG9EZWxldGU7IGkrKykge1xuICAgICAgICB0aGlzLmUucmVtb3ZlQ2hpbGQodGhpcy5lLmNoaWxkTm9kZXNbc3RhcnRMaW5lXSk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGxldCBpbnNlcnRlZEJsYW5rID0gW107XG4gICAgbGV0IGluc2VydGVkRGlydHkgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXNUb0luc2VydC5sZW5ndGg7IGkrKykge1xuICAgICAgaW5zZXJ0ZWRCbGFuay5wdXNoKCcnKTtcbiAgICAgIGluc2VydGVkRGlydHkucHVzaCh0cnVlKTtcbiAgICAgIGlmIChhZGp1c3RMaW5lRWxlbWVudHMpIHtcbiAgICAgICAgaWYgKHRoaXMuZS5jaGlsZE5vZGVzW3N0YXJ0TGluZV0pIHRoaXMuZS5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksdGhpcy5lLmNoaWxkTm9kZXNbc3RhcnRMaW5lXSk7XG4gICAgICAgIGVsc2UgdGhpcy5lLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxpbmVzLnNwbGljZShzdGFydExpbmUsIGxpbmVzVG9EZWxldGUsIC4uLmxpbmVzVG9JbnNlcnQpO1xuICAgIHRoaXMubGluZVR5cGVzLnNwbGljZShzdGFydExpbmUsIGxpbmVzVG9EZWxldGUsIC4uLmluc2VydGVkQmxhbmspO1xuICAgIHRoaXMubGluZURpcnR5LnNwbGljZShzdGFydExpbmUsIGxpbmVzVG9EZWxldGUsIC4uLmluc2VydGVkRGlydHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2ZW50IGhhbmRsZXIgZm9yIHRoZSBcInBhc3RlXCIgZXZlbnRcbiAgICovXG4gIGhhbmRsZVBhc3RlKGV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgXG4gICAgLy8gZ2V0IHRleHQgcmVwcmVzZW50YXRpb24gb2YgY2xpcGJvYXJkXG4gICAgbGV0IHRleHQgPSAoZXZlbnQub3JpZ2luYWxFdmVudCB8fCBldmVudCkuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJyk7XG5cbiAgICAvLyBpbnNlcnQgdGV4dCBtYW51YWxseVxuICAgIHRoaXMucGFzdGUodGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogUGFzdGVzIHRoZSB0ZXh0IGF0IHRoZSBjdXJyZW50IHNlbGVjdGlvbiAob3IgYXQgdGhlIGVuZCwgaWYgbm8gY3VycmVudCBzZWxlY3Rpb24pXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFxuICAgKi9cbiAgcGFzdGUodGV4dCwgYW5jaG9yID0gbnVsbCwgZm9jdXMgPSBudWxsKSB7XG4gICAgaWYgKCFhbmNob3IpIGFuY2hvciA9IHRoaXMuZ2V0U2VsZWN0aW9uKHRydWUpO1xuICAgIGlmICghZm9jdXMpIGZvY3VzID0gdGhpcy5nZXRTZWxlY3Rpb24oZmFsc2UpO1xuICAgIGxldCBiZWdpbm5pbmcsIGVuZDtcbiAgICBpZiAoIWZvY3VzKSB7XG4gICAgICBmb2N1cyA9IHsgcm93OiB0aGlzLmxpbmVzLmxlbmd0aCAtIDEsIGNvbDogdGhpcy5saW5lc1t0aGlzLmxpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aCB9OyAvLyBJbnNlcnQgYXQgZW5kXG4gICAgfVxuICAgIGlmICghYW5jaG9yKSB7XG4gICAgICBhbmNob3IgPSBmb2N1cztcbiAgICB9XG4gICAgaWYgKGFuY2hvci5yb3cgPCBmb2N1cy5yb3cgfHwgKGFuY2hvci5yb3cgPT0gZm9jdXMucm93ICYmIGFuY2hvci5jb2wgPD0gZm9jdXMuY29sKSkge1xuICAgICAgYmVnaW5uaW5nID0gYW5jaG9yO1xuICAgICAgZW5kID0gZm9jdXM7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgYmVnaW5uaW5nID0gZm9jdXM7XG4gICAgICBlbmQgPSBhbmNob3I7XG4gICAgfVxuICAgIGxldCBpbnNlcnRlZExpbmVzID0gdGV4dC5zcGxpdCgvKD86XFxyXFxufFxccnxcXG4pLyk7XG4gICAgbGV0IGxpbmVCZWZvcmUgPSB0aGlzLmxpbmVzW2JlZ2lubmluZy5yb3ddLnN1YnN0cigwLCBiZWdpbm5pbmcuY29sKTtcbiAgICBsZXQgbGluZUVuZCA9IHRoaXMubGluZXNbZW5kLnJvd10uc3Vic3RyKGVuZC5jb2wpO1xuICAgIGluc2VydGVkTGluZXNbMF0gPSBsaW5lQmVmb3JlLmNvbmNhdChpbnNlcnRlZExpbmVzWzBdKTtcbiAgICBsZXQgZW5kQ29sUG9zID0gaW5zZXJ0ZWRMaW5lc1tpbnNlcnRlZExpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aDtcbiAgICBpbnNlcnRlZExpbmVzW2luc2VydGVkTGluZXMubGVuZ3RoIC0gMV0gPSBpbnNlcnRlZExpbmVzW2luc2VydGVkTGluZXMubGVuZ3RoIC0gMV0uY29uY2F0KGxpbmVFbmQpO1xuICAgIHRoaXMuc3BsaWNlTGluZXMoYmVnaW5uaW5nLnJvdywgMSArIGVuZC5yb3cgLSBiZWdpbm5pbmcucm93LCBpbnNlcnRlZExpbmVzKTtcbiAgICBmb2N1cy5yb3cgPSBiZWdpbm5pbmcucm93ICsgaW5zZXJ0ZWRMaW5lcy5sZW5ndGggLSAxO1xuICAgIGZvY3VzLmNvbCA9IGVuZENvbFBvcztcbiAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgICB0aGlzLnNldFNlbGVjdGlvbihmb2N1cyk7XG4gICAgdGhpcy5maXJlQ2hhbmdlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgdGhlIChsb3dlc3QgaW4gdGhlIERPTSB0cmVlKSBjb21tb24gYW5jZXN0b3Igb2YgdHdvIERPTSBub2Rlcy5cbiAgICogQHBhcmFtIHtOb2RlfSBub2RlMSB0aGUgZmlyc3Qgbm9kZVxuICAgKiBAcGFyYW0ge05vZGV9IG5vZGUyIHRoZSBzZWNvbmQgbm9kZVxuICAgKiBAcmV0dXJucyB7Tm9kZX0gVGhlIGNvbW1lbiBhbmNlc3RvciBub2RlLCBvciBudWxsIGlmIHRoZXJlIGlzIG5vIGNvbW1vbiBhbmNlc3RvclxuICAgKi9cbiAgY29tcHV0ZUNvbW1vbkFuY2VzdG9yKG5vZGUxLCBub2RlMikge1xuICAgIGlmICghbm9kZTEgfHwgIW5vZGUyKSByZXR1cm4gbnVsbDtcbiAgICBpZiAobm9kZTEgPT0gbm9kZTIpIHJldHVybiBub2RlMTtcbiAgICBjb25zdCBhbmNlc3RyeSA9IChub2RlKSA9PiB7XG4gICAgICBsZXQgYW5jZXN0cnkgPSBbXTtcbiAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgIGFuY2VzdHJ5LnVuc2hpZnQobm9kZSk7XG4gICAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICB9XG4gICAgICByZXR1cm4gYW5jZXN0cnk7XG4gICAgfVxuXG4gICAgY29uc3QgYW5jZXN0cnkxID0gYW5jZXN0cnkobm9kZTEpO1xuICAgIGNvbnN0IGFuY2VzdHJ5MiA9IGFuY2VzdHJ5KG5vZGUyKTtcblxuICAgIGlmIChhbmNlc3RyeTFbMF0gIT0gYW5jZXN0cnkyWzBdKSByZXR1cm4gbnVsbDtcbiAgICBsZXQgaTtcbiAgICBmb3IgKGkgPSAwOyBhbmNlc3RyeTFbaV0gPT0gYW5jZXN0cnkyW2ldOyBpKyspO1xuICAgIHJldHVybiBhbmNlc3RyeTFbaS0xXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgKGxvd2VzdCBpbiB0aGUgRE9NIHRyZWUpIGVuY2xvc2luZyBET00gbm9kZSB3aXRoIGEgZ2l2ZW4gY2xhc3MuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmb2N1cyBUaGUgZm9jdXMgc2VsZWN0aW9uIG9iamVjdFxuICAgKiBAcGFyYW0ge29iamVjdH0gYW5jaG9yIFRoZSBhbmNob3Igc2VsZWN0aW9uIG9iamVjdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lIFRoZSBjbGFzcyBuYW1lIHRvIGZpbmRcbiAgICogQHJldHVybnMge05vZGV9IFRoZSBlbmNsb3NpbmcgRE9NIG5vZGUgd2l0aCB0aGUgcmVzcGVjdGl2ZSBjbGFzcyAoaW5zaWRlIHRoZSBlZGl0b3IpLCBpZiB0aGVyZSBpcyBvbmU7IG51bGwgb3RoZXJ3aXNlLlxuICAgKi9cbiAgY29tcHV0ZUVuY2xvc2luZ01hcmt1cE5vZGUoZm9jdXMsIGFuY2hvciwgY2xhc3NOYW1lKSB7XG4gICAgbGV0IG5vZGUgPSBudWxsO1xuICAgIGlmICghZm9jdXMpIHJldHVybiBudWxsO1xuICAgIGlmICghYW5jaG9yKSB7XG4gICAgICBub2RlID0gZm9jdXMubm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGZvY3VzLnJvdyAhPSBhbmNob3Iucm93KSByZXR1cm4gbnVsbDtcbiAgICAgIG5vZGUgPSB0aGlzLmNvbXB1dGVDb21tb25BbmNlc3Rvcihmb2N1cy5ub2RlLCBhbmNob3Iubm9kZSk7XG4gICAgfVxuICAgIGlmICghbm9kZSkgcmV0dXJuIG51bGw7XG4gICAgd2hpbGUgKG5vZGUgIT0gdGhpcy5lKSB7XG4gICAgICBpZiAobm9kZS5jbGFzc05hbWUgJiYgbm9kZS5jbGFzc05hbWUuaW5jbHVkZXMoY2xhc3NOYW1lKSkgcmV0dXJuIG5vZGU7XG4gICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgIH1cbiAgICAvLyBBc2NlbmRlZCBhbGwgdGhlIHdheSB0byB0aGUgZWRpdG9yIGVsZW1lbnRcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzdGF0ZSAodHJ1ZSAvIGZhbHNlKSBvZiBhbGwgY29tbWFuZHMuXG4gICAqIEBwYXJhbSBmb2N1cyBGb2N1cyBvZiB0aGUgc2VsZWN0aW9uLiBJZiBub3QgZ2l2ZW4sIGFzc3VtZXMgdGhlIGN1cnJlbnQgZm9jdXMuXG4gICAqL1xuICBnZXRDb21tYW5kU3RhdGUoZm9jdXMgPSBudWxsLCBhbmNob3IgPSBudWxsKSB7XG4gICAgbGV0IGNvbW1hbmRTdGF0ZSA9IHt9O1xuICAgIGlmICghZm9jdXMpIGZvY3VzID0gdGhpcy5nZXRTZWxlY3Rpb24oZmFsc2UpO1xuICAgIGlmICghYW5jaG9yKSBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICBpZiAoIWZvY3VzKSB7XG4gICAgICBmb3IgKGxldCBjbWQgaW4gY29tbWFuZHMpIHtcbiAgICAgICAgY29tbWFuZFN0YXRlW2NtZF0gPSBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbW1hbmRTdGF0ZTtcbiAgICB9XG4gICAgaWYgKCFhbmNob3IpIGFuY2hvciA9IGZvY3VzOyBcbiAgICBcbiAgICBsZXQgc3RhcnQsIGVuZDtcbiAgICBpZiAoYW5jaG9yLnJvdyA8IGZvY3VzLnJvdyB8fCAoYW5jaG9yLnJvdyA9PSBmb2N1cy5yb3cgJiYgYW5jaG9yLmNvbCA8IGZvY3VzLmNvbCkpIHtcbiAgICAgIHN0YXJ0ID0gYW5jaG9yO1xuICAgICAgZW5kID0gZm9jdXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXJ0ID0gZm9jdXM7XG4gICAgICBlbmQgPSBhbmNob3I7XG4gICAgfVxuICAgIGlmIChlbmQucm93ID4gc3RhcnQucm93ICYmIGVuZC5jb2wgPT0gMCkge1xuICAgICAgZW5kLnJvdy0tO1xuICAgICAgZW5kLmNvbCA9IHRoaXMubGluZXNbZW5kLnJvd10ubGVuZ3RoOyAvLyBTZWxlY3Rpb24gdG8gYmVnaW5uaW5nIG9mIG5leHQgbGluZSBpcyBzYWlkIHRvIGVuZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsYXN0IGxpbmVcbiAgICB9XG5cbiAgICBmb3IgKGxldCBjbWQgaW4gY29tbWFuZHMpIHtcbiAgICAgIGlmIChjb21tYW5kc1tjbWRdLnR5cGUgPT0gJ2lubGluZScpIHtcblxuICAgICAgICBpZiAoIWZvY3VzIHx8IGZvY3VzLnJvdyAhPSBhbmNob3Iucm93IHx8ICF0aGlzLmlzSW5saW5lRm9ybWF0dGluZ0FsbG93ZWQoZm9jdXMsIGFuY2hvcikpIHtcbiAgICAgICAgICBjb21tYW5kU3RhdGVbY21kXSA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVGhlIGNvbW1hbmQgc3RhdGUgaXMgdHJ1ZSBpZiB0aGVyZSBpcyBhIHJlc3BlY3RpdmUgZW5jbG9zaW5nIG1hcmt1cCBub2RlIChlLmcuLCB0aGUgc2VsZWN0aW9uIGlzIGVuY2xvc2VkIGluIGEgPGI+Li48L2I+KSAuLi4gXG4gICAgICAgICAgY29tbWFuZFN0YXRlW2NtZF0gPSBcbiAgICAgICAgICAgICEhdGhpcy5jb21wdXRlRW5jbG9zaW5nTWFya3VwTm9kZShmb2N1cywgYW5jaG9yLCBjb21tYW5kc1tjbWRdLmNsYXNzTmFtZSkgfHxcbiAgICAgICAgICAvLyAuLi4gb3IgaWYgaXQncyBhbiBlbXB0eSBzdHJpbmcgcHJlY2VkZWQgYnkgYW5kIGZvbGxvd2VkIGJ5IGZvcm1hdHRpbmcgbWFya2VycywgZS5nLiAqKnwqKiB3aGVyZSB8IGlzIHRoZSBjdXJzb3JcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgZm9jdXMuY29sID09IGFuY2hvci5jb2wgXG4gICAgICAgICAgICAgICYmICEhdGhpcy5saW5lc1tmb2N1cy5yb3ddLnN1YnN0cigwLCBmb2N1cy5jb2wpLm1hdGNoKGNvbW1hbmRzW2NtZF0udW5zZXQucHJlUGF0dGVybilcbiAgICAgICAgICAgICAgJiYgISF0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKGZvY3VzLmNvbCkubWF0Y2goY29tbWFuZHNbY21kXS51bnNldC5wb3N0UGF0dGVybilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gXG4gICAgICBpZiAoY29tbWFuZHNbY21kXS50eXBlID09ICdsaW5lJykge1xuICAgICAgICBpZiAoIWZvY3VzKSB7XG4gICAgICAgICAgY29tbWFuZFN0YXRlW2NtZF0gPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBzdGF0ZSA9IHRoaXMubGluZVR5cGVzW3N0YXJ0LnJvd10gPT0gY29tbWFuZHNbY21kXS5jbGFzc05hbWU7XG4gICAgICAgICAgXG4gICAgICAgICAgZm9yIChsZXQgbGluZSA9IHN0YXJ0LnJvdzsgbGluZSA8PSBlbmQucm93OyBsaW5lICsrKSB7XG4gICAgICAgICAgICBpZiAoKHRoaXMubGluZVR5cGVzW2xpbmVdID09IGNvbW1hbmRzW2NtZF0uY2xhc3NOYW1lKSAhPSBzdGF0ZSkge1xuICAgICAgICAgICAgICBzdGF0ZSA9IG51bGw7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb21tYW5kU3RhdGVbY21kXSA9IHN0YXRlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29tbWFuZFN0YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYSBjb21tYW5kIHN0YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb21tYW5kIFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN0YXRlIFxuICAgKi9cbiAgc2V0Q29tbWFuZFN0YXRlKGNvbW1hbmQsIHN0YXRlKSB7XG4gICAgaWYgKGNvbW1hbmRzW2NvbW1hbmRdLnR5cGUgPT0gJ2lubGluZScpIHtcbiAgICAgIGxldCBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICAgIGxldCBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKGZhbHNlKTtcbiAgICAgIGlmICghYW5jaG9yKSBhbmNob3IgPSBmb2N1cztcbiAgICAgIGlmICghYW5jaG9yKSByZXR1cm47XG4gICAgICBpZiAoYW5jaG9yLnJvdyAhPSBmb2N1cy5yb3cpIHJldHVybjtcbiAgICAgIGlmICghdGhpcy5pc0lubGluZUZvcm1hdHRpbmdBbGxvd2VkKGZvY3VzLCBhbmNob3IpKSByZXR1cm47IFxuICAgICAgbGV0IG1hcmt1cE5vZGUgPSB0aGlzLmNvbXB1dGVFbmNsb3NpbmdNYXJrdXBOb2RlKGZvY3VzLCBhbmNob3IsIGNvbW1hbmRzW2NvbW1hbmRdLmNsYXNzTmFtZSk7XG4gICAgICB0aGlzLmNsZWFyRGlydHlGbGFnKCk7XG4gICAgICBcbiAgICAgIC8vIEZpcnN0IGNhc2U6IFRoZXJlJ3MgYW4gZW5jbG9zaW5nIG1hcmt1cCBub2RlLCByZW1vdmUgdGhlIG1hcmtlcnMgYXJvdW5kIHRoYXQgbWFya3VwIG5vZGVcbiAgICAgIGlmIChtYXJrdXBOb2RlKSB7XG4gICAgICAgIHRoaXMubGluZURpcnR5W2ZvY3VzLnJvd10gPSB0cnVlO1xuICAgICAgICBjb25zdCBzdGFydENvbCA9IHRoaXMuY29tcHV0ZUNvbHVtbihtYXJrdXBOb2RlLCAwKTtcbiAgICAgICAgY29uc3QgbGVuID0gbWFya3VwTm9kZS50ZXh0Q29udGVudC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGxlZnQgPSB0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKDAsIHN0YXJ0Q29sKS5yZXBsYWNlKGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnByZVBhdHRlcm4sICcnKTtcbiAgICAgICAgY29uc3QgbWlkID0gdGhpcy5saW5lc1tmb2N1cy5yb3ddLnN1YnN0cihzdGFydENvbCwgbGVuKTtcbiAgICAgICAgY29uc3QgcmlnaHQgPSB0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKHN0YXJ0Q29sICsgbGVuKS5yZXBsYWNlKGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnBvc3RQYXR0ZXJuLCAnJyk7XG4gICAgICAgIHRoaXMubGluZXNbZm9jdXMucm93XSA9IGxlZnQuY29uY2F0KG1pZCwgcmlnaHQpO1xuICAgICAgICBhbmNob3IuY29sID0gbGVmdC5sZW5ndGg7XG4gICAgICAgIGZvY3VzLmNvbCA9IGFuY2hvci5jb2wgKyBsZW47XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybWF0dGluZygpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihmb2N1cywgYW5jaG9yKTsgIFxuXG4gICAgICAvLyBTZWNvbmQgY2FzZTogRW1wdHkgc2VsZWN0aW9uIHdpdGggc3Vycm91bmRpbmcgZm9ybWF0dGluZyBtYXJrZXJzLCByZW1vdmUgdGhvc2VcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGZvY3VzLmNvbCA9PSBhbmNob3IuY29sIFxuICAgICAgICAmJiAhIXRoaXMubGluZXNbZm9jdXMucm93XS5zdWJzdHIoMCwgZm9jdXMuY29sKS5tYXRjaChjb21tYW5kc1tjb21tYW5kXS51bnNldC5wcmVQYXR0ZXJuKVxuICAgICAgICAmJiAhIXRoaXMubGluZXNbZm9jdXMucm93XS5zdWJzdHIoZm9jdXMuY29sKS5tYXRjaChjb21tYW5kc1tjb21tYW5kXS51bnNldC5wb3N0UGF0dGVybilcbiAgICAgICkge1xuICAgICAgICB0aGlzLmxpbmVEaXJ0eVtmb2N1cy5yb3ddID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgbGVmdCA9IHRoaXMubGluZXNbZm9jdXMucm93XS5zdWJzdHIoMCwgZm9jdXMuY29sKS5yZXBsYWNlKGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnByZVBhdHRlcm4sICcnKTtcbiAgICAgICAgY29uc3QgcmlnaHQgPSB0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKGZvY3VzLmNvbCkucmVwbGFjZShjb21tYW5kc1tjb21tYW5kXS51bnNldC5wb3N0UGF0dGVybiwgJycpO1xuICAgICAgICB0aGlzLmxpbmVzW2ZvY3VzLnJvd10gPSBsZWZ0LmNvbmNhdChyaWdodCk7XG4gICAgICAgIGZvY3VzLmNvbCA9IGFuY2hvci5jb2wgPSBsZWZ0Lmxlbmd0aDtcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtYXR0aW5nKCk7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKGZvY3VzLCBhbmNob3IpO1xuXG4gICAgICAvLyBOb3QgY3VycmVudGx5IGZvcm1hdHRlZCwgaW5zZXJ0IGZvcm1hdHRpbmcgbWFya2Vyc1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgXG4gICAgICAgIC8vIFRyaW0gYW55IHNwYWNlcyBmcm9tIHRoZSBzZWxlY3Rpb25cbiAgICAgICAgbGV0IHtzdGFydENvbCwgZW5kQ29sfSA9IGZvY3VzLmNvbCA8IGFuY2hvci5jb2wgPyB7c3RhcnRDb2w6IGZvY3VzLmNvbCwgZW5kQ29sOiBhbmNob3IuY29sfSA6IHtzdGFydENvbDogYW5jaG9yLmNvbCwgZW5kQ29sOiBmb2N1cy5jb2x9O1xuXG4gICAgICAgIGxldCBtYXRjaCA9IHRoaXMubGluZXNbZm9jdXMucm93XS5zdWJzdHIoc3RhcnRDb2wsIGVuZENvbCAtIHN0YXJ0Q29sKS5tYXRjaCgvXig/PGxlYWRpbmc+XFxzKikuKlxcUyg/PHRyYWlsaW5nPlxccyopJC8pO1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICBzdGFydENvbCArPSBtYXRjaC5ncm91cHMubGVhZGluZy5sZW5ndGg7XG4gICAgICAgICAgZW5kQ29sIC09IG1hdGNoLmdyb3Vwcy50cmFpbGluZy5sZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICBmb2N1cy5jb2wgPSBzdGFydENvbDtcbiAgICAgICAgYW5jaG9yLmNvbCA9IGVuZENvbDtcblxuICAgICAgICAvLyBKdXN0IGluc2VydCBtYXJrdXAgYmVmb3JlIGFuZCBhZnRlciBhbmQgaG9wZSBmb3IgdGhlIGJlc3QuIFxuICAgICAgICB0aGlzLndyYXBTZWxlY3Rpb24oY29tbWFuZHNbY29tbWFuZF0uc2V0LnByZSwgY29tbWFuZHNbY29tbWFuZF0uc2V0LnBvc3QsIGZvY3VzLCBhbmNob3IpO1xuICAgICAgICAvLyBUT0RPIGNsZWFuIHRoaXMgdXAgc28gdGhhdCBtYXJrdXAgcmVtYWlucyBwcm9wZXJseSBuZXN0ZWRcbiAgICAgIH1cblxuICAgIH0gZWxzZSBpZiAoY29tbWFuZHNbY29tbWFuZF0udHlwZSA9PSAnbGluZScpIHtcbiAgICAgIGxldCBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICAgIGxldCBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKGZhbHNlKTtcbiAgICAgIGlmICghYW5jaG9yKSBhbmNob3IgPSBmb2N1cztcbiAgICAgIGlmICghZm9jdXMpIHJldHVybjtcbiAgICAgIHRoaXMuY2xlYXJEaXJ0eUZsYWcoKTtcbiAgICAgIGxldCBzdGFydCA9IGFuY2hvci5yb3cgPiBmb2N1cy5yb3cgPyBmb2N1cyA6IGFuY2hvcjtcbiAgICAgIGxldCBlbmQgPSAgYW5jaG9yLnJvdyA+IGZvY3VzLnJvdyA/IGFuY2hvciA6IGZvY3VzO1xuICAgICAgaWYgKGVuZC5yb3cgPiBzdGFydC5yb3cgJiYgZW5kLmNvbCA9PSAwKSB7XG4gICAgICAgIGVuZC5yb3ctLTtcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgbGluZSA9IHN0YXJ0LnJvdzsgbGluZSA8PSBlbmQucm93OyBsaW5lKyspIHtcbiAgICAgICAgaWYgKHN0YXRlICYmIHRoaXMubGluZVR5cGVzW2xpbmVdICE9IGNvbW1hbmRzW2NvbW1hbmRdLmNsYXNzTmFtZSkge1xuICAgICAgICAgIHRoaXMubGluZXNbbGluZV0gPSB0aGlzLmxpbmVzW2xpbmVdLnJlcGxhY2UoY29tbWFuZHNbY29tbWFuZF0uc2V0LnBhdHRlcm4sIGNvbW1hbmRzW2NvbW1hbmRdLnNldC5yZXBsYWNlbWVudC5yZXBsYWNlKCckIycsIChsaW5lIC0gc3RhcnQucm93ICsgMSkpKTtcbiAgICAgICAgICB0aGlzLmxpbmVEaXJ0eVtsaW5lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzdGF0ZSAmJiB0aGlzLmxpbmVUeXBlc1tsaW5lXSA9PSBjb21tYW5kc1tjb21tYW5kXS5jbGFzc05hbWUpIHtcbiAgICAgICAgICB0aGlzLmxpbmVzW2xpbmVdID0gdGhpcy5saW5lc1tsaW5lXS5yZXBsYWNlKGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnBhdHRlcm4sIGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnJlcGxhY2VtZW50KTtcbiAgICAgICAgICB0aGlzLmxpbmVEaXJ0eVtsaW5lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlRm9ybWF0dGluZygpO1xuICAgICAgdGhpcy5zZXRTZWxlY3Rpb24oe3JvdzogZW5kLnJvdywgY29sOiB0aGlzLmxpbmVzW2VuZC5yb3ddLmxlbmd0aH0sIHtyb3c6IHN0YXJ0LnJvdywgY29sOiAwfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciBvciBub3QgaW5saW5lIGZvcm1hdHRpbmcgaXMgYWxsb3dlZCBhdCB0aGUgY3VycmVudCBmb2N1cyBcbiAgICogQHBhcmFtIHtvYmplY3R9IGZvY3VzIFRoZSBjdXJyZW50IGZvY3VzXG4gICAqL1xuICBpc0lubGluZUZvcm1hdHRpbmdBbGxvd2VkKCkge1xuICAgIC8vIFRPRE8gUmVtb3ZlIHBhcmFtZXRlcnMgZnJvbSBhbGwgY2FsbHNcbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgaWYgKCFzZWwpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIENoZWNrIGlmIHdlIGNhbiBmaW5kIGEgY29tbW9uIGFuY2VzdG9yIHdpdGggdGhlIGNsYXNzIGBUTUlubGluZUZvcm1hdHRlZGAgXG5cbiAgICAvLyBTcGVjaWFsIGNhc2U6IEVtcHR5IHNlbGVjdGlvbiByaWdodCBiZWZvcmUgYFRNSW5saW5lRm9ybWF0dGVkYFxuICAgIGlmIChzZWwuaXNDb2xsYXBzZWQgJiYgc2VsLmZvY3VzTm9kZS5ub2RlVHlwZSA9PSAzICYmIHNlbC5mb2N1c09mZnNldCA9PSBzZWwuZm9jdXNOb2RlLm5vZGVWYWx1ZS5sZW5ndGgpIHtcbiAgICAgIGxldCBub2RlO1xuICAgICAgZm9yIChub2RlID0gc2VsLmZvY3VzTm9kZTsgbm9kZSAmJiBub2RlLm5leHRTaWJsaW5nID09IG51bGw7IG5vZGUgPSBub2RlLnBhcmVudE5vZGUpO1xuICAgICAgaWYgKG5vZGUgJiYgbm9kZS5uZXh0U2libGluZy5jbGFzc05hbWUgJiYgbm9kZS5uZXh0U2libGluZy5jbGFzc05hbWUuaW5jbHVkZXMoJ1RNSW5saW5lRm9ybWF0dGVkJykpIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIExvb2sgZm9yIGEgY29tbW9uIGFuY2VzdG9yXG4gICAgbGV0IGFuY2VzdG9yID0gdGhpcy5jb21wdXRlQ29tbW9uQW5jZXN0b3Ioc2VsLmZvY3VzTm9kZSwgc2VsLmFuY2hvck5vZGUpO1xuICAgIGlmICghYW5jZXN0b3IpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYW4gYW5jZXN0b3Igb2YgY2xhc3MgJ1RNSW5saW5lRm9ybWF0dGVkJyBvciAnVE1CbGFua0xpbmUnXG4gICAgd2hpbGUgKGFuY2VzdG9yICYmIGFuY2VzdG9yICE9IHRoaXMuZSkge1xuICAgICAgaWYgKGFuY2VzdG9yLmNsYXNzTmFtZSAmJiAoYW5jZXN0b3IuY2xhc3NOYW1lLmluY2x1ZGVzKCdUTUlubGluZUZvcm1hdHRlZCcpIHx8IGFuY2VzdG9yLmNsYXNzTmFtZS5pbmNsdWRlcygnVE1CbGFua0xpbmUnKSkpIHJldHVybiB0cnVlO1xuICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci5wYXJlbnROb2RlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcmFwcyB0aGUgY3VycmVudCBzZWxlY3Rpb24gaW4gdGhlIHN0cmluZ3MgcHJlIGFuZCBwb3N0LiBJZiB0aGUgc2VsZWN0aW9uIGlzIG5vdCBvbiBvbmUgbGluZSwgcmV0dXJucy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHByZSBUaGUgc3RyaW5nIHRvIGluc2VydCBiZWZvcmUgdGhlIHNlbGVjdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHBvc3QgVGhlIHN0cmluZyB0byBpbnNlcnQgYWZ0ZXIgdGhlIHNlbGVjdGlvbi5cbiAgICogQHBhcmFtIHtvYmplY3R9IGZvY3VzIFRoZSBjdXJyZW50IHNlbGVjdGlvbiBmb2N1cy4gSWYgbnVsbCwgc2VsZWN0aW9uIHdpbGwgYmUgY29tcHV0ZWQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhbmNob3IgVGhlIGN1cnJlbnQgc2VsZWN0aW9uIGZvY3VzLiBJZiBudWxsLCBzZWxlY3Rpb24gd2lsbCBiZSBjb21wdXRlZC5cbiAgICovXG4gIHdyYXBTZWxlY3Rpb24ocHJlLCBwb3N0LCBmb2N1cyA9IG51bGwsIGFuY2hvciA9IG51bGwpIHtcbiAgICBpZiAoIWZvY3VzKSBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKGZhbHNlKTtcbiAgICBpZiAoIWFuY2hvcikgYW5jaG9yID0gdGhpcy5nZXRTZWxlY3Rpb24odHJ1ZSk7XG4gICAgaWYgKCFmb2N1cyB8fCAhYW5jaG9yIHx8IGZvY3VzLnJvdyAhPSBhbmNob3Iucm93KSByZXR1cm47XG4gICAgdGhpcy5saW5lRGlydHlbZm9jdXMucm93XSA9IHRydWU7XG5cbiAgICBjb25zdCBzdGFydENvbCA9IGZvY3VzLmNvbCA8IGFuY2hvci5jb2wgPyBmb2N1cy5jb2wgOiBhbmNob3IuY29sO1xuICAgIGNvbnN0IGVuZENvbCA9IGZvY3VzLmNvbCA8IGFuY2hvci5jb2wgPyBhbmNob3IuY29sIDogZm9jdXMuY29sO1xuICAgIGNvbnN0IGxlZnQgPSB0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKDAsIHN0YXJ0Q29sKS5jb25jYXQocHJlKTtcbiAgICBjb25zdCBtaWQgPSAoZW5kQ29sID09IHN0YXJ0Q29sID8gJycgOiB0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKHN0YXJ0Q29sLCBlbmRDb2wgLSBzdGFydENvbCkpOyBcbiAgICBjb25zdCByaWdodCA9IHBvc3QuY29uY2F0KHRoaXMubGluZXNbZm9jdXMucm93XS5zdWJzdHIoZW5kQ29sKSk7XG4gICAgdGhpcy5saW5lc1tmb2N1cy5yb3ddID0gbGVmdC5jb25jYXQobWlkLCByaWdodCk7XG4gICAgYW5jaG9yLmNvbCA9IGxlZnQubGVuZ3RoO1xuICAgIGZvY3VzLmNvbCA9IGFuY2hvci5jb2wgKyBtaWQubGVuZ3RoO1xuXG4gICAgdGhpcy51cGRhdGVGb3JtYXR0aW5nKCk7XG4gICAgdGhpcy5zZXRTZWxlY3Rpb24oZm9jdXMsIGFuY2hvcik7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgY29tbWFuZCBzdGF0ZSBmb3IgYSBjb21tYW5kICh0cnVlIDwtPiBmYWxzZSlcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbW1hbmQgVGhlIGVkaXRvciBjb21tYW5kXG4gICAqL1xuICB0b2dnbGVDb21tYW5kU3RhdGUoY29tbWFuZCkge1xuICAgIGlmICghdGhpcy5sYXN0Q29tbWFuZFN0YXRlKSB0aGlzLmxhc3RDb21tYW5kU3RhdGUgPSB0aGlzLmdldENvbW1hbmRTdGF0ZSgpO1xuICAgIHRoaXMuc2V0Q29tbWFuZFN0YXRlKGNvbW1hbmQsICF0aGlzLmxhc3RDb21tYW5kU3RhdGVbY29tbWFuZF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIGEgY2hhbmdlIGV2ZW50LiBVcGRhdGVzIHRoZSBsaW5rZWQgdGV4dGFyZWEgYW5kIG5vdGlmaWVzIGFueSBldmVudCBsaXN0ZW5lcnMuXG4gICAqL1xuICBmaXJlQ2hhbmdlKCkge1xuICAgIGlmICghdGhpcy50ZXh0YXJlYSAmJiAhdGhpcy5saXN0ZW5lcnMuY2hhbmdlLmxlbmd0aCkgcmV0dXJuO1xuICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldENvbnRlbnQoKTtcbiAgICBpZiAodGhpcy50ZXh0YXJlYSkgdGhpcy50ZXh0YXJlYS52YWx1ZSA9IGNvbnRlbnQ7XG4gICAgZm9yIChsZXQgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMuY2hhbmdlKSB7XG4gICAgICBsaXN0ZW5lcih7XG4gICAgICAgIGNvbnRlbnQ6IGNvbnRlbnQsXG4gICAgICAgIGxpbmVzRGlydHk6IHRoaXMubGluZXNEaXJ0eSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyBhIFwic2VsZWN0aW9uIGNoYW5nZWRcIiBldmVudC5cbiAgICovXG4gIGZpcmVTZWxlY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMubGlzdGVuZXJzLnNlbGVjdGlvbiAmJiB0aGlzLmxpc3RlbmVycy5zZWxlY3Rpb24ubGVuZ3RoKSB7XG4gICAgICBsZXQgZm9jdXMgPSB0aGlzLmdldFNlbGVjdGlvbihmYWxzZSk7XG4gICAgICBsZXQgYW5jaG9yID0gdGhpcy5nZXRTZWxlY3Rpb24odHJ1ZSk7XG4gICAgICBsZXQgY29tbWFuZFN0YXRlID0gdGhpcy5nZXRDb21tYW5kU3RhdGUoZm9jdXMsIGFuY2hvcik7XG4gICAgICBpZiAodGhpcy5sYXN0Q29tbWFuZFN0YXRlKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5sYXN0Q29tbWFuZFN0YXRlLCBjb21tYW5kU3RhdGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sYXN0Q29tbWFuZFN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgY29tbWFuZFN0YXRlKTtcbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGxpc3RlbmVyIG9mIHRoaXMubGlzdGVuZXJzLnNlbGVjdGlvbikge1xuICAgICAgICBsaXN0ZW5lcih7XG4gICAgICAgICAgZm9jdXM6IGZvY3VzLFxuICAgICAgICAgIGFuY2hvcjogYW5jaG9yLFxuICAgICAgICAgIGNvbW1hbmRTdGF0ZTogdGhpcy5sYXN0Q29tbWFuZFN0YXRlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBldmVudCBsaXN0ZW5lci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgVGhlIHR5cGUgb2YgZXZlbnQgdG8gbGlzdGVuIHRvLiBDYW4gYmUgJ2NoYW5nZScgb3IgJ3NlbGVjdGlvbidcbiAgICogQHBhcmFtIHsqfSBsaXN0ZW5lciBGdW5jdGlvbiBvZiB0aGUgdHlwZSAoZXZlbnQpID0+IHt9IHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBldmVudCBvY2N1cnMuXG4gICAqL1xuICBhZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgaWYgKHR5cGUubWF0Y2goL14oPzpjaGFuZ2V8aW5wdXQpJC9pKSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuY2hhbmdlLnB1c2gobGlzdGVuZXIpO1xuICAgIH1cbiAgICBpZiAodHlwZS5tYXRjaCgvXig/OnNlbGVjdGlvbnxzZWxlY3Rpb25jaGFuZ2UpJC9pKSkge1xuICAgICAgdGhpcy5saXN0ZW5lcnMuc2VsZWN0aW9uLnB1c2gobGlzdGVuZXIpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBFZGl0b3I7XG4iXSwibmFtZXMiOlsic3ZnIiwiYmxvY2txdW90ZSIsImJvbGQiLCJjbGVhcl9mb3JtYXR0aW5nIiwiY29kZSIsImgxIiwiaDIiLCJociIsImltYWdlIiwiaXRhbGljIiwibGluayIsIm9sIiwic3RyaWtldGhyb3VnaCIsInVsIiwiaXNNYWNMaWtlIiwidGVzdCIsIm5hdmlnYXRvciIsInBsYXRmb3JtIiwiRGVmYXVsdENvbW1hbmRzIiwibmFtZSIsImFjdGlvbiIsImlubmVySFRNTCIsInRpdGxlIiwiaG90a2V5IiwiZWRpdG9yIiwiaXNJbmxpbmVGb3JtYXR0aW5nQWxsb3dlZCIsIndyYXBTZWxlY3Rpb24iLCJlbmFibGVkIiwiZm9jdXMiLCJhbmNob3IiLCJwYXN0ZSIsIkNvbW1hbmRCYXIiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiZSIsImNvbW1hbmRzIiwiYnV0dG9ucyIsInN0YXRlIiwiaG90a2V5cyIsImVsZW1lbnQiLCJ0YWdOYW1lIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImJvZHkiLCJjcmVhdGVDb21tYW5kQmFyRWxlbWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJoYW5kbGVLZXlkb3duIiwic2V0RWRpdG9yIiwicGFyZW50RWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJjb21tYW5kIiwiZWwiLCJhcHBlbmRDaGlsZCIsImNvbW1hbmROYW1lIiwiT2JqZWN0IiwiYXNzaWduIiwia2V5cyIsInNwbGl0IiwibW9kaWZpZXJzIiwibW9kaWZpZXJleHBsYW5hdGlvbiIsImkiLCJsZW5ndGgiLCJwdXNoIiwibWF0Y2giLCJrZXkiLCJ0b0xvd2VyQ2FzZSIsImNvbmNhdCIsImpvaW4iLCJoYW5kbGVDbGljayIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJzZXRDb21tYW5kU3RhdGUiLCJoYW5kbGVTZWxlY3Rpb24iLCJjb21tYW5kU3RhdGUiLCJ1bmRlZmluZWQiLCJvdXRlciIsIm1vZGlmaWVyIiwiY2hlY2siLCJpdCIsIk1hdGgiLCJtb2R1bGUiLCJnbG9iYWxUaGlzIiwid2luZG93Iiwic2VsZiIsImdsb2JhbCIsInRoaXMiLCJGdW5jdGlvbiIsImV4ZWMiLCJlcnJvciIsImZhaWxzIiwicmVxdWlyZSIsImRlZmluZVByb3BlcnR5IiwiZ2V0IiwiYmluZCIsImhhc093blByb3BlcnR5IiwiTkFUSVZFX0JJTkQiLCJGdW5jdGlvblByb3RvdHlwZSIsInByb3RvdHlwZSIsImNhbGwiLCJ1bmN1cnJ5VGhpc1dpdGhCaW5kIiwiZm4iLCJhcHBseSIsImFyZ3VtZW50cyIsImRvY3VtZW50QWxsIiwiYWxsIiwiSVNfSFRNTEREQSIsIiRkb2N1bWVudEFsbCIsImFyZ3VtZW50IiwiaXNOdWxsT3JVbmRlZmluZWQiLCIkVHlwZUVycm9yIiwiVHlwZUVycm9yIiwicmVxdWlyZU9iamVjdENvZXJjaWJsZSIsIiRPYmplY3QiLCJ1bmN1cnJ5VGhpcyIsInRvT2JqZWN0IiwiaGFzT3duIiwiREVTQ1JJUFRPUlMiLCJnZXREZXNjcmlwdG9yIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiRVhJU1RTIiwiUFJPUEVSIiwic29tZXRoaW5nIiwiQ09ORklHVVJBQkxFIiwiY29uZmlndXJhYmxlIiwidmFsdWUiLCJ3cml0YWJsZSIsImRlZmluZUdsb2JhbFByb3BlcnR5IiwiU0hBUkVEIiwic3RvcmUiLCJpc0NhbGxhYmxlIiwiZnVuY3Rpb25Ub1N0cmluZyIsInRvU3RyaW5nIiwiaW5zcGVjdFNvdXJjZSIsIldlYWtNYXAiLCJTdHJpbmciLCJpc09iamVjdCIsImEiLCIkU3RyaW5nIiwiYUZ1bmN0aW9uIiwibmFtZXNwYWNlIiwibWV0aG9kIiwiaXNQcm90b3R5cGVPZiIsInVzZXJBZ2VudCIsInByb2Nlc3MiLCJEZW5vIiwidmVyc2lvbnMiLCJ2ZXJzaW9uIiwidjgiLCJWOF9WRVJTSU9OIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9sIiwiU3ltYm9sIiwic2hhbSIsIk5BVElWRV9TWU1CT0wiLCJpdGVyYXRvciIsImdldEJ1aWx0SW4iLCJVU0VfU1lNQk9MX0FTX1VJRCIsIiRTeW1ib2wiLCJ0cnlUb1N0cmluZyIsImFDYWxsYWJsZSIsIlYiLCJQIiwiZnVuYyIsImlucHV0IiwicHJlZiIsInZhbCIsInZhbHVlT2YiLCJtb2RlIiwiY29weXJpZ2h0IiwibGljZW5zZSIsInNvdXJjZSIsImlkIiwicG9zdGZpeCIsInJhbmRvbSIsInNoYXJlZCIsInVpZCIsIldlbGxLbm93blN5bWJvbHNTdG9yZSIsImNyZWF0ZVdlbGxLbm93blN5bWJvbCIsIndpdGhvdXRTZXR0ZXIiLCJpc1N5bWJvbCIsImdldE1ldGhvZCIsIm9yZGluYXJ5VG9QcmltaXRpdmUiLCJ3ZWxsS25vd25TeW1ib2wiLCJUT19QUklNSVRJVkUiLCJleG90aWNUb1ByaW0iLCJyZXN1bHQiLCJ0b1ByaW1pdGl2ZSIsIklFOF9ET01fREVGSU5FIiwiVjhfUFJPVE9UWVBFX0RFRklORV9CVUciLCJhbk9iamVjdCIsInRvUHJvcGVydHlLZXkiLCIkZGVmaW5lUHJvcGVydHkiLCIkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiRU5VTUVSQUJMRSIsIldSSVRBQkxFIiwiZXhwb3J0cyIsIk8iLCJBdHRyaWJ1dGVzIiwiY3VycmVudCIsImVudW1lcmFibGUiLCJiaXRtYXAiLCJkZWZpbmVQcm9wZXJ0eU1vZHVsZSIsImNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciIsIm9iamVjdCIsImYiLCJOQVRJVkVfV0VBS19NQVAiLCJjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkiLCJzaGFyZWRLZXkiLCJPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCIsInNldCIsImhhcyIsImVuZm9yY2UiLCJnZXR0ZXJGb3IiLCJUWVBFIiwidHlwZSIsIm1ldGFkYXRhIiwiZmFjYWRlIiwiU1RBVEUiLCJDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSIsIkludGVybmFsU3RhdGVNb2R1bGUiLCJlbmZvcmNlSW50ZXJuYWxTdGF0ZSIsImdldEludGVybmFsU3RhdGUiLCJzdHJpbmdTbGljZSIsInNsaWNlIiwicmVwbGFjZSIsIkNPTkZJR1VSQUJMRV9MRU5HVEgiLCJURU1QTEFURSIsIm1ha2VCdWlsdEluIiwib3B0aW9ucyIsImdldHRlciIsInNldHRlciIsImFyaXR5IiwidGFyZ2V0IiwiZGVzY3JpcHRvciIsInRoYXQiLCJoYXNJbmRpY2VzIiwiaWdub3JlQ2FzZSIsIm11bHRpbGluZSIsImRvdEFsbCIsInVuaWNvZGUiLCJ1bmljb2RlU2V0cyIsInN0aWNreSIsImRlZmluZUJ1aWx0SW5BY2Nlc3NvciIsInJlZ0V4cEZsYWdzIiwiUmVnRXhwIiwiUmVnRXhwUHJvdG90eXBlIiwiRk9SQ0VEIiwiSU5ESUNFU19TVVBQT1JUIiwiY2FsbHMiLCJleHBlY3RlZCIsImFkZEdldHRlciIsImNociIsInBhaXJzIiwicmVwbGFjZW1lbnRzIiwiQVNDSUlQdW5jdHVhdGlvbiIsIk5vdFRyaWdnZXJDaGFyIiwiU2NoZW1lIiwiRW1haWwiLCJIVE1MT3BlblRhZyIsIkhUTUxDbG9zZVRhZyIsIkhUTUxUYWdOYW1lIiwiSFRNTENvbW1lbnQiLCJIVE1MUEkiLCJIVE1MRGVjbGFyYXRpb24iLCJIVE1MQ0RBVEEiLCJIVE1MQXR0cmlidXRlIiwiSFRNTEF0dFZhbHVlIiwiS25vd25UYWciLCJwdW5jdHVhdGlvbkxlYWRpbmciLCJwdW5jdHVhdGlvblRyYWlsaW5nIiwibGluZUdyYW1tYXIiLCJUTUgxIiwicmVnZXhwIiwicmVwbGFjZW1lbnQiLCJUTUgyIiwiVE1IMyIsIlRNSDQiLCJUTUg1IiwiVE1INiIsIlRNQmxvY2txdW90ZSIsIlRNQ29kZUZlbmNlQmFja3RpY2tPcGVuIiwiVE1Db2RlRmVuY2VUaWxkZU9wZW4iLCJUTUNvZGVGZW5jZUJhY2t0aWNrQ2xvc2UiLCJUTUNvZGVGZW5jZVRpbGRlQ2xvc2UiLCJUTUJsYW5rTGluZSIsIlRNU2V0ZXh0SDFNYXJrZXIiLCJUTVNldGV4dEgyTWFya2VyIiwiVE1IUiIsIlRNVUwiLCJUTU9MIiwiVE1JbmRlbnRlZENvZGUiLCJUTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uIiwibGFiZWxQbGFjZWhvbGRlciIsImh0bWxCbG9ja0dyYW1tYXIiLCJzdGFydCIsImVuZCIsInBhcmFJbnRlcnJ1cHQiLCJpbmxpbmVHcmFtbWFyIiwiZXNjYXBlIiwiYXV0b2xpbmsiLCJodG1sIiwibGlua09wZW4iLCJpbWFnZU9wZW4iLCJsaW5rTGFiZWwiLCJkZWZhdWx0IiwicmVwbGFjZW1lbnRSZWdleHAiLCJpbmxpbmVSdWxlcyIsInJ1bGUiLCJyZSIsInN0cmluZyIsImZsYWdzIiwiaHRtbGVzY2FwZSIsInByZSIsInBvc3QiLCJ1bnNldCIsInByZVBhdHRlcm4iLCJwb3N0UGF0dGVybiIsInBhdHRlcm4iLCJoMyIsImg0IiwiaDUiLCJoNiIsIkVkaXRvciIsInRleHRhcmVhIiwibGluZXMiLCJsaW5lRWxlbWVudHMiLCJsaW5lVHlwZXMiLCJsaW5lQ2FwdHVyZXMiLCJsaW5lUmVwbGFjZW1lbnRzIiwibGlua0xhYmVscyIsImxpbmVEaXJ0eSIsImxhc3RDb21tYW5kU3RhdGUiLCJsaXN0ZW5lcnMiLCJjaGFuZ2UiLCJzZWxlY3Rpb24iLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInBhcmVudE5vZGUiLCJzdHlsZSIsImRpc3BsYXkiLCJjcmVhdGVFZGl0b3JFbGVtZW50Iiwic2V0Q29udGVudCIsImNvbnRlbnQiLCJjb250ZW50RWRpdGFibGUiLCJ3aGl0ZVNwYWNlIiwid2Via2l0VXNlck1vZGlmeSIsIm5leHRTaWJsaW5nIiwiaW5zZXJ0QmVmb3JlIiwiaGFuZGxlSW5wdXRFdmVudCIsImhhbmRsZVNlbGVjdGlvbkNoYW5nZUV2ZW50IiwiaGFuZGxlUGFzdGUiLCJjaGlsZE5vZGVzIiwiZmlyc3RDaGlsZCIsInJlbW92ZUNoaWxkIiwibGluZU51bSIsImxlIiwiQXJyYXkiLCJ1cGRhdGVGb3JtYXR0aW5nIiwiZmlyZUNoYW5nZSIsImdldENvbnRlbnQiLCJ1cGRhdGVMaW5lVHlwZXMiLCJ1cGRhdGVMaW5rTGFiZWxzIiwiYXBwbHlMaW5lVHlwZXMiLCJsIiwiY2FwdHVyZSIsInN0ciIsInAxIiwicDIiLCJwcm9jZXNzSW5saW5lU3R5bGVzIiwiY29udGVudEhUTUwiLCJyZW1vdmVBdHRyaWJ1dGUiLCJkYXRhc2V0IiwiY29kZUJsb2NrVHlwZSIsImNvZGVCbG9ja1NlcUxlbmd0aCIsImh0bWxCbG9jayIsImxpbmVUeXBlIiwibGluZUNhcHR1cmUiLCJsaW5lUmVwbGFjZW1lbnQiLCJncm91cHMiLCJodG1sQmxvY2tUeXBlIiwiaGVhZGluZ0xpbmUiLCJoZWFkaW5nTGluZVR5cGUiLCJ1cGRhdGVMaW5lQ29udGVudHNBbmRGb3JtYXR0aW5nIiwiY2xlYXJEaXJ0eUZsYWciLCJ1cGRhdGVMaW5lQ29udGVudHMiLCJwYXJzZUxpbmtPckltYWdlIiwib3JpZ2luYWxTdHJpbmciLCJpc0ltYWdlIiwidGV4dE9mZnNldCIsIm9wZW5lciIsInN1YnN0ciIsImN1cnJlbnRPZmZzZXQiLCJicmFja2V0TGV2ZWwiLCJsaW5rVGV4dCIsImxpbmtSZWYiLCJsaW5rRGV0YWlscyIsInRleHRPdXRlciIsImNhcCIsIm5leHRDaGFyIiwidHJpbSIsInBhcmVudGhlc2lzTGV2ZWwiLCJpbmxpbmVPdXRlciIsInZhbGlkIiwibGFiZWwiLCJvdXRwdXQiLCJjaGFyQ291bnQiLCJwcm9jZXNzZWQiLCJzdGFjayIsIm9mZnNldCIsInBvdGVudGlhbExpbmsiLCJwb3RlbnRpYWxJbWFnZSIsImRlbGltQ291bnQiLCJkZWxpbVN0cmluZyIsImN1cnJlbnREZWxpbWl0ZXIiLCJwcmVjZWRpbmciLCJmb2xsb3dpbmciLCJwdW5jdHVhdGlvbkZvbGxvd3MiLCJwdW5jdHVhdGlvblByZWNlZGVzIiwid2hpdGVzcGFjZUZvbGxvd3MiLCJ3aGl0ZXNwYWNlUHJlY2VkZXMiLCJjYW5PcGVuIiwiY2FuQ2xvc2UiLCJzdGFja1BvaW50ZXIiLCJkZWxpbWl0ZXIiLCJlbnRyeSIsInBvcCIsImNvdW50IiwiY29uc3VtZWQiLCJsaW5lRGVsdGEiLCJjaGlsZEVsZW1lbnRDb3VudCIsImZpcnN0Q2hhbmdlZExpbmUiLCJ0ZXh0Q29udGVudCIsImxhc3RDaGFuZ2VkTGluZSIsImxpbmVzVG9EZWxldGUiLCJsaW5lc1RvQWRkIiwic3BsaWNlTGluZXMiLCJsaW5lIiwiY3QiLCJwcm9jZXNzTmV3UGFyYWdyYXBoIiwic2VsIiwiY29udGludWFibGVUeXBlIiwiY2hlY2tMaW5lIiwiY29sIiwicm93IiwicGFyc2VJbnQiLCJnZXRTZWxlY3Rpb24iLCJnZXRBbmNob3IiLCJzdGFydE5vZGUiLCJhbmNob3JOb2RlIiwiZm9jdXNOb2RlIiwibm9kZVR5cGUiLCJOb2RlIiwiVEVYVF9OT0RFIiwiYW5jaG9yT2Zmc2V0IiwiZm9jdXNPZmZzZXQiLCJjb21wdXRlQ29sdW1uIiwibm9kZSIsInByZXZpb3VzU2libGluZyIsImNvbXB1dGVOb2RlQW5kT2Zmc2V0IiwiYmluZFJpZ2h0IiwiY2hpbGRyZW5Db21wbGV0ZSIsInJ2Iiwibm9kZVZhbHVlIiwic2V0U2VsZWN0aW9uIiwicmFuZ2UiLCJjcmVhdGVSYW5nZSIsInNldFN0YXJ0Iiwic2V0RW5kIiwid2luZG93U2VsZWN0aW9uIiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJpbnB1dFR5cGUiLCJjaGlsZE5vZGUiLCJkaXZXcmFwcGVyIiwiZmlyZVNlbGVjdGlvbiIsInN0YXJ0TGluZSIsImxpbmVzVG9JbnNlcnQiLCJhZGp1c3RMaW5lRWxlbWVudHMiLCJpbnNlcnRlZEJsYW5rIiwiaW5zZXJ0ZWREaXJ0eSIsInNwbGljZSIsInRleHQiLCJvcmlnaW5hbEV2ZW50IiwiY2xpcGJvYXJkRGF0YSIsImdldERhdGEiLCJiZWdpbm5pbmciLCJpbnNlcnRlZExpbmVzIiwibGluZUJlZm9yZSIsImxpbmVFbmQiLCJlbmRDb2xQb3MiLCJjb21wdXRlQ29tbW9uQW5jZXN0b3IiLCJub2RlMSIsIm5vZGUyIiwiYW5jZXN0cnkiLCJ1bnNoaWZ0IiwiYW5jZXN0cnkxIiwiYW5jZXN0cnkyIiwiY29tcHV0ZUVuY2xvc2luZ01hcmt1cE5vZGUiLCJpbmNsdWRlcyIsImdldENvbW1hbmRTdGF0ZSIsImNtZCIsIm1hcmt1cE5vZGUiLCJzdGFydENvbCIsImxlbiIsImxlZnQiLCJtaWQiLCJyaWdodCIsImVuZENvbCIsImxlYWRpbmciLCJ0cmFpbGluZyIsImlzQ29sbGFwc2VkIiwiYW5jZXN0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
|
|
3034
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbInNyYy9zdmcvc3ZnLmpzIiwic3JjL1RpbnlNREVDb21tYW5kQmFyLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtYWxsLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWNhbGxhYmxlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vYmplY3QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1uYW1lLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlYWstbWFwLWJhc2ljLWRldGVjdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1zeW1ib2wuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1tZXRob2QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91aWQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1mbGFncy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmZsYWdzLmpzIiwic3JjL2dyYW1tYXIuanMiLCJzcmMvVGlueU1ERS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzdmcgPSB7XG4gIGJsb2NrcXVvdGU6IGA8c3ZnIGhlaWdodD1cIjE4XCIgd2lkdGg9XCIxOFwiPjxyZWN0IHdpZHRoPVwiNVwiIGhlaWdodD1cIjVcIiB4PVwiM1wiIHk9XCI0XCIgcnk9XCIxXCIvPjxyZWN0IHJ5PVwiMVwiIHk9XCI0XCIgeD1cIjEwXCIgaGVpZ2h0PVwiNVwiIHdpZHRoPVwiNVwiLz48cGF0aCBkPVwiTTggNi45OTl2M2MwIDEtMSAzLTEgM3MtLjMzMSAxLTEuMzMxIDFoLTFjLTEgMC0uNjY5LTEtLjY2OS0xczEtMiAxLTN2LTN6bTcgMHYzYzAgMS0xIDMtMSAzcy0uMzMxIDEtMS4zMzEgMWgtMWMtMSAwLS42NjktMS0uNjY5LTFzMS0yIDEtM3YtM3pcIi8+PC9zdmc+YCxcbiAgYm9sZDogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk00IDJhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDZjNCAwIDUtMiA1LTQgMC0xLjMyMi0uNDM0LTIuNjM2LTEuODg1LTMuMzgxQzEzLjc3MiA3Ljg4NSAxNCA2Ljk0NSAxNCA2YzAtMi0xLTQtNS00em0xIDJoNGMxLjY2OCAwIDIuMzIuMzkzIDIuNi42NzIuMjguMjc5LjQuNjYyLjQgMS4zMjhzLS4xMiAxLjA1Ny0uNCAxLjMzOGMtLjI3NS4yNzQtMS4wMTQuNjQ2LTIuNi42NjJINXptNSA2YzEuNjY2LjAwNSAyLjMxOC4zODggMi41OTYuNjY2LjI3Ny4yNzguNDA0LjY2Ny40MDQgMS4zMzRzLS4xMjcgMS4wNi0uNDA0IDEuMzM4Yy0uMjc4LjI3OC0uOTMuNjYtMi41OTYuNjYybC00Ljk5Mi4wMDRMNSAxMHpcIi8+PC9zdmc+YCxcbiAgY2xlYXJfZm9ybWF0dGluZzogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk0xMS4wMyAxYTEgMSAwIDAwLS43NC4zbC05IDlhMSAxIDAgMDAwIDEuNGw0IDRBMSAxIDAgMDA2IDE2aDJhMSAxIDAgMDAuNy0uM2w4LThhMSAxIDAgMDAwLTEuNGwtNS01YTEgMSAwIDAwLS42Ny0uM3pNOC43IDUuN2wzLjU4IDMuNkw3LjYgMTRINi40bC0zLTMgNS4zLTUuM3pcIi8+PHJlY3Qgcnk9XCIuOFwiIHJ4PVwiLjhcIiB5PVwiMTRcIiB4PVwiMTZcIiBoZWlnaHQ9XCIyXCIgd2lkdGg9XCIyXCIvPjxyZWN0IHdpZHRoPVwiMlwiIGhlaWdodD1cIjJcIiB4PVwiMTNcIiB5PVwiMTRcIiByeD1cIi44XCIgcnk9XCIuOFwiLz48cmVjdCByeT1cIi44XCIgcng9XCIuOFwiIHk9XCIxNFwiIHg9XCIxMFwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjJcIi8+PC9zdmc+YCxcbiAgY29kZTogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk0xMy41IDIuOTk0YS41LjUgMCAwMC0uNS41LjUuNSAwIDAwMCAuMDM0VjQuNTNhNS45OTMgNS45OTMgMCAwMC03LjQ1MS0uNDQ1QTYgNiAwIDEwMTIuNDUgMTMuOWE1Ljk5IDUuOTkgMCAwMDEuMzQ2LTEuMzM0LjUuNSAwIDAwLjA5Ni0uMTAxLjUuNSAwIDAwLS4xMi0uNjk4LjUuNSAwIDAwLS42OTcuMTJsLS4wMDQtLjAwNWE1IDUgMCAwMS0xLjE5NyAxLjIgNSA1IDAgMTExLjIxNS02Ljk2NS41LjUgMCAwMC42OTcuMTIuNS41IDAgMDAuMjExLS40NFY0Ljc0NUgxNFYzLjQ5M2EuNS41IDAgMDAtLjUtLjV6XCIvPjwvc3ZnPmAsXG4gIGgxOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48cGF0aCBkPVwiTTMgMnMwLTEgMS0xaDFjMSAwIDEgMSAxIDF2Nmg2VjJzMC0xIDEtMWgxYzEgMCAxIDEgMSAxdjE0czAgMS0xIDFoLTFjLTEgMC0xLTEtMS0xdi02SDZ2NnMwIDEtMSAxSDRjLTEgMC0xLTEtMS0xelwiLz48L3N2Zz5gLFxuICBoMjogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk00IDJzMC0xIDEtMSAxIDEgMSAxdjZjMS0xIDItMSA0LTEgMyAwIDQgMiA0IDR2NXMwIDEtMSAxLTEtMS0xLTF2LTVjMC0xLjA5NC0xLTItMi0yLTIgMC0zIDAtNCAydjVzMCAxLTEgMS0xLTEtMS0xelwiLz48L3N2Zz5gLFxuICBocjogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHJlY3Qgcnk9XCIxXCIgeT1cIjhcIiBoZWlnaHQ9XCIyXCIgd2lkdGg9XCIxOFwiIHN0eWxlPVwiZm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO21hcmtlcjpub25lXCIvPjwvc3ZnPmAsXG4gIGltYWdlOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48cGF0aCBkPVwiTTEgMnYxNGgxNlYySDF6bTIgMmgxMnY3bC0zLTMtNCA0LTItMi0zIDNWNHpcIi8+PGNpcmNsZSByPVwiMS41XCIgY3k9XCI2LjVcIiBjeD1cIjUuNVwiLz48L3N2Zz5gLFxuICBpdGFsaWM6IGA8c3ZnIGhlaWdodD1cIjE4XCIgd2lkdGg9XCIxOFwiPjxwYXRoIGQ9XCJNOSAyYTEgMSAwIDAwMCAyTDcgMTRhMSAxIDAgMTAwIDJoMmExIDEgMCAwMDAtMmwyLTEwYTEgMSAwIDEwMC0yelwiLz48L3N2Zz5gLFxuICBsaW5rOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48cGF0aCBkPVwiTTkuMDcgNS4xOGEzLjkgMy45IDAgMDAtMS41Mi40M0M2LjMxIDYuMjIgNS4zIDcuMjkgNC4zIDguMjljLTEgMS0yLjA3IDIuMDItMi42OCAzLjI2LS4zMS42Mi0uNSAxLjMzLS40MSAyLjA3LjA5Ljc1LjQ4IDEuNDcgMS4xIDIuMDkuNjEuNjEgMS4zMyAxIDIuMDggMS4xLjc0LjA5IDEuNDUtLjEgMi4wNy0uNDIgMS4yNC0uNjEgMi4yNi0xLjY4IDMuMjYtMi42OC40Ni0uNDcuOTQtLjk0IDEuMzktMS40NGwtLjQzLjI2Yy0uNjguMzQtMS40OS41Ni0yLjM2LjQ2LS4yLS4wMy0uNC0uMDgtLjYtLjE0LS43OS43Ni0xLjU1IDEuNDUtMi4xNiAxLjc2LS4zOC4xOS0uNjcuMjQtLjkyLjIxLS4yNi0uMDMtLjU0LS4xNC0uOTItLjUzLS4zOS0uMzgtLjUtLjY2LS41My0uOTEtLjAzLS4yNi4wMi0uNTUuMjEtLjkzLjM5LS43NiAxLjMyLTEuNzQgMi4zMi0yLjc0IDEtMSAxLjk4LTEuOTMgMi43NC0yLjMyLjM4LS4xOS42Ny0uMjQuOTMtLjIxLjI1LjAzLjUzLjE0LjkxLjUzLjM5LjM4LjUuNjYuNTMuOTJ2LjA2bDEuMTItMS4wNi40NC0uNDdjLS4xOC0uMy0uNC0uNi0uNjctLjg3LS42Mi0uNjEtMS4zNC0xLTIuMDktMS4xYTMuMDggMy4wOCAwIDAwLS41NS0uMDF6XCIvPjxwYXRoIGQ9XCJNMTMuMDcuODZhMy45IDMuOSAwIDAwLTEuNTIuNDNjLTEuMjQuNjItMi4yNiAxLjY5LTMuMjYgMi42OS0uNDYuNDctLjk0Ljk0LTEuMzkgMS40My4xNS0uMDguMjgtLjE4LjQzLS4yNWE0LjQgNC40IDAgMDEyLjM2LS40NmMuMi4wMi40LjA3LjYuMTQuNzktLjc3IDEuNTUtMS40NiAyLjE2LTEuNzYuMzgtLjE5LjY3LS4yNS45My0uMjEuMjUuMDMuNTMuMTQuOTEuNTIuMzkuMzguNS42Ni41My45Mi4wMy4yNi0uMDIuNTUtLjIxLjkzLS4zOS43Ni0xLjMyIDEuNzQtMi4zMiAyLjc0LTEgMS0xLjk4IDEuOTMtMi43NCAyLjMxLS4zOC4yLS42Ny4yNS0uOTMuMjItLjI1LS4wNC0uNTMtLjE1LS45MS0uNTMtLjM5LS4zOC0uNS0uNjYtLjUzLS45MlY5Yy0uMzYuMzMtLjczLjY3LTEuMTIgMS4wNmwtLjQzLjQ2Yy4xNy4zLjQuNi42Ni44Ny42Mi42MiAxLjM0IDEgMi4wOCAxLjEuNzUuMSAxLjQ2LS4xIDIuMDgtLjQxIDEuMjQtLjYyIDIuMjYtMS42OSAzLjI2LTIuNjlzMi4wNy0yLjAyIDIuNjgtMy4yNmMuMzEtLjYyLjUtMS4zMi40MS0yLjA3YTMuNjMgMy42MyAwIDAwLTEuMS0yLjA4Yy0uNjEtLjYyLTEuMzMtMS0yLjA3LTEuMWEzLjA4IDMuMDggMCAwMC0uNTYtLjAyelwiLz48L3N2Zz5gLFxuICBvbDogYDxzdmcgaGVpZ2h0PVwiMThcIiB3aWR0aD1cIjE4XCI+PHBhdGggZD1cIk0xLjUgN2EuNS41IDAgMTAwIDFoMWEuNS41IDAgMDEuNS41YzAgLjE2NC0uMDguMzEtLjE0LjM1NWwtMS42NTUgMS4yNUEuNDkyLjQ5MiAwIDAwMSAxMC41YS41LjUgMCAwMC41LjVoMmEuNS41IDAgMDAwLTFIM2wuMzk4LS4yOTlBMS41IDEuNSAwIDAwMi41IDd6XCIvPjxwYXRoIGQ9XCJNMS41IDEyYy0uNjY3IDAtLjY2NyAxIDAgMWgxLjI1Yy4zMzMgMCAuMzMzLjUgMCAuNUgyLjVjLS42NjcgMC0uNjY3IDEgMCAxaC4yNWMuMzMzIDAgLjMzMy41IDAgLjVIMS41Yy0uNjY3IDAtLjY2NyAxIDAgMWgxYy4zOTggMCAuNzgtLjEzMSAxLjA2LS4zNjUuMjgyLS4yMzUuNDQtLjU1NC40NC0uODg1YTEuMTIxIDEuMTIxIDAgMDAtLjMwMy0uNzVjLjE5MS0uMjA0LjMtLjQ3LjMwMy0uNzUgMC0uMzMyLS4xNTgtLjY1MS0uNDQtLjg4NS0uMy0uMjQxLS42NzUtLjM3LTEuMDYtLjM2NXpcIi8+PHJlY3QgeT1cIjEzXCIgeD1cIjZcIiBoZWlnaHQ9XCIyXCIgd2lkdGg9XCIxMlwiIHJ5PVwiMVwiLz48cmVjdCByeT1cIjFcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMlwiIHg9XCI2XCIgeT1cIjhcIi8+PHJlY3QgeT1cIjNcIiB4PVwiNlwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjEyXCIgcnk9XCIxXCIvPjxwYXRoIGQ9XCJNMS41IDJhLjUuNSAwIDEwMCAxSDJ2MmgtLjVhLjUuNSAwIDEwMCAxaDJhLjUuNSAwIDEwMC0xSDNWMi41YzAtLjI3Ny0uMjIzLS41LS41LS41elwiLz48L3N2Zz5gLFxuICBzdHJpa2V0aHJvdWdoOiBgPHN2ZyB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIj48cGF0aCBkPVwiTTEwIDJDNiAyIDQgNCA0IDZjMCAuMzM4LjA4LjY3Mi4xOTMgMWgyLjM0QzYuMTEzIDYuNjI5IDYgNi4yOTUgNiA2YzAtLjMzNC4xMTctLjcyNS42OTEtMS4xNTRDNy4yNjUgNC40MTYgOC4zMzEgNCAxMCA0aDNhMSAxIDAgMDAwLTJ6bTEuNDc3IDljLjQxMy4zNjguNTIzLjcwNi41MjMgMSAwIC4zMzQtLjEyNy43MTItLjcwMSAxLjE0My0uNTc1LjQzLTEuNjMyLjg1LTMuMjk5Ljg1N2wtMS4wMDYuMDA3VjE0SDVhMSAxIDAgMDAwIDJoM2M0IDAgNi0yIDYtNCAwLS4zMzgtLjA4MS0uNjcyLS4xOTUtMXpcIi8+PHJlY3Qgcnk9XCIxXCIgeT1cIjhcIiB4PVwiMVwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjE2XCIvPjwvc3ZnPmAsXG4gIHVsOiBgPHN2ZyBoZWlnaHQ9XCIxOFwiIHdpZHRoPVwiMThcIj48Y2lyY2xlIGN4PVwiMlwiIGN5PVwiOVwiIHI9XCIyXCIvPjxjaXJjbGUgY3k9XCI0XCIgY3g9XCIyXCIgcj1cIjJcIi8+PHJlY3QgeT1cIjNcIiB4PVwiNlwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjEyXCIgcnk9XCIxXCIvPjxjaXJjbGUgY3g9XCIyXCIgY3k9XCIxNFwiIHI9XCIyXCIvPjxyZWN0IHJ5PVwiMVwiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIyXCIgeD1cIjZcIiB5PVwiOFwiLz48cmVjdCB5PVwiMTNcIiB4PVwiNlwiIGhlaWdodD1cIjJcIiB3aWR0aD1cIjEyXCIgcnk9XCIxXCIvPjwvc3ZnPmBcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHN2ZzsiLCJpbXBvcnQgc3ZnIGZyb20gJy4vc3ZnL3N2Zyc7XG5cbmNvbnN0IGlzTWFjTGlrZSA9IC8oTWFjfGlQaG9uZXxpUG9kfGlQYWQpL2kudGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pO1xuXG5jb25zdCBEZWZhdWx0Q29tbWFuZHMgPSB7XG4gICdib2xkJzoge1xuICAgIG5hbWU6ICdib2xkJyxcbiAgICBhY3Rpb246ICdib2xkJyxcbiAgICBpbm5lckhUTUw6IHN2Zy5ib2xkLFxuICAgIHRpdGxlOiAnQm9sZCcsXG4gICAgaG90a2V5OiAnTW9kLUInLFxuICB9LFxuICAnaXRhbGljJzoge1xuICAgIG5hbWU6ICdpdGFsaWMnLFxuICAgIGFjdGlvbjogJ2l0YWxpYycsXG4gICAgaW5uZXJIVE1MOiBzdmcuaXRhbGljLFxuICAgIHRpdGxlOiAnSXRhbGljJyxcbiAgICBob3RrZXk6ICdNb2QtSScsXG4gIH0sXG4gICdzdHJpa2V0aHJvdWdoJzoge1xuICAgIG5hbWU6ICdzdHJpa2V0aHJvdWdoJyxcbiAgICBhY3Rpb246ICdzdHJpa2V0aHJvdWdoJyxcbiAgICBpbm5lckhUTUw6IHN2Zy5zdHJpa2V0aHJvdWdoLFxuICAgIHRpdGxlOiAnU3RyaWtldGhyb3VnaCcsXG4gICAgaG90a2V5OiAnTW9kMi1TaGlmdC01JyxcbiAgfSxcbiAgJ2NvZGUnOiB7XG4gICAgbmFtZTogJ2NvZGUnLFxuICAgIGFjdGlvbjogJ2NvZGUnLFxuICAgIGlubmVySFRNTDogc3ZnLmNvZGUsXG4gICAgdGl0bGU6ICdGb3JtYXQgYXMgY29kZScsXG4gIH0sXG4gICdoMSc6IHtcbiAgICBuYW1lOiAnaDEnLFxuICAgIGFjdGlvbjogJ2gxJyxcbiAgICBpbm5lckhUTUw6IHN2Zy5oMSxcbiAgICB0aXRsZTogJ0xldmVsIDEgaGVhZGluZycsXG4gICAgaG90a2V5OiAnTW9kLVNoaWZ0LTEnLFxuICB9LFxuICAnaDInOiB7XG4gICAgbmFtZTogJ2gyJyxcbiAgICBhY3Rpb246ICdoMicsXG4gICAgaW5uZXJIVE1MOiBzdmcuaDIsXG4gICAgdGl0bGU6ICdMZXZlbCAyIGhlYWRpbmcnLFxuICAgIGhvdGtleTogJ01vZC1TaGlmdC0yJyxcbiAgfSxcbiAgJ3VsJzoge1xuICAgIG5hbWU6ICd1bCcsXG4gICAgYWN0aW9uOiAndWwnLFxuICAgIGlubmVySFRNTDogc3ZnLnVsLFxuICAgIHRpdGxlOiAnQnVsbGV0ZWQgbGlzdCcsXG4gIH0sXG4gICdvbCc6IHtcbiAgICBuYW1lOiAnb2wnLFxuICAgIGFjdGlvbjogJ29sJyxcbiAgICBpbm5lckhUTUw6IHN2Zy5vbCxcbiAgICB0aXRsZTogJ051bWJlcmVkIGxpc3QnLFxuICB9LFxuICAnYmxvY2txdW90ZSc6IHtcbiAgICBuYW1lOiAnYmxvY2txdW90ZScsXG4gICAgYWN0aW9uOiAnYmxvY2txdW90ZScsXG4gICAgaW5uZXJIVE1MOiBzdmcuYmxvY2txdW90ZSxcbiAgICB0aXRsZTogJ1F1b3RlJyxcbiAgICBob3RrZXk6ICdNb2QyLVNoaWZ0LVEnLFxuICB9LFxuICAnaW5zZXJ0TGluayc6IHtcbiAgICBuYW1lOiAnaW5zZXJ0TGluaycsXG4gICAgYWN0aW9uOiAoZWRpdG9yKSA9PiB7aWYgKGVkaXRvci5pc0lubGluZUZvcm1hdHRpbmdBbGxvd2VkKCkpIGVkaXRvci53cmFwU2VsZWN0aW9uKCdbJywgJ10oKScpfSxcbiAgICBlbmFibGVkOiAoZWRpdG9yLCBmb2N1cywgYW5jaG9yKSA9PiBlZGl0b3IuaXNJbmxpbmVGb3JtYXR0aW5nQWxsb3dlZChmb2N1cywgYW5jaG9yKSA/IGZhbHNlIDogbnVsbCxcbiAgICBpbm5lckhUTUw6IHN2Zy5saW5rLFxuICAgIHRpdGxlOiAnSW5zZXJ0IGxpbmsnLFxuICAgIGhvdGtleTogJ01vZC1LJyxcbiAgfSxcbiAgJ2luc2VydEltYWdlJzoge1xuICAgIG5hbWU6ICdpbnNlcnRJbWFnZScsXG4gICAgYWN0aW9uOiAoZWRpdG9yKSA9PiB7aWYgKGVkaXRvci5pc0lubGluZUZvcm1hdHRpbmdBbGxvd2VkKCkpIGVkaXRvci53cmFwU2VsZWN0aW9uKCchWycsICddKCknKX0sXG4gICAgZW5hYmxlZDogKGVkaXRvciwgZm9jdXMsIGFuY2hvcikgPT4gZWRpdG9yLmlzSW5saW5lRm9ybWF0dGluZ0FsbG93ZWQoZm9jdXMsIGFuY2hvcikgPyBmYWxzZSA6IG51bGwsXG4gICAgaW5uZXJIVE1MOiBzdmcuaW1hZ2UsXG4gICAgdGl0bGU6ICdJbnNlcnQgaW1hZ2UnLFxuICAgIGhvdGtleTogJ01vZDItU2hpZnQtSScsXG4gIH0sXG4gICdocic6IHtcbiAgICBuYW1lOiAnaHInLFxuICAgIGFjdGlvbjogKGVkaXRvcikgPT4gZWRpdG9yLnBhc3RlKCdcXG4qKipcXG4nKSxcbiAgICBlbmFibGVkOiAoKSA9PiBmYWxzZSxcbiAgICBpbm5lckhUTUw6IHN2Zy5ocixcbiAgICB0aXRsZTogJ0luc2VydCBob3Jpem9udGFsIGxpbmUnLFxuICAgIGhvdGtleTogJ01vZDItU2hpZnQtTCdcbiAgfVxufVxuXG5cbmNsYXNzIENvbW1hbmRCYXIge1xuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHRoaXMuZSA9IG51bGw7XG4gICAgdGhpcy5lZGl0b3IgPSBudWxsO1xuICAgIHRoaXMuY29tbWFuZHMgPSBbXTtcbiAgICB0aGlzLmJ1dHRvbnMgPSB7fTtcbiAgICB0aGlzLnN0YXRlID0ge307XG4gICAgdGhpcy5ob3RrZXlzID0gW107XG5cbiAgICBsZXQgZWxlbWVudCA9IHByb3BzLmVsZW1lbnQ7XG4gICAgaWYgKGVsZW1lbnQgJiYgIWVsZW1lbnQudGFnTmFtZSkge1xuICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByb3BzLmVsZW1lbnQpO1xuICAgIH1cbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5ib2R5OyBcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVDb21tYW5kQmFyRWxlbWVudChlbGVtZW50LCBwcm9wcy5jb21tYW5kcyB8fCBbJ2JvbGQnLCAnaXRhbGljJywgJ3N0cmlrZXRocm91Z2gnLCAnfCcsICdjb2RlJywgJ3wnLCAnaDEnLCAnaDInLCAnfCcsICd1bCcsICdvbCcsICd8JywgJ2Jsb2NrcXVvdGUnLCAnaHInLCAnfCcsICdpbnNlcnRMaW5rJywgJ2luc2VydEltYWdlJ10pO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZSkgPT4gdGhpcy5oYW5kbGVLZXlkb3duKGUpKTtcbiAgICBpZiAocHJvcHMuZWRpdG9yKSB0aGlzLnNldEVkaXRvcihwcm9wcy5lZGl0b3IpO1xuICB9XG5cbiAgY3JlYXRlQ29tbWFuZEJhckVsZW1lbnQocGFyZW50RWxlbWVudCwgY29tbWFuZHMpIHtcbiAgICB0aGlzLmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0aGlzLmUuY2xhc3NOYW1lID0gJ1RNQ29tbWFuZEJhcic7XG5cbiAgICBmb3IgKGxldCBjb21tYW5kIG9mIGNvbW1hbmRzKSB7XG4gICAgICBpZiAoY29tbWFuZCA9PSAnfCcpIHtcbiAgICAgICAgbGV0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGVsLmNsYXNzTmFtZSA9ICdUTUNvbW1hbmREaXZpZGVyJztcbiAgICAgICAgdGhpcy5lLmFwcGVuZENoaWxkKGVsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBjb21tYW5kTmFtZTtcbiAgICAgICAgaWYgKHR5cGVvZiBjb21tYW5kID09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAvLyBSZWZlcmVuY2UgdG8gZGVmYXVsdCBjb21tYW5kXG5cbiAgICAgICAgICBpZiAoRGVmYXVsdENvbW1hbmRzW2NvbW1hbmRdKSB7XG4gICAgICAgICAgICBjb21tYW5kTmFtZSA9IGNvbW1hbmQ7XG4gICAgICAgICAgICB0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXSA9IERlZmF1bHRDb21tYW5kc1tjb21tYW5kTmFtZV07XG5cbiAgICAgICAgICAgIFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbW1hbmQgPT0gXCJvYmplY3RcIiAmJiBjb21tYW5kLm5hbWUpIHtcbiAgICAgICAgICBjb21tYW5kTmFtZSA9IGNvbW1hbmQubmFtZTtcbiAgICAgICAgICB0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXSA9IHt9OyBcbiAgICAgICAgICBpZiAoRGVmYXVsdENvbW1hbmRzW2NvbW1hbmROYW1lXSkgT2JqZWN0LmFzc2lnbih0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXSwgRGVmYXVsdENvbW1hbmRzW2NvbW1hbmROYW1lXSk7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXSwgY29tbWFuZCk7XG4gICAgICAgIFxuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdGl0bGUgPSB0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXS50aXRsZSB8fCBjb21tYW5kTmFtZTtcblxuICAgICAgICBpZiAodGhpcy5jb21tYW5kc1tjb21tYW5kTmFtZV0uaG90a2V5KSB7XG4gICAgICAgICAgY29uc3Qga2V5cyA9IHRoaXMuY29tbWFuZHNbY29tbWFuZE5hbWVdLmhvdGtleS5zcGxpdCgnLScpO1xuICAgICAgICAgIC8vIGNvbnN0cnVjdCBtb2RpZmllcnNcbiAgICAgICAgICBsZXQgbW9kaWZpZXJzID0gW107XG4gICAgICAgICAgbGV0IG1vZGlmaWVyZXhwbGFuYXRpb24gPSBbXTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGtleXNbaV0pIHtcbiAgICAgICAgICAgICAgY2FzZSAnQ3RybCc6IG1vZGlmaWVycy5wdXNoKCdjdHJsS2V5Jyk7IG1vZGlmaWVyZXhwbGFuYXRpb24ucHVzaCgnQ3RybCcpOyBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnQ21kJzogbW9kaWZpZXJzLnB1c2goJ21ldGFLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCfijJgnKTsgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgJ0FsdCc6IG1vZGlmaWVycy5wdXNoKCdhbHRLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCdBbHQnKTsgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgJ09wdGlvbic6IG1vZGlmaWVycy5wdXNoKCdhbHRLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCfijKUnKTsgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgJ1dpbic6IG1vZGlmaWVycy5wdXNoKCdtZXRhS2V5Jyk7IG1vZGlmaWVyZXhwbGFuYXRpb24ucHVzaCgn4oqeIFdpbicpOyBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlICdTaGlmdCc6ICBtb2RpZmllcnMucHVzaCgnc2hpZnRLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCfih6cnKTsgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAnTW9kJzogLy8gTW9kIGlzIGEgY29udmVuaWVuY2UgbWVjaGFuaXNtOiBDdHJsIG9uIFdpbmRvd3MsIENtZCBvbiBNYWNcbiAgICAgICAgICAgICAgICBpZiAoaXNNYWNMaWtlKSB7bW9kaWZpZXJzLnB1c2goJ21ldGFLZXknKTsgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCfijJgnKTt9IFxuICAgICAgICAgICAgICAgIGVsc2Uge21vZGlmaWVycy5wdXNoKCdjdHJsS2V5Jyk7IG1vZGlmaWVyZXhwbGFuYXRpb24ucHVzaCgnQ3RybCcpO30gXG4gICAgICAgICAgICAgICAgYnJlYWs7IFxuICAgICAgICAgICAgICBjYXNlICdNb2QyJzogXG4gICAgICAgICAgICAgICAgbW9kaWZpZXJzLnB1c2goJ2FsdEtleScpOyBcbiAgICAgICAgICAgICAgICBpZiAoaXNNYWNMaWtlKSBtb2RpZmllcmV4cGxhbmF0aW9uLnB1c2goJ+KMpScpO1xuICAgICAgICAgICAgICAgIGVsc2UgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKCdBbHQnKTtcbiAgICAgICAgICAgICAgICBicmVhazsgLy8gTW9kMiBpcyBhIGNvbnZlbmllbmNlIG1lY2hhbmlzbTogQWx0IG9uIFdpbmRvd3MsIE9wdGlvbiBvbiBNYWNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgbW9kaWZpZXJleHBsYW5hdGlvbi5wdXNoKGtleXNba2V5cy5sZW5ndGggLSAxXSk7XG4gICAgICAgICAgbGV0IGhvdGtleSA9IHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgbW9kaWZpZXJzOiBtb2RpZmllcnMsXG4gICAgICAgICAgICBjb21tYW5kOiBjb21tYW5kTmFtZSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIC8vIFRPRE8gUmlnaHQgbm93IHRoaXMgaXMgd29ya2luZyBvbmx5IGZvciBsZXR0ZXJzIGFuZCBudW1iZXJzXG4gICAgICAgICAgaWYgKGtleXNba2V5cy5sZW5ndGggLSAxXS5tYXRjaCgvXlswLTldJC8pKSB7XG4gICAgICAgICAgICBob3RrZXkuY29kZSA9IGBEaWdpdCR7a2V5c1trZXlzLmxlbmd0aCAtIDFdfWA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhvdGtleS5rZXkgPSBrZXlzW2tleXMubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5ob3RrZXlzLnB1c2goaG90a2V5KTtcbiAgICAgICAgICB0aXRsZSA9IHRpdGxlLmNvbmNhdChgICgke21vZGlmaWVyZXhwbGFuYXRpb24uam9pbignKycpfSlgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYnV0dG9uc1tjb21tYW5kTmFtZV0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGhpcy5idXR0b25zW2NvbW1hbmROYW1lXS5jbGFzc05hbWUgPSAnVE1Db21tYW5kQnV0dG9uIFRNQ29tbWFuZEJ1dHRvbl9EaXNhYmxlZCc7XG4gICAgICAgIHRoaXMuYnV0dG9uc1tjb21tYW5kTmFtZV0udGl0bGUgPSB0aXRsZTtcbiAgICAgICAgdGhpcy5idXR0b25zW2NvbW1hbmROYW1lXS5pbm5lckhUTUwgPSB0aGlzLmNvbW1hbmRzW2NvbW1hbmROYW1lXS5pbm5lckhUTUw7XG5cbiAgICAgICAgdGhpcy5idXR0b25zW2NvbW1hbmROYW1lXS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCAoZSkgPT4gdGhpcy5oYW5kbGVDbGljayhjb21tYW5kTmFtZSwgZSkpO1xuICAgICAgICB0aGlzLmUuYXBwZW5kQ2hpbGQodGhpcy5idXR0b25zW2NvbW1hbmROYW1lXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lKTtcbiAgfVxuXG4gIGhhbmRsZUNsaWNrKGNvbW1hbmROYW1lLCBldmVudCkge1xuICAgIGlmICghdGhpcy5lZGl0b3IpIHJldHVybjtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICh0eXBlb2YgdGhpcy5jb21tYW5kc1tjb21tYW5kTmFtZV0uYWN0aW9uID09IFwic3RyaW5nXCIpIHtcbiAgICAgIGlmICh0aGlzLnN0YXRlW2NvbW1hbmROYW1lXSA9PT0gZmFsc2UpIHRoaXMuZWRpdG9yLnNldENvbW1hbmRTdGF0ZShjb21tYW5kTmFtZSwgdHJ1ZSk7XG4gICAgICBlbHNlIHRoaXMuZWRpdG9yLnNldENvbW1hbmRTdGF0ZShjb21tYW5kTmFtZSwgZmFsc2UpOyAgXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5jb21tYW5kc1tjb21tYW5kTmFtZV0uYWN0aW9uID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgdGhpcy5jb21tYW5kc1tjb21tYW5kTmFtZV0uYWN0aW9uKHRoaXMuZWRpdG9yKTtcbiAgICB9XG4gIH1cblxuICBzZXRFZGl0b3IoZWRpdG9yKSB7XG4gICAgdGhpcy5lZGl0b3IgPSBlZGl0b3I7XG4gICAgZWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3NlbGVjdGlvbicsIChlKSA9PiB0aGlzLmhhbmRsZVNlbGVjdGlvbihlKSk7XG4gIH1cblxuICBoYW5kbGVTZWxlY3Rpb24oZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuY29tbWFuZFN0YXRlKSB7XG4gICAgICBmb3IgKGxldCBjb21tYW5kIGluIHRoaXMuY29tbWFuZHMpIHtcbiAgICAgICAgaWYgKGV2ZW50LmNvbW1hbmRTdGF0ZVtjb21tYW5kXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY29tbWFuZHNbY29tbWFuZF0uZW5hYmxlZCkgdGhpcy5zdGF0ZVtjb21tYW5kXSA9IHRoaXMuY29tbWFuZHNbY29tbWFuZF0uZW5hYmxlZCh0aGlzLmVkaXRvciwgZXZlbnQuZm9jdXMsIGV2ZW50LmFuY2hvcik7XG4gICAgICAgICAgZWxzZSB0aGlzLnN0YXRlW2NvbW1hbmRdID0gZXZlbnQuZm9jdXMgPyBmYWxzZSA6IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zdGF0ZVtjb21tYW5kXSA9IGV2ZW50LmNvbW1hbmRTdGF0ZVtjb21tYW5kXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnN0YXRlW2NvbW1hbmRdID09PSB0cnVlKSB7XG4gICAgICAgICAgdGhpcy5idXR0b25zW2NvbW1hbmRdLmNsYXNzTmFtZSA9ICdUTUNvbW1hbmRCdXR0b24gVE1Db21tYW5kQnV0dG9uX0FjdGl2ZSc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZVtjb21tYW5kXSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICB0aGlzLmJ1dHRvbnNbY29tbWFuZF0uY2xhc3NOYW1lID0gJ1RNQ29tbWFuZEJ1dHRvbiBUTUNvbW1hbmRCdXR0b25fSW5hY3RpdmUnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYnV0dG9uc1tjb21tYW5kXS5jbGFzc05hbWUgPSAgJ1RNQ29tbWFuZEJ1dHRvbiBUTUNvbW1hbmRCdXR0b25fRGlzYWJsZWQnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlS2V5ZG93bihldmVudCkge1xuICAgIG91dGVyOiBmb3IgKGxldCBob3RrZXkgb2YgdGhpcy5ob3RrZXlzKSB7XG4gICAgICBpZiAoKGhvdGtleS5rZXkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT0gaG90a2V5LmtleSkgfHwgKGhvdGtleS5jb2RlICYmIGV2ZW50LmNvZGUgPT0gaG90a2V5LmNvZGUpKSB7XG4gICAgICAgIC8vIEtleSBtYXRjaGVzIGhvdGtleS4gTG9vayBmb3IgYW55IHJlcXVpcmVkIG1vZGlmaWVyIHRoYXQgd2Fzbid0IHByZXNzZWRcbiAgICAgICAgZm9yIChsZXQgbW9kaWZpZXIgb2YgaG90a2V5Lm1vZGlmaWVycykge1xuICAgICAgICAgIGlmICghZXZlbnRbbW9kaWZpZXJdKSBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgfVxuICAgICAgICAvLyBFdmVyeXRoaW5nIG1hdGNoZXMuXG4gICAgICAgIHRoaXMuaGFuZGxlQ2xpY2soaG90a2V5LmNvbW1hbmQsIGV2ZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDb21tYW5kQmFyOyIsIid1c2Ugc3RyaWN0JztcbnZhciBjaGVjayA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgJiYgaXQuTWF0aCA9PT0gTWF0aCAmJiBpdDtcbn07XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5tb2R1bGUuZXhwb3J0cyA9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1nbG9iYWwtdGhpcyAtLSBzYWZlXG4gIGNoZWNrKHR5cGVvZiBnbG9iYWxUaGlzID09ICdvYmplY3QnICYmIGdsb2JhbFRoaXMpIHx8XG4gIGNoZWNrKHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgd2luZG93KSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZikgfHxcbiAgY2hlY2sodHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuYyAtLSBmYWxsYmFja1xuICAoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSkoKSB8fCB0aGlzIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZXhlYygpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIERldGVjdCBJRTgncyBpbmNvbXBsZXRlIGRlZmluZVByb3BlcnR5IGltcGxlbWVudGF0aW9uXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgMSwgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSlbMV0gIT09IDc7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1mdW5jdGlvbi1wcm90b3R5cGUtYmluZCAtLSBzYWZlXG4gIHZhciB0ZXN0ID0gKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSkuYmluZCgpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIC0tIHNhZmVcbiAgcmV0dXJuIHR5cGVvZiB0ZXN0ICE9ICdmdW5jdGlvbicgfHwgdGVzdC5oYXNPd25Qcm9wZXJ0eSgncHJvdG90eXBlJyk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG52YXIgY2FsbCA9IEZ1bmN0aW9uUHJvdG90eXBlLmNhbGw7XG52YXIgdW5jdXJyeVRoaXNXaXRoQmluZCA9IE5BVElWRV9CSU5EICYmIEZ1bmN0aW9uUHJvdG90eXBlLmJpbmQuYmluZChjYWxsLCBjYWxsKTtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfQklORCA/IHVuY3VycnlUaGlzV2l0aEJpbmQgOiBmdW5jdGlvbiAoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gY2FsbC5hcHBseShmbiwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZG9jdW1lbnRBbGwgPSB0eXBlb2YgZG9jdW1lbnQgPT0gJ29iamVjdCcgJiYgZG9jdW1lbnQuYWxsO1xuXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLUlzSFRNTEREQS1pbnRlcm5hbC1zbG90XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby10eXBlb2YtdW5kZWZpbmVkIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG52YXIgSVNfSFRNTEREQSA9IHR5cGVvZiBkb2N1bWVudEFsbCA9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudEFsbCAhPT0gdW5kZWZpbmVkO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYWxsOiBkb2N1bWVudEFsbCxcbiAgSVNfSFRNTEREQTogSVNfSFRNTEREQVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZG9jdW1lbnRBbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtYWxsJyk7XG5cbnZhciBkb2N1bWVudEFsbCA9ICRkb2N1bWVudEFsbC5hbGw7XG5cbi8vIGBJc0NhbGxhYmxlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNjYWxsYWJsZVxubW9kdWxlLmV4cG9ydHMgPSAkZG9jdW1lbnRBbGwuSVNfSFRNTEREQSA/IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09ICdmdW5jdGlvbicgfHwgYXJndW1lbnQgPT09IGRvY3VtZW50QWxsO1xufSA6IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09ICdmdW5jdGlvbic7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gd2UgY2FuJ3QgdXNlIGp1c3QgYGl0ID09IG51bGxgIHNpbmNlIG9mIGBkb2N1bWVudC5hbGxgIHNwZWNpYWwgY2FzZVxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1Jc0hUTUxEREEtaW50ZXJuYWwtc2xvdC1hZWNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA9PT0gbnVsbCB8fCBpdCA9PT0gdW5kZWZpbmVkO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc051bGxPclVuZGVmaW5lZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYFJlcXVpcmVPYmplY3RDb2VyY2libGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZXF1aXJlb2JqZWN0Y29lcmNpYmxlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoaXQpKSB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xuXG4vLyBgVG9PYmplY3RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b29iamVjdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuICRPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudCkpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcblxudmFyIGhhc093blByb3BlcnR5ID0gdW5jdXJyeVRoaXMoe30uaGFzT3duUHJvcGVydHkpO1xuXG4vLyBgSGFzT3duUHJvcGVydHlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1oYXNvd25wcm9wZXJ0eVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1oYXNvd24gLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuaGFzT3duIHx8IGZ1bmN0aW9uIGhhc093bihpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eSh0b09iamVjdChpdCksIGtleSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldERlc2NyaXB0b3IgPSBERVNDUklQVE9SUyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG52YXIgRVhJU1RTID0gaGFzT3duKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpO1xuLy8gYWRkaXRpb25hbCBwcm90ZWN0aW9uIGZyb20gbWluaWZpZWQgLyBtYW5nbGVkIC8gZHJvcHBlZCBmdW5jdGlvbiBuYW1lc1xudmFyIFBST1BFUiA9IEVYSVNUUyAmJiAoZnVuY3Rpb24gc29tZXRoaW5nKCkgeyAvKiBlbXB0eSAqLyB9KS5uYW1lID09PSAnc29tZXRoaW5nJztcbnZhciBDT05GSUdVUkFCTEUgPSBFWElTVFMgJiYgKCFERVNDUklQVE9SUyB8fCAoREVTQ1JJUFRPUlMgJiYgZ2V0RGVzY3JpcHRvcihGdW5jdGlvblByb3RvdHlwZSwgJ25hbWUnKS5jb25maWd1cmFibGUpKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEVYSVNUUzogRVhJU1RTLFxuICBQUk9QRVI6IFBST1BFUixcbiAgQ09ORklHVVJBQkxFOiBDT05GSUdVUkFCTEVcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICB0cnkge1xuICAgIGRlZmluZVByb3BlcnR5KGdsb2JhbCwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBnbG9iYWxba2V5XSA9IHZhbHVlO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGRlZmluZUdsb2JhbFByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHknKTtcblxudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgZGVmaW5lR2xvYmFsUHJvcGVydHkoU0hBUkVELCB7fSk7XG5cbm1vZHVsZS5leHBvcnRzID0gc3RvcmU7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG52YXIgZnVuY3Rpb25Ub1N0cmluZyA9IHVuY3VycnlUaGlzKEZ1bmN0aW9uLnRvU3RyaW5nKTtcblxuLy8gdGhpcyBoZWxwZXIgYnJva2VuIGluIGBjb3JlLWpzQDMuNC4xLTMuNC40YCwgc28gd2UgY2FuJ3QgdXNlIGBzaGFyZWRgIGhlbHBlclxuaWYgKCFpc0NhbGxhYmxlKHN0b3JlLmluc3BlY3RTb3VyY2UpKSB7XG4gIHN0b3JlLmluc3BlY3RTb3VyY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb25Ub1N0cmluZyhpdCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RvcmUuaW5zcGVjdFNvdXJjZTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQ2FsbGFibGUoV2Vha01hcCkgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KFN0cmluZyhXZWFrTWFwKSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyICRkb2N1bWVudEFsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1hbGwnKTtcblxudmFyIGRvY3VtZW50QWxsID0gJGRvY3VtZW50QWxsLmFsbDtcblxubW9kdWxlLmV4cG9ydHMgPSAkZG9jdW1lbnRBbGwuSVNfSFRNTEREQSA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiBpc0NhbGxhYmxlKGl0KSB8fCBpdCA9PT0gZG9jdW1lbnRBbGw7XG59IDogZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IGlzQ2FsbGFibGUoaXQpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciBkb2N1bWVudCA9IGdsb2JhbC5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIEVYSVNUUyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEVYSVNUUyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG5cbi8vIFRoYW5rcyB0byBJRTggZm9yIGl0cyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH1cbiAgfSkuYSAhPT0gNztcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gVjggfiBDaHJvbWUgMzYtXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMzM0XG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgJ3Byb3RvdHlwZScsIHtcbiAgICB2YWx1ZTogNDIsXG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pLnByb3RvdHlwZSAhPT0gNDI7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyICRTdHJpbmcgPSBTdHJpbmc7XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogVHlwZShhcmd1bWVudCkgaXMgT2JqZWN0YFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzT2JqZWN0KGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcigkU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGFuIG9iamVjdCcpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgY2FsbCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9CSU5EID8gY2FsbC5iaW5kKGNhbGwpIDogZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FsbC5hcHBseShjYWxsLCBhcmd1bWVudHMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgYUZ1bmN0aW9uID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBpc0NhbGxhYmxlKGFyZ3VtZW50KSA/IGFyZ3VtZW50IDogdW5kZWZpbmVkO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZXNwYWNlLCBtZXRob2QpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gYUZ1bmN0aW9uKGdsb2JhbFtuYW1lc3BhY2VdKSA6IGdsb2JhbFtuYW1lc3BhY2VdICYmIGdsb2JhbFtuYW1lc3BhY2VdW21ldGhvZF07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVuY3VycnlUaGlzKHt9LmlzUHJvdG90eXBlT2YpO1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgbmF2aWdhdG9yICE9ICd1bmRlZmluZWQnICYmIFN0cmluZyhuYXZpZ2F0b3IudXNlckFnZW50KSB8fCAnJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50Jyk7XG5cbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgRGVubyA9IGdsb2JhbC5EZW5vO1xudmFyIHZlcnNpb25zID0gcHJvY2VzcyAmJiBwcm9jZXNzLnZlcnNpb25zIHx8IERlbm8gJiYgRGVuby52ZXJzaW9uO1xudmFyIHY4ID0gdmVyc2lvbnMgJiYgdmVyc2lvbnMudjg7XG52YXIgbWF0Y2gsIHZlcnNpb247XG5cbmlmICh2OCkge1xuICBtYXRjaCA9IHY4LnNwbGl0KCcuJyk7XG4gIC8vIGluIG9sZCBDaHJvbWUsIHZlcnNpb25zIG9mIFY4IGlzbid0IFY4ID0gQ2hyb21lIC8gMTBcbiAgLy8gYnV0IHRoZWlyIGNvcnJlY3QgdmVyc2lvbnMgYXJlIG5vdCBpbnRlcmVzdGluZyBmb3IgdXNcbiAgdmVyc2lvbiA9IG1hdGNoWzBdID4gMCAmJiBtYXRjaFswXSA8IDQgPyAxIDogKyhtYXRjaFswXSArIG1hdGNoWzFdKTtcbn1cblxuLy8gQnJvd3NlckZTIE5vZGVKUyBgcHJvY2Vzc2AgcG9seWZpbGwgaW5jb3JyZWN0bHkgc2V0IGAudjhgIHRvIGAwLjBgXG4vLyBzbyBjaGVjayBgdXNlckFnZW50YCBldmVuIGlmIGAudjhgIGV4aXN0cywgYnV0IDBcbmlmICghdmVyc2lvbiAmJiB1c2VyQWdlbnQpIHtcbiAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0VkZ2VcXC8oXFxkKykvKTtcbiAgaWYgKCFtYXRjaCB8fCBtYXRjaFsxXSA+PSA3NCkge1xuICAgIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9DaHJvbWVcXC8oXFxkKykvKTtcbiAgICBpZiAobWF0Y2gpIHZlcnNpb24gPSArbWF0Y2hbMV07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2ZXJzaW9uO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbicpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG52YXIgJFN0cmluZyA9IGdsb2JhbC5TdHJpbmc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlzeW1ib2xzIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG5tb2R1bGUuZXhwb3J0cyA9ICEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgc3ltYm9sID0gU3ltYm9sKCdzeW1ib2wgZGV0ZWN0aW9uJyk7XG4gIC8vIENocm9tZSAzOCBTeW1ib2wgaGFzIGluY29ycmVjdCB0b1N0cmluZyBjb252ZXJzaW9uXG4gIC8vIGBnZXQtb3duLXByb3BlcnR5LXN5bWJvbHNgIHBvbHlmaWxsIHN5bWJvbHMgY29udmVydGVkIHRvIG9iamVjdCBhcmUgbm90IFN5bWJvbCBpbnN0YW5jZXNcbiAgLy8gbmI6IERvIG5vdCBjYWxsIGBTdHJpbmdgIGRpcmVjdGx5IHRvIGF2b2lkIHRoaXMgYmVpbmcgb3B0aW1pemVkIG91dCB0byBgc3ltYm9sKycnYCB3aGljaCB3aWxsLFxuICAvLyBvZiBjb3Vyc2UsIGZhaWwuXG4gIHJldHVybiAhJFN0cmluZyhzeW1ib2wpIHx8ICEoT2JqZWN0KHN5bWJvbCkgaW5zdGFuY2VvZiBTeW1ib2wpIHx8XG4gICAgLy8gQ2hyb21lIDM4LTQwIHN5bWJvbHMgYXJlIG5vdCBpbmhlcml0ZWQgZnJvbSBET00gY29sbGVjdGlvbnMgcHJvdG90eXBlcyB0byBpbnN0YW5jZXNcbiAgICAhU3ltYm9sLnNoYW0gJiYgVjhfVkVSU0lPTiAmJiBWOF9WRVJTSU9OIDwgNDE7XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIGVzL25vLXN5bWJvbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZyAqL1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9TWU1CT0xcbiAgJiYgIVN5bWJvbC5zaGFtXG4gICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT0gJ3N5bWJvbCc7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG5cbm1vZHVsZS5leHBvcnRzID0gVVNFX1NZTUJPTF9BU19VSUQgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJztcbn0gOiBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyICRTeW1ib2wgPSBnZXRCdWlsdEluKCdTeW1ib2wnKTtcbiAgcmV0dXJuIGlzQ2FsbGFibGUoJFN5bWJvbCkgJiYgaXNQcm90b3R5cGVPZigkU3ltYm9sLnByb3RvdHlwZSwgJE9iamVjdChpdCkpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkU3RyaW5nID0gU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB0cnkge1xuICAgIHJldHVybiAkU3RyaW5nKGFyZ3VtZW50KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gJ09iamVjdCc7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHRyeVRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmcnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBBc3NlcnQ6IElzQ2FsbGFibGUoYXJndW1lbnQpIGlzIHRydWVgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNDYWxsYWJsZShhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IodHJ5VG9TdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYSBmdW5jdGlvbicpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG5cbi8vIGBHZXRNZXRob2RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXRtZXRob2Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFYsIFApIHtcbiAgdmFyIGZ1bmMgPSBWW1BdO1xuICByZXR1cm4gaXNOdWxsT3JVbmRlZmluZWQoZnVuYykgPyB1bmRlZmluZWQgOiBhQ2FsbGFibGUoZnVuYyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBPcmRpbmFyeVRvUHJpbWl0aXZlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb3JkaW5hcnl0b3ByaW1pdGl2ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIHByZWYpIHtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChwcmVmID09PSAnc3RyaW5nJyAmJiBpc0NhbGxhYmxlKGZuID0gaW5wdXQudG9TdHJpbmcpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAoaXNDYWxsYWJsZShmbiA9IGlucHV0LnZhbHVlT2YpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAocHJlZiAhPT0gJ3N0cmluZycgJiYgaXNDYWxsYWJsZShmbiA9IGlucHV0LnRvU3RyaW5nKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHt9KTtcbn0pKCd2ZXJzaW9ucycsIFtdKS5wdXNoKHtcbiAgdmVyc2lvbjogJzMuMzMuMCcsXG4gIG1vZGU6IElTX1BVUkUgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxNC0yMDIzIERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJyxcbiAgbGljZW5zZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuMzMuMC9MSUNFTlNFJyxcbiAgc291cmNlOiAnaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMnXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxudmFyIGlkID0gMDtcbnZhciBwb3N0Zml4ID0gTWF0aC5yYW5kb20oKTtcbnZhciB0b1N0cmluZyA9IHVuY3VycnlUaGlzKDEuMC50b1N0cmluZyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnICsgKGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXkpICsgJylfJyArIHRvU3RyaW5nKCsraWQgKyBwb3N0Zml4LCAzNik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyIFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgV2VsbEtub3duU3ltYm9sc1N0b3JlID0gc2hhcmVkKCd3a3MnKTtcbnZhciBjcmVhdGVXZWxsS25vd25TeW1ib2wgPSBVU0VfU1lNQk9MX0FTX1VJRCA/IFN5bWJvbFsnZm9yJ10gfHwgU3ltYm9sIDogU3ltYm9sICYmIFN5bWJvbC53aXRob3V0U2V0dGVyIHx8IHVpZDtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICBpZiAoIWhhc093bihXZWxsS25vd25TeW1ib2xzU3RvcmUsIG5hbWUpKSB7XG4gICAgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID0gTkFUSVZFX1NZTUJPTCAmJiBoYXNPd24oU3ltYm9sLCBuYW1lKVxuICAgICAgPyBTeW1ib2xbbmFtZV1cbiAgICAgIDogY3JlYXRlV2VsbEtub3duU3ltYm9sKCdTeW1ib2wuJyArIG5hbWUpO1xuICB9IHJldHVybiBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG52YXIgb3JkaW5hcnlUb1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vcmRpbmFyeS10by1wcmltaXRpdmUnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG52YXIgVE9fUFJJTUlUSVZFID0gd2VsbEtub3duU3ltYm9sKCd0b1ByaW1pdGl2ZScpO1xuXG4vLyBgVG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b3ByaW1pdGl2ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIHByZWYpIHtcbiAgaWYgKCFpc09iamVjdChpbnB1dCkgfHwgaXNTeW1ib2woaW5wdXQpKSByZXR1cm4gaW5wdXQ7XG4gIHZhciBleG90aWNUb1ByaW0gPSBnZXRNZXRob2QoaW5wdXQsIFRPX1BSSU1JVElWRSk7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChleG90aWNUb1ByaW0pIHtcbiAgICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ2RlZmF1bHQnO1xuICAgIHJlc3VsdCA9IGNhbGwoZXhvdGljVG9QcmltLCBpbnB1dCwgcHJlZik7XG4gICAgaWYgKCFpc09iamVjdChyZXN1bHQpIHx8IGlzU3ltYm9sKHJlc3VsdCkpIHJldHVybiByZXN1bHQ7XG4gICAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG4gIH1cbiAgaWYgKHByZWYgPT09IHVuZGVmaW5lZCkgcHJlZiA9ICdudW1iZXInO1xuICByZXR1cm4gb3JkaW5hcnlUb1ByaW1pdGl2ZShpbnB1dCwgcHJlZik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByaW1pdGl2ZScpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xuXG4vLyBgVG9Qcm9wZXJ0eUtleWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJvcGVydHlrZXlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHZhciBrZXkgPSB0b1ByaW1pdGl2ZShhcmd1bWVudCwgJ3N0cmluZycpO1xuICByZXR1cm4gaXNTeW1ib2woa2V5KSA/IGtleSA6IGtleSArICcnO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG52YXIgVjhfUFJPVE9UWVBFX0RFRklORV9CVUcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBFTlVNRVJBQkxFID0gJ2VudW1lcmFibGUnO1xudmFyIENPTkZJR1VSQUJMRSA9ICdjb25maWd1cmFibGUnO1xudmFyIFdSSVRBQkxFID0gJ3dyaXRhYmxlJztcblxuLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0eWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0eVxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyBWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA/IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKHR5cGVvZiBPID09PSAnZnVuY3Rpb24nICYmIFAgPT09ICdwcm90b3R5cGUnICYmICd2YWx1ZScgaW4gQXR0cmlidXRlcyAmJiBXUklUQUJMRSBpbiBBdHRyaWJ1dGVzICYmICFBdHRyaWJ1dGVzW1dSSVRBQkxFXSkge1xuICAgIHZhciBjdXJyZW50ID0gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgICBpZiAoY3VycmVudCAmJiBjdXJyZW50W1dSSVRBQkxFXSkge1xuICAgICAgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gICAgICBBdHRyaWJ1dGVzID0ge1xuICAgICAgICBjb25maWd1cmFibGU6IENPTkZJR1VSQUJMRSBpbiBBdHRyaWJ1dGVzID8gQXR0cmlidXRlc1tDT05GSUdVUkFCTEVdIDogY3VycmVudFtDT05GSUdVUkFCTEVdLFxuICAgICAgICBlbnVtZXJhYmxlOiBFTlVNRVJBQkxFIGluIEF0dHJpYnV0ZXMgPyBBdHRyaWJ1dGVzW0VOVU1FUkFCTEVdIDogY3VycmVudFtFTlVNRVJBQkxFXSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlXG4gICAgICB9O1xuICAgIH1cbiAgfSByZXR1cm4gJGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xufSA6ICRkZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgbmV3ICRUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xuXG52YXIga2V5cyA9IHNoYXJlZCgna2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIGtleXNba2V5XSB8fCAoa2V5c1trZXldID0gdWlkKGtleSkpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfV0VBS19NQVAgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2Vhay1tYXAtYmFzaWMtZGV0ZWN0aW9uJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcblxudmFyIE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEID0gJ09iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkJztcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcbnZhciBzZXQsIGdldCwgaGFzO1xuXG52YXIgZW5mb3JjZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaGFzKGl0KSA/IGdldChpdCkgOiBzZXQoaXQsIHt9KTtcbn07XG5cbnZhciBnZXR0ZXJGb3IgPSBmdW5jdGlvbiAoVFlQRSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGl0KSB7XG4gICAgdmFyIHN0YXRlO1xuICAgIGlmICghaXNPYmplY3QoaXQpIHx8IChzdGF0ZSA9IGdldChpdCkpLnR5cGUgIT09IFRZUEUpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgJyArIFRZUEUgKyAnIHJlcXVpcmVkJyk7XG4gICAgfSByZXR1cm4gc3RhdGU7XG4gIH07XG59O1xuXG5pZiAoTkFUSVZFX1dFQUtfTUFQIHx8IHNoYXJlZC5zdGF0ZSkge1xuICB2YXIgc3RvcmUgPSBzaGFyZWQuc3RhdGUgfHwgKHNoYXJlZC5zdGF0ZSA9IG5ldyBXZWFrTWFwKCkpO1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1zZWxmLWFzc2lnbiAtLSBwcm90b3R5cGUgbWV0aG9kcyBwcm90ZWN0aW9uICovXG4gIHN0b3JlLmdldCA9IHN0b3JlLmdldDtcbiAgc3RvcmUuaGFzID0gc3RvcmUuaGFzO1xuICBzdG9yZS5zZXQgPSBzdG9yZS5zZXQ7XG4gIC8qIGVzbGludC1lbmFibGUgbm8tc2VsZi1hc3NpZ24gLS0gcHJvdG90eXBlIG1ldGhvZHMgcHJvdGVjdGlvbiAqL1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaWYgKHN0b3JlLmhhcyhpdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIHN0b3JlLnNldChpdCwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHN0b3JlLmdldChpdCkgfHwge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBzdG9yZS5oYXMoaXQpO1xuICB9O1xufSBlbHNlIHtcbiAgdmFyIFNUQVRFID0gc2hhcmVkS2V5KCdzdGF0ZScpO1xuICBoaWRkZW5LZXlzW1NUQVRFXSA9IHRydWU7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAoaGFzT3duKGl0LCBTVEFURSkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShpdCwgU1RBVEUsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBoYXNPd24oaXQsIFNUQVRFKSA/IGl0W1NUQVRFXSA6IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaGFzT3duKGl0LCBTVEFURSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgZ2V0OiBnZXQsXG4gIGhhczogaGFzLFxuICBlbmZvcmNlOiBlbmZvcmNlLFxuICBnZXR0ZXJGb3I6IGdldHRlckZvclxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZScpLkNPTkZJR1VSQUJMRTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xuXG52YXIgZW5mb3JjZUludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmVuZm9yY2U7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0O1xudmFyICRTdHJpbmcgPSBTdHJpbmc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcbnZhciByZXBsYWNlID0gdW5jdXJyeVRoaXMoJycucmVwbGFjZSk7XG52YXIgam9pbiA9IHVuY3VycnlUaGlzKFtdLmpvaW4pO1xuXG52YXIgQ09ORklHVVJBQkxFX0xFTkdUSCA9IERFU0NSSVBUT1JTICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sICdsZW5ndGgnLCB7IHZhbHVlOiA4IH0pLmxlbmd0aCAhPT0gODtcbn0pO1xuXG52YXIgVEVNUExBVEUgPSBTdHJpbmcoU3RyaW5nKS5zcGxpdCgnU3RyaW5nJyk7XG5cbnZhciBtYWtlQnVpbHRJbiA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHZhbHVlLCBuYW1lLCBvcHRpb25zKSB7XG4gIGlmIChzdHJpbmdTbGljZSgkU3RyaW5nKG5hbWUpLCAwLCA3KSA9PT0gJ1N5bWJvbCgnKSB7XG4gICAgbmFtZSA9ICdbJyArIHJlcGxhY2UoJFN0cmluZyhuYW1lKSwgL15TeW1ib2xcXCgoW14pXSopXFwpLywgJyQxJykgKyAnXSc7XG4gIH1cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5nZXR0ZXIpIG5hbWUgPSAnZ2V0ICcgKyBuYW1lO1xuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnNldHRlcikgbmFtZSA9ICdzZXQgJyArIG5hbWU7XG4gIGlmICghaGFzT3duKHZhbHVlLCAnbmFtZScpIHx8IChDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSAmJiB2YWx1ZS5uYW1lICE9PSBuYW1lKSkge1xuICAgIGlmIChERVNDUklQVE9SUykgZGVmaW5lUHJvcGVydHkodmFsdWUsICduYW1lJywgeyB2YWx1ZTogbmFtZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICAgIGVsc2UgdmFsdWUubmFtZSA9IG5hbWU7XG4gIH1cbiAgaWYgKENPTkZJR1VSQUJMRV9MRU5HVEggJiYgb3B0aW9ucyAmJiBoYXNPd24ob3B0aW9ucywgJ2FyaXR5JykgJiYgdmFsdWUubGVuZ3RoICE9PSBvcHRpb25zLmFyaXR5KSB7XG4gICAgZGVmaW5lUHJvcGVydHkodmFsdWUsICdsZW5ndGgnLCB7IHZhbHVlOiBvcHRpb25zLmFyaXR5IH0pO1xuICB9XG4gIHRyeSB7XG4gICAgaWYgKG9wdGlvbnMgJiYgaGFzT3duKG9wdGlvbnMsICdjb25zdHJ1Y3RvcicpICYmIG9wdGlvbnMuY29uc3RydWN0b3IpIHtcbiAgICAgIGlmIChERVNDUklQVE9SUykgZGVmaW5lUHJvcGVydHkodmFsdWUsICdwcm90b3R5cGUnLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTtcbiAgICAvLyBpbiBWOCB+IENocm9tZSA1MywgcHJvdG90eXBlcyBvZiBzb21lIG1ldGhvZHMsIGxpa2UgYEFycmF5LnByb3RvdHlwZS52YWx1ZXNgLCBhcmUgbm9uLXdyaXRhYmxlXG4gICAgfSBlbHNlIGlmICh2YWx1ZS5wcm90b3R5cGUpIHZhbHVlLnByb3RvdHlwZSA9IHVuZGVmaW5lZDtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICB2YXIgc3RhdGUgPSBlbmZvcmNlSW50ZXJuYWxTdGF0ZSh2YWx1ZSk7XG4gIGlmICghaGFzT3duKHN0YXRlLCAnc291cmNlJykpIHtcbiAgICBzdGF0ZS5zb3VyY2UgPSBqb2luKFRFTVBMQVRFLCB0eXBlb2YgbmFtZSA9PSAnc3RyaW5nJyA/IG5hbWUgOiAnJyk7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcblxuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXh0ZW5kLW5hdGl2ZSAtLSByZXF1aXJlZFxuRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nID0gbWFrZUJ1aWx0SW4oZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiBpc0NhbGxhYmxlKHRoaXMpICYmIGdldEludGVybmFsU3RhdGUodGhpcykuc291cmNlIHx8IGluc3BlY3RTb3VyY2UodGhpcyk7XG59LCAndG9TdHJpbmcnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBtYWtlQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYWtlLWJ1aWx0LWluJyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIG5hbWUsIGRlc2NyaXB0b3IpIHtcbiAgaWYgKGRlc2NyaXB0b3IuZ2V0KSBtYWtlQnVpbHRJbihkZXNjcmlwdG9yLmdldCwgbmFtZSwgeyBnZXR0ZXI6IHRydWUgfSk7XG4gIGlmIChkZXNjcmlwdG9yLnNldCkgbWFrZUJ1aWx0SW4oZGVzY3JpcHRvci5zZXQsIG5hbWUsIHsgc2V0dGVyOiB0cnVlIH0pO1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHkuZih0YXJnZXQsIG5hbWUsIGRlc2NyaXB0b3IpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxuLy8gYFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3NgIGdldHRlciBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXQtcmVnZXhwLnByb3RvdHlwZS5mbGFnc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0ID0gYW5PYmplY3QodGhpcyk7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgaWYgKHRoYXQuaGFzSW5kaWNlcykgcmVzdWx0ICs9ICdkJztcbiAgaWYgKHRoYXQuZ2xvYmFsKSByZXN1bHQgKz0gJ2cnO1xuICBpZiAodGhhdC5pZ25vcmVDYXNlKSByZXN1bHQgKz0gJ2knO1xuICBpZiAodGhhdC5tdWx0aWxpbmUpIHJlc3VsdCArPSAnbSc7XG4gIGlmICh0aGF0LmRvdEFsbCkgcmVzdWx0ICs9ICdzJztcbiAgaWYgKHRoYXQudW5pY29kZSkgcmVzdWx0ICs9ICd1JztcbiAgaWYgKHRoYXQudW5pY29kZVNldHMpIHJlc3VsdCArPSAndic7XG4gIGlmICh0aGF0LnN0aWNreSkgcmVzdWx0ICs9ICd5JztcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lQnVpbHRJbkFjY2Vzc29yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3NvcicpO1xudmFyIHJlZ0V4cEZsYWdzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1mbGFncycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIGJhYmVsLW1pbmlmeSBhbmQgQ2xvc3VyZSBDb21waWxlciB0cmFuc3BpbGVzIFJlZ0V4cCgnLicsICdkJykgLT4gLy4vZCBhbmQgaXQgY2F1c2VzIFN5bnRheEVycm9yXG52YXIgUmVnRXhwID0gZ2xvYmFsLlJlZ0V4cDtcbnZhciBSZWdFeHBQcm90b3R5cGUgPSBSZWdFeHAucHJvdG90eXBlO1xuXG52YXIgRk9SQ0VEID0gREVTQ1JJUFRPUlMgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgSU5ESUNFU19TVVBQT1JUID0gdHJ1ZTtcbiAgdHJ5IHtcbiAgICBSZWdFeHAoJy4nLCAnZCcpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIElORElDRVNfU1VQUE9SVCA9IGZhbHNlO1xuICB9XG5cbiAgdmFyIE8gPSB7fTtcbiAgLy8gbW9kZXJuIFY4IGJ1Z1xuICB2YXIgY2FsbHMgPSAnJztcbiAgdmFyIGV4cGVjdGVkID0gSU5ESUNFU19TVVBQT1JUID8gJ2RnaW1zeScgOiAnZ2ltc3knO1xuXG4gIHZhciBhZGRHZXR0ZXIgPSBmdW5jdGlvbiAoa2V5LCBjaHIpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywga2V5LCB7IGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgY2FsbHMgKz0gY2hyO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSB9KTtcbiAgfTtcblxuICB2YXIgcGFpcnMgPSB7XG4gICAgZG90QWxsOiAncycsXG4gICAgZ2xvYmFsOiAnZycsXG4gICAgaWdub3JlQ2FzZTogJ2knLFxuICAgIG11bHRpbGluZTogJ20nLFxuICAgIHN0aWNreTogJ3knXG4gIH07XG5cbiAgaWYgKElORElDRVNfU1VQUE9SVCkgcGFpcnMuaGFzSW5kaWNlcyA9ICdkJztcblxuICBmb3IgKHZhciBrZXkgaW4gcGFpcnMpIGFkZEdldHRlcihrZXksIHBhaXJzW2tleV0pO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbiAgdmFyIHJlc3VsdCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwUHJvdG90eXBlLCAnZmxhZ3MnKS5nZXQuY2FsbChPKTtcblxuICByZXR1cm4gcmVzdWx0ICE9PSBleHBlY3RlZCB8fCBjYWxscyAhPT0gZXhwZWN0ZWQ7XG59KTtcblxuLy8gYFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3NgIGdldHRlclxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXQtcmVnZXhwLnByb3RvdHlwZS5mbGFnc1xuaWYgKEZPUkNFRCkgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFJlZ0V4cFByb3RvdHlwZSwgJ2ZsYWdzJywge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGdldDogcmVnRXhwRmxhZ3Ncbn0pO1xuIiwiLy8gY29uc3QgcmVwbGFjZW1lbnRzID0ge1xuLy8gICBBU0NJSVB1bmN0dWF0aW9uOiAnIVwiIyQlJlxcJygpKissXFxcXC0uLzo7PD0+P0BcXFxcW1xcXFxdXl9ge3x9ficsXG4vLyAgIFRyaWdnZXJDaGFyczogJ2BfXFwqXFxbXFxdXFwoXFwpJyxcbi8vICAgU2NoZW1lOiBgW0EtWmEtel1bQS1aYS16MC05XFwrXFwuXFwtXXsxLDMxfWAsXG4vLyAgIEVtYWlsOiBgW2EtekEtWjAtOS4hIyQlJicqKy89P15fXFxge3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcXFxcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqYCwgLy8gRnJvbSBDb21tb25NYXJrIHNwZWNcblxuLy8gfVxuY29uc3QgcmVwbGFjZW1lbnRzID0ge1xuICBBU0NJSVB1bmN0dWF0aW9uOiAvWyFcIiMkJSYnKCkqKyxcXC0uLzo7PD0+P0BbXFxdXl9ge3x9flxcXFxdLywgIFxuICBOb3RUcmlnZ2VyQ2hhcjogL1teYF8qW1xcXSgpPD4hfl0vLFxuICBTY2hlbWU6IC9bQS1aYS16XVtBLVphLXowLTkrLi1dezEsMzF9LyxcbiAgRW1haWw6IC9bYS16QS1aMC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcXC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKi8sIC8vIEZyb20gQ29tbW9uTWFyayBzcGVjXG4gIEhUTUxPcGVuVGFnOiAvPEhUTUxUYWdOYW1lKD86SFRNTEF0dHJpYnV0ZSkqXFxzKlxcLz8+LyxcbiAgSFRNTENsb3NlVGFnOiAvPFxcL0hUTUxUYWdOYW1lXFxzKj4vLFxuICBIVE1MVGFnTmFtZTogL1tBLVphLXpdW0EtWmEtejAtOS1dKi8sIFxuICBIVE1MQ29tbWVudDogLzwhLS0oPzpbXj4tXXwoPzpbXj4tXSg/OlteLV18LVteLV0pKlteLV0pKS0tPi8sXG4gIEhUTUxQSTogLzxcXD8oPzp8LnwoPzpbXj9dfFxcP1tePl0pKilcXD8+LyxcbiAgSFRNTERlY2xhcmF0aW9uOiAvPCFbQS1aXStcXHNbXj5dKj4vLFxuICBIVE1MQ0RBVEE6IC88IVxcW0NEQVRBXFxbLio/XFxdXFxdPi8sXG4gIEhUTUxBdHRyaWJ1dGU6IC9cXHMrW0EtWmEtel86XVtBLVphLXowLTlfLjotXSooPzpIVE1MQXR0VmFsdWUpPy8sXG4gIEhUTUxBdHRWYWx1ZTogL1xccyo9XFxzKig/Oig/OidbXiddKicpfCg/OlwiW15cIl0qXCIpfCg/OlteXFxzXCInPTw+YF0rKSkvLFxuICBLbm93blRhZzogL2FkZHJlc3N8YXJ0aWNsZXxhc2lkZXxiYXNlfGJhc2Vmb250fGJsb2NrcXVvdGV8Ym9keXxjYXB0aW9ufGNlbnRlcnxjb2x8Y29sZ3JvdXB8ZGR8ZGV0YWlsc3xkaWFsb2d8ZGlyfGRpdnxkbHxkdHxmaWVsZHNldHxmaWdjYXB0aW9ufGZpZ3VyZXxmb290ZXJ8Zm9ybXxmcmFtZXxmcmFtZXNldHxoMXxoMnxoM3xoNHxoNXxoNnxoZWFkfGhlYWRlcnxocnxodG1sfGlmcmFtZXxsZWdlbmR8bGl8bGlua3xtYWlufG1lbnV8bWVudWl0ZW18bmF2fG5vZnJhbWVzfG9sfG9wdGdyb3VwfG9wdGlvbnxwfHBhcmFtfHNlY3Rpb258c291cmNlfHN1bW1hcnl8dGFibGV8dGJvZHl8dGR8dGZvb3R8dGh8dGhlYWR8dGl0bGV8dHJ8dHJhY2t8dWwvXG59XG5cbi8vIEZyb20gQ29tbW9uTWFyay5qcy4gXG5jb25zdCBwdW5jdHVhdGlvbkxlYWRpbmcgPSBuZXcgUmVnRXhwKC9eKD86WyFcIiMkJSYnKCkqKyxcXC0uLzo7PD0+P0BbXFxdXFxcXF5fYHt8fX5cXHhBMVxceEE3XFx4QUJcXHhCNlxceEI3XFx4QkJcXHhCRlxcdTAzN0VcXHUwMzg3XFx1MDU1QS1cXHUwNTVGXFx1MDU4OVxcdTA1OEFcXHUwNUJFXFx1MDVDMFxcdTA1QzNcXHUwNUM2XFx1MDVGM1xcdTA1RjRcXHUwNjA5XFx1MDYwQVxcdTA2MENcXHUwNjBEXFx1MDYxQlxcdTA2MUVcXHUwNjFGXFx1MDY2QS1cXHUwNjZEXFx1MDZENFxcdTA3MDAtXFx1MDcwRFxcdTA3RjctXFx1MDdGOVxcdTA4MzAtXFx1MDgzRVxcdTA4NUVcXHUwOTY0XFx1MDk2NVxcdTA5NzBcXHUwQUYwXFx1MERGNFxcdTBFNEZcXHUwRTVBXFx1MEU1QlxcdTBGMDQtXFx1MEYxMlxcdTBGMTRcXHUwRjNBLVxcdTBGM0RcXHUwRjg1XFx1MEZEMC1cXHUwRkQ0XFx1MEZEOVxcdTBGREFcXHUxMDRBLVxcdTEwNEZcXHUxMEZCXFx1MTM2MC1cXHUxMzY4XFx1MTQwMFxcdTE2NkRcXHUxNjZFXFx1MTY5QlxcdTE2OUNcXHUxNkVCLVxcdTE2RURcXHUxNzM1XFx1MTczNlxcdTE3RDQtXFx1MTdENlxcdTE3RDgtXFx1MTdEQVxcdTE4MDAtXFx1MTgwQVxcdTE5NDRcXHUxOTQ1XFx1MUExRVxcdTFBMUZcXHUxQUEwLVxcdTFBQTZcXHUxQUE4LVxcdTFBQURcXHUxQjVBLVxcdTFCNjBcXHUxQkZDLVxcdTFCRkZcXHUxQzNCLVxcdTFDM0ZcXHUxQzdFXFx1MUM3RlxcdTFDQzAtXFx1MUNDN1xcdTFDRDNcXHUyMDEwLVxcdTIwMjdcXHUyMDMwLVxcdTIwNDNcXHUyMDQ1LVxcdTIwNTFcXHUyMDUzLVxcdTIwNUVcXHUyMDdEXFx1MjA3RVxcdTIwOERcXHUyMDhFXFx1MjMwOC1cXHUyMzBCXFx1MjMyOVxcdTIzMkFcXHUyNzY4LVxcdTI3NzVcXHUyN0M1XFx1MjdDNlxcdTI3RTYtXFx1MjdFRlxcdTI5ODMtXFx1Mjk5OFxcdTI5RDgtXFx1MjlEQlxcdTI5RkNcXHUyOUZEXFx1MkNGOS1cXHUyQ0ZDXFx1MkNGRVxcdTJDRkZcXHUyRDcwXFx1MkUwMC1cXHUyRTJFXFx1MkUzMC1cXHUyRTQyXFx1MzAwMS1cXHUzMDAzXFx1MzAwOC1cXHUzMDExXFx1MzAxNC1cXHUzMDFGXFx1MzAzMFxcdTMwM0RcXHUzMEEwXFx1MzBGQlxcdUE0RkVcXHVBNEZGXFx1QTYwRC1cXHVBNjBGXFx1QTY3M1xcdUE2N0VcXHVBNkYyLVxcdUE2RjdcXHVBODc0LVxcdUE4NzdcXHVBOENFXFx1QThDRlxcdUE4RjgtXFx1QThGQVxcdUE4RkNcXHVBOTJFXFx1QTkyRlxcdUE5NUZcXHVBOUMxLVxcdUE5Q0RcXHVBOURFXFx1QTlERlxcdUFBNUMtXFx1QUE1RlxcdUFBREVcXHVBQURGXFx1QUFGMFxcdUFBRjFcXHVBQkVCXFx1RkQzRVxcdUZEM0ZcXHVGRTEwLVxcdUZFMTlcXHVGRTMwLVxcdUZFNTJcXHVGRTU0LVxcdUZFNjFcXHVGRTYzXFx1RkU2OFxcdUZFNkFcXHVGRTZCXFx1RkYwMS1cXHVGRjAzXFx1RkYwNS1cXHVGRjBBXFx1RkYwQy1cXHVGRjBGXFx1RkYxQVxcdUZGMUJcXHVGRjFGXFx1RkYyMFxcdUZGM0ItXFx1RkYzRFxcdUZGM0ZcXHVGRjVCXFx1RkY1RFxcdUZGNUYtXFx1RkY2NV18XFx1RDgwMFtcXHVERDAwLVxcdUREMDJcXHVERjlGXFx1REZEMF18XFx1RDgwMVxcdURENkZ8XFx1RDgwMltcXHVEQzU3XFx1REQxRlxcdUREM0ZcXHVERTUwLVxcdURFNThcXHVERTdGXFx1REVGMC1cXHVERUY2XFx1REYzOS1cXHVERjNGXFx1REY5OS1cXHVERjlDXXxcXHVEODA0W1xcdURDNDctXFx1REM0RFxcdURDQkJcXHVEQ0JDXFx1RENCRS1cXHVEQ0MxXFx1REQ0MC1cXHVERDQzXFx1REQ3NFxcdURENzVcXHVEREM1LVxcdUREQzlcXHVERENEXFx1REREQlxcdUREREQtXFx1RERERlxcdURFMzgtXFx1REUzRFxcdURFQTldfFxcdUQ4MDVbXFx1RENDNlxcdUREQzEtXFx1REREN1xcdURFNDEtXFx1REU0M1xcdURGM0MtXFx1REYzRV18XFx1RDgwOVtcXHVEQzcwLVxcdURDNzRdfFxcdUQ4MUFbXFx1REU2RVxcdURFNkZcXHVERUY1XFx1REYzNy1cXHVERjNCXFx1REY0NF18XFx1RDgyRlxcdURDOUZ8XFx1RDgzNltcXHVERTg3LVxcdURFOEJdKS8pO1xuXG5jb25zdCBwdW5jdHVhdGlvblRyYWlsaW5nID0gbmV3IFJlZ0V4cCgvKD86WyFcIiMkJSYnKCkqKyxcXC0uLzo7PD0+P0BbXFxdXFxcXF5fYHt8fX5cXHhBMVxceEE3XFx4QUJcXHhCNlxceEI3XFx4QkJcXHhCRlxcdTAzN0VcXHUwMzg3XFx1MDU1QS1cXHUwNTVGXFx1MDU4OVxcdTA1OEFcXHUwNUJFXFx1MDVDMFxcdTA1QzNcXHUwNUM2XFx1MDVGM1xcdTA1RjRcXHUwNjA5XFx1MDYwQVxcdTA2MENcXHUwNjBEXFx1MDYxQlxcdTA2MUVcXHUwNjFGXFx1MDY2QS1cXHUwNjZEXFx1MDZENFxcdTA3MDAtXFx1MDcwRFxcdTA3RjctXFx1MDdGOVxcdTA4MzAtXFx1MDgzRVxcdTA4NUVcXHUwOTY0XFx1MDk2NVxcdTA5NzBcXHUwQUYwXFx1MERGNFxcdTBFNEZcXHUwRTVBXFx1MEU1QlxcdTBGMDQtXFx1MEYxMlxcdTBGMTRcXHUwRjNBLVxcdTBGM0RcXHUwRjg1XFx1MEZEMC1cXHUwRkQ0XFx1MEZEOVxcdTBGREFcXHUxMDRBLVxcdTEwNEZcXHUxMEZCXFx1MTM2MC1cXHUxMzY4XFx1MTQwMFxcdTE2NkRcXHUxNjZFXFx1MTY5QlxcdTE2OUNcXHUxNkVCLVxcdTE2RURcXHUxNzM1XFx1MTczNlxcdTE3RDQtXFx1MTdENlxcdTE3RDgtXFx1MTdEQVxcdTE4MDAtXFx1MTgwQVxcdTE5NDRcXHUxOTQ1XFx1MUExRVxcdTFBMUZcXHUxQUEwLVxcdTFBQTZcXHUxQUE4LVxcdTFBQURcXHUxQjVBLVxcdTFCNjBcXHUxQkZDLVxcdTFCRkZcXHUxQzNCLVxcdTFDM0ZcXHUxQzdFXFx1MUM3RlxcdTFDQzAtXFx1MUNDN1xcdTFDRDNcXHUyMDEwLVxcdTIwMjdcXHUyMDMwLVxcdTIwNDNcXHUyMDQ1LVxcdTIwNTFcXHUyMDUzLVxcdTIwNUVcXHUyMDdEXFx1MjA3RVxcdTIwOERcXHUyMDhFXFx1MjMwOC1cXHUyMzBCXFx1MjMyOVxcdTIzMkFcXHUyNzY4LVxcdTI3NzVcXHUyN0M1XFx1MjdDNlxcdTI3RTYtXFx1MjdFRlxcdTI5ODMtXFx1Mjk5OFxcdTI5RDgtXFx1MjlEQlxcdTI5RkNcXHUyOUZEXFx1MkNGOS1cXHUyQ0ZDXFx1MkNGRVxcdTJDRkZcXHUyRDcwXFx1MkUwMC1cXHUyRTJFXFx1MkUzMC1cXHUyRTQyXFx1MzAwMS1cXHUzMDAzXFx1MzAwOC1cXHUzMDExXFx1MzAxNC1cXHUzMDFGXFx1MzAzMFxcdTMwM0RcXHUzMEEwXFx1MzBGQlxcdUE0RkVcXHVBNEZGXFx1QTYwRC1cXHVBNjBGXFx1QTY3M1xcdUE2N0VcXHVBNkYyLVxcdUE2RjdcXHVBODc0LVxcdUE4NzdcXHVBOENFXFx1QThDRlxcdUE4RjgtXFx1QThGQVxcdUE4RkNcXHVBOTJFXFx1QTkyRlxcdUE5NUZcXHVBOUMxLVxcdUE5Q0RcXHVBOURFXFx1QTlERlxcdUFBNUMtXFx1QUE1RlxcdUFBREVcXHVBQURGXFx1QUFGMFxcdUFBRjFcXHVBQkVCXFx1RkQzRVxcdUZEM0ZcXHVGRTEwLVxcdUZFMTlcXHVGRTMwLVxcdUZFNTJcXHVGRTU0LVxcdUZFNjFcXHVGRTYzXFx1RkU2OFxcdUZFNkFcXHVGRTZCXFx1RkYwMS1cXHVGRjAzXFx1RkYwNS1cXHVGRjBBXFx1RkYwQy1cXHVGRjBGXFx1RkYxQVxcdUZGMUJcXHVGRjFGXFx1RkYyMFxcdUZGM0ItXFx1RkYzRFxcdUZGM0ZcXHVGRjVCXFx1RkY1RFxcdUZGNUYtXFx1RkY2NV18XFx1RDgwMFtcXHVERDAwLVxcdUREMDJcXHVERjlGXFx1REZEMF18XFx1RDgwMVxcdURENkZ8XFx1RDgwMltcXHVEQzU3XFx1REQxRlxcdUREM0ZcXHVERTUwLVxcdURFNThcXHVERTdGXFx1REVGMC1cXHVERUY2XFx1REYzOS1cXHVERjNGXFx1REY5OS1cXHVERjlDXXxcXHVEODA0W1xcdURDNDctXFx1REM0RFxcdURDQkJcXHVEQ0JDXFx1RENCRS1cXHVEQ0MxXFx1REQ0MC1cXHVERDQzXFx1REQ3NFxcdURENzVcXHVEREM1LVxcdUREQzlcXHVERENEXFx1REREQlxcdUREREQtXFx1RERERlxcdURFMzgtXFx1REUzRFxcdURFQTldfFxcdUQ4MDVbXFx1RENDNlxcdUREQzEtXFx1REREN1xcdURFNDEtXFx1REU0M1xcdURGM0MtXFx1REYzRV18XFx1RDgwOVtcXHVEQzcwLVxcdURDNzRdfFxcdUQ4MUFbXFx1REU2RVxcdURFNkZcXHVERUY1XFx1REYzNy1cXHVERjNCXFx1REY0NF18XFx1RDgyRlxcdURDOUZ8XFx1RDgzNltcXHVERTg3LVxcdURFOEJdKSQvKTtcblxuLy8gZXhwb3J0IGNvbnN0IGlubGluZVRyaWdnZXJDaGFycyA9IG5ldyBSZWdFeHAoYFske3JlcGxhY2VtZW50cy5UcmlnZ2VyQ2hhcnN9XWApO1xuXG4vKipcbiAqIFRoaXMgaXMgQ29tbW9uTWFyaydzIGJsb2NrIGdyYW1tYXIsIGJ1dCB3ZSdyZSBpZ25vcmluZyBuZXN0ZWQgYmxvY2tzIGhlcmUuICBcbiAqLyBcbmNvbnN0IGxpbmVHcmFtbWFyID0geyBcbiAgVE1IMTogeyBcbiAgICByZWdleHA6IC9eKCB7MCwzfSNcXHMpKC4qPykoKD86XFxzKyMrXFxzKik/KSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUgxXCI+JDE8L3NwYW4+JCQyPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSDFcIj4kMzwvc3Bhbj4nXG4gIH0sXG4gIFRNSDI6IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM30jI1xccykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSDJcIj4kMTwvc3Bhbj4kJDI8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1IMlwiPiQzPC9zcGFuPidcbiAgfSxcbiAgVE1IMzogeyBcbiAgICByZWdleHA6IC9eKCB7MCwzfSMjI1xccykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSDNcIj4kMTwvc3Bhbj4kJDI8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1IM1wiPiQzPC9zcGFuPidcbiAgfSxcbiAgVE1INDogeyBcbiAgICByZWdleHA6IC9eKCB7MCwzfSMjIyNcXHMpKC4qPykoKD86XFxzKyMrXFxzKik/KSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUg0XCI+JDE8L3NwYW4+JCQyPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSDRcIj4kMzwvc3Bhbj4nXG4gIH0sXG4gIFRNSDU6IHsgXG4gICAgcmVnZXhwOiAvXiggezAsM30jIyMjI1xccykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSDVcIj4kMTwvc3Bhbj4kJDI8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1INVwiPiQzPC9zcGFuPidcbiAgfSxcbiAgVE1INjogeyBcbiAgICByZWdleHA6IC9eKCB7MCwzfSMjIyMjI1xccykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNSDZcIj4kMTwvc3Bhbj4kJDI8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1INlwiPiQzPC9zcGFuPidcbiAgfSxcbiAgVE1CbG9ja3F1b3RlOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9PlsgXT8pKC4qKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUJsb2NrcXVvdGVcIj4kMTwvc3Bhbj4kJDInXG4gIH0sXG4gIFRNQ29kZUZlbmNlQmFja3RpY2tPcGVuOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9KD88c2VxPmBgYGAqKVxccyopKFteYF0qPykoXFxzKikkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1Db2RlRmVuY2VCYWNrdGlja1wiPiQxPC9zcGFuPjxzcGFuIGNsYXNzPVwiVE1JbmZvU3RyaW5nXCI+JDM8L3NwYW4+JDQnXG4gIH0sXG4gIFRNQ29kZUZlbmNlVGlsZGVPcGVuOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9KD88c2VxPn5+fn4qKVxccyopKC4qPykoXFxzKikkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1Db2RlRmVuY2VUaWxkZVwiPiQxPC9zcGFuPjxzcGFuIGNsYXNzPVwiVE1JbmZvU3RyaW5nXCI+JDM8L3NwYW4+JDQnXG4gIH0sXG4gIFRNQ29kZUZlbmNlQmFja3RpY2tDbG9zZTogeyBcbiAgICByZWdleHA6IC9eKCB7MCwzfSg/PHNlcT5gYGBgKikpKFxccyopJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNQ29kZUZlbmNlQmFja3RpY2tcIj4kMTwvc3Bhbj4kMydcbiAgfSxcbiAgVE1Db2RlRmVuY2VUaWxkZUNsb3NlOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9KD88c2VxPn5+fn4qKSkoXFxzKikkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1Db2RlRmVuY2VUaWxkZVwiPiQxPC9zcGFuPiQzJ1xuICB9LFxuICBUTUJsYW5rTGluZTogeyBcbiAgICByZWdleHA6IC9eKFsgXFx0XSopJC8sIFxuICAgIHJlcGxhY2VtZW50OiAnJDAnXG4gIH0sXG4gIFRNU2V0ZXh0SDFNYXJrZXI6IHsgXG4gICAgcmVnZXhwOiAvXiB7MCwzfT0rXFxzKiQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTVNldGV4dEgxTWFya2VyXCI+JDA8L3NwYW4+J1xuICB9LFxuICBUTVNldGV4dEgyTWFya2VyOiB7IFxuICAgIHJlZ2V4cDogL14gezAsM30tK1xccyokLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1TZXRleHRIMU1hcmtlclwiPiQwPC9zcGFuPidcbiAgfSxcbiAgVE1IUjogeyBcbiAgICByZWdleHA6IC9eKCB7MCwzfShcXCpbIFxcdF0qXFwqWyBcXHRdKlxcKlsgXFx0Kl0qKXwoLVsgXFx0XSotWyBcXHRdKi1bIFxcdC1dKil8KF9bIFxcdF0qX1sgXFx0XSpfWyBcXHRfXSopKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUhSXCI+JDA8L3NwYW4+J1xuICB9LFxuICBUTVVMOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9WysqLV0gezEsNH0pKC4qKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTVVMXCI+JDE8L3NwYW4+JCQyJ1xuICB9LFxuICBUTU9MOiB7IFxuICAgIHJlZ2V4cDogL14oIHswLDN9XFxkezEsOX1bLildIHsxLDR9KSguKikkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1PTFwiPiQxPC9zcGFuPiQkMidcbiAgfSxcbiAgLy8gVE9ETzogVGhpcyBpcyBjdXJyZW50bHkgcHJldmVudGluZyBzdWJsaXN0cyAoYW5kIGFueSBjb250ZW50IHdpdGhpbiBsaXN0IGl0ZW1zLCByZWFsbHkpIGZyb20gd29ya2luZ1xuICBUTUluZGVudGVkQ29kZTogeyBcbiAgICByZWdleHA6IC9eKCB7NH18XFx0KSguKikkLywgXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1JbmRlbnRlZENvZGVcIj4kMTwvc3Bhbj4kMidcbiAgfSxcbiAgVE1MaW5rUmVmZXJlbmNlRGVmaW5pdGlvbjoge1xuICAgIC8vIFRPRE86IExpbmsgZGVzdGluYXRpb24gY2FuJ3QgaW5jbHVkZSB1bmJhbGFuY2VkIHBhcmFudGhlc2VzLCBidXQgd2UganVzdCBpZ25vcmUgdGhhdCBoZXJlIFxuICAgIHJlZ2V4cDogL14oIHswLDN9XFxbXFxzKikoW15cXHNcXF1dKD86W15cXF1dfFxcXFxcXF0pKj8pKFxccypcXF06XFxzKikoKD86W15cXHM8Pl0rKXwoPzo8KD86W148PlxcXFxdfFxcXFwuKSo+KSk/KFxccyopKCg/OlxcKCg/OlteKClcXFxcXXxcXFxcLikqXFwpKXwoPzpcIig/OlteXCJcXFxcXXxcXFxcLikqXCIpfCg/OicoPzpbXidcXFxcXXxcXFxcLikqJykpPyhcXHMqKSQvLCBcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUxpbmtSZWZlcmVuY2VEZWZpbml0aW9uXCI+JDE8L3NwYW4+PHNwYW4gY2xhc3M9XCJUTUxpbmtMYWJlbCBUTUxpbmtMYWJlbF9EZWZpbml0aW9uXCI+JDI8L3NwYW4+PHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNTGlua1JlZmVyZW5jZURlZmluaXRpb25cIj4kMzwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTGlua0Rlc3RpbmF0aW9uXCI+JDQ8L3NwYW4+JDU8c3BhbiBjbGFzcz1cIlRNTGlua1RpdGxlXCI+JDY8L3NwYW4+JDcnLFxuICAgIGxhYmVsUGxhY2Vob2xkZXI6IDIsIC8vIHRoaXMgZGVmaW5lcyB3aGljaCBwbGFjZWhvbGRlciBpbiB0aGUgYWJvdmUgcmVnZXggaXMgdGhlIGxpbmsgXCJsYWJlbFwiXG4gIH0sXG59O1xuXG4vKipcbiAqIEhUTUwgYmxvY2tzIGhhdmUgbXVsdGlwbGUgZGlmZmVyZW50IGNsYXNzZXMgb2Ygb3BlbmVyIGFuZCBjbG9zZXIuIFRoaXMgYXJyYXkgZGVmaW5lcyBhbGwgdGhlIGNhc2VzXG4gKi9cbnZhciBodG1sQmxvY2tHcmFtbWFyID0gW1xuICB7IHN0YXJ0OiAvXiB7MCwzfTwoPzpzY3JpcHR8cHJlfHN0eWxlKSg/Olxcc3w+fCQpL2ksIGVuZDogLyg/OjxcXC9zY3JpcHQ+fDxcXC9wcmU+fDxcXC9zdHlsZT4pL2ksIHBhcmFJbnRlcnJ1cHQ6IHRydWUgfSxcbiAgeyBzdGFydDogL14gezAsM308IS0tLywgZW5kOiAvLS0+LywgcGFyYUludGVycnVwdDogdHJ1ZSB9LFxuICB7IHN0YXJ0OiAvXiB7MCwzfTxcXD8vLCBlbmQ6IC9cXD8+LywgcGFyYUludGVycnVwdDogdHJ1ZSB9LFxuICB7IHN0YXJ0OiAvXiB7MCwzfTwhW0EtWl0vLCBlbmQ6IC8+LywgcGFyYUludGVycnVwdCA6IHRydWV9LFxuICB7IHN0YXJ0OiAvXiB7MCwzfTwhXFxbQ0RBVEFcXFsvLCBlbmQ6IC9cXF1cXF0+LywgcGFyYUludGVycnVwdCA6IHRydWV9LFxuICB7IHN0YXJ0OiAvXiB7MCwzfSg/Ojx8PFxcLykoPzpLbm93blRhZykoPzpcXHN8PnxcXC8+fCQpL2ksIGVuZDogZmFsc2UsIHBhcmFJbnRlcnJ1cHQ6IHRydWV9LFxuICB7IHN0YXJ0OiAvXiB7MCwzfSg/OkhUTUxPcGVuVGFnfEhUTUxDbG9zZVRhZylcXHMqJC8sIGVuZDogZmFsc2UsIHBhcmFJbnRlcnJ1cHQ6IGZhbHNlfSxcbl07XG5cbi8qKlxuICogU3RydWN0dXJlIG9mIHRoZSBvYmplY3Q6XG4gKiBUb3AgbGV2ZWwgZW50cmllcyBhcmUgcnVsZXMsIGVhY2ggY29uc2lzdGluZyBvZiBhIHJlZ3VsYXIgZXhwcmVzc2lvbnMgKGluIHN0cmluZyBmb3JtYXQpIGFzIHdlbGwgYXMgYSByZXBsYWNlbWVudC5cbiAqIEluIHRoZSByZWd1bGFyIGV4cHJlc3Npb25zLCByZXBsYWNlbWVudHMgZnJvbSB0aGUgb2JqZWN0ICdyZXBsYWNlbWVudHMnIHdpbGwgYmUgcHJvY2Vzc2VkIGJlZm9yZSBjb21waWxpbmcgaW50byB0aGUgcHJvcGVydHkgcmVnZXhwLlxuICovXG52YXIgaW5saW5lR3JhbW1hciA9IHtcbiAgZXNjYXBlIDoge1xuICAgIHJlZ2V4cDogL15cXFxcKEFTQ0lJUHVuY3R1YXRpb24pLyxcbiAgICByZXBsYWNlbWVudCA6ICc8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1Fc2NhcGVcIj5cXFxcPC9zcGFuPiQxJ1xuICB9LFxuICBjb2RlIDoge1xuICAgIHJlZ2V4cDogL14oYCspKCg/OlteYF0pfCg/OlteYF0uKj9bXmBdKSkoXFwxKS8sXG4gICAgcmVwbGFjZW1lbnQgOiAnPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNQ29kZVwiPiQxPC9zcGFuPjxjb2RlIGNsYXNzPVwiVE1Db2RlXCI+JDI8L2NvZGU+PHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrX1RNQ29kZVwiPiQzPC9zcGFuPicgXG4gIH0sXG4gIGF1dG9saW5rIDoge1xuICAgIHJlZ2V4cDogL148KCg/OlNjaGVtZTpbXlxcczw+XSopfCg/OkVtYWlsKSk+LyxcbiAgICByZXBsYWNlbWVudDogJzxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya19UTUF1dG9saW5rXCI+Jmx0Ozwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNQXV0b2xpbmtcIj4kMTwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfVE1BdXRvbGlua1wiPiZndDs8L3NwYW4+J1xuICB9LFxuICBodG1sIDoge1xuICAgIHJlZ2V4cDogL14oKD86SFRNTE9wZW5UYWcpfCg/OkhUTUxDbG9zZVRhZyl8KD86SFRNTENvbW1lbnQpfCg/OkhUTUxQSSl8KD86SFRNTERlY2xhcmF0aW9uKXwoPzpIVE1MQ0RBVEEpKS8sXG4gICAgcmVwbGFjZW1lbnQ6ICc8c3BhbiBjbGFzcz1cIlRNSFRNTFwiPiQxPC9zcGFuPicsXG4gIH0sXG4gIGxpbmtPcGVuIDoge1xuICAgIHJlZ2V4cDogL15cXFsvLFxuICAgIHJlcGxhY2VtZW50OiAnJ1xuICB9LFxuICBpbWFnZU9wZW4gOiB7XG4gICAgcmVnZXhwOiAvXiFcXFsvLFxuICAgIHJlcGxhY2VtZW50IDogJydcbiAgfSxcbiAgbGlua0xhYmVsIDoge1xuICAgIHJlZ2V4cDogL14oXFxbXFxzKikoW15cXF1dKj8pKFxccypcXF0pLyxcbiAgICByZXBsYWNlbWVudDogJycsXG4gICAgbGFiZWxQbGFjZWhvbGRlcjogMlxuICB9LFxuICBkZWZhdWx0IDoge1xuICAgIHJlZ2V4cDogL14oLnwoPzpOb3RUcmlnZ2VyQ2hhcispKS8sXG4gICAgcmVwbGFjZW1lbnQ6ICckMSdcbiAgfVxufTtcblxuLy8gUHJvY2VzcyByZXBsYWNlbWVudHMgaW4gcmVnZXhwc1xuY29uc3QgcmVwbGFjZW1lbnRSZWdleHAgPSBuZXcgUmVnRXhwKE9iamVjdC5rZXlzKHJlcGxhY2VtZW50cykuam9pbignfCcpKTtcblxuLy8gSW5saW5lXG5jb25zdCBpbmxpbmVSdWxlcyA9Wy4uLk9iamVjdC5rZXlzKGlubGluZUdyYW1tYXIpXTtcbmZvciAobGV0IHJ1bGUgb2YgaW5saW5lUnVsZXMpIHtcbiAgbGV0IHJlID0gaW5saW5lR3JhbW1hcltydWxlXS5yZWdleHAuc291cmNlO1xuICAvLyBSZXBsYWNlIHdoaWxlIHRoZXJlIGlzIHNvbWV0aGluZyB0byByZXBsYWNlLiBUaGlzIG1lYW5zIGl0IGFsc28gd29ya3Mgb3ZlciBtdWx0aXBsZSBsZXZlbHMgKHJlcGxhY2VtZW50cyBjb250YWluaW5nIHJlcGxhY2VtZW50cylcbiAgd2hpbGUgKHJlLm1hdGNoKHJlcGxhY2VtZW50UmVnZXhwKSkge1xuICAgIHJlID0gcmUucmVwbGFjZShyZXBsYWNlbWVudFJlZ2V4cCwgKHN0cmluZykgPT4geyByZXR1cm4gcmVwbGFjZW1lbnRzW3N0cmluZ10uc291cmNlOyB9KTtcbiAgfVxuICBpbmxpbmVHcmFtbWFyW3J1bGVdLnJlZ2V4cCA9IG5ldyBSZWdFeHAocmUsIGlubGluZUdyYW1tYXJbcnVsZV0ucmVnZXhwLmZsYWdzKTtcbn1cblxuLy8gSFRNTCBCbG9jayAob25seSBvcGVuaW5nIHJ1bGUgaXMgcHJvY2Vzc2VkIGN1cnJlbnRseSlcbmZvciAobGV0IHJ1bGUgb2YgaHRtbEJsb2NrR3JhbW1hcikge1xuICBsZXQgcmUgPSBydWxlLnN0YXJ0LnNvdXJjZTtcbiAgLy8gUmVwbGFjZSB3aGlsZSB0aGVyZSBpcyBzb21ldGhpbmcgdG8gcmVwbGFjZS4gVGhpcyBtZWFucyBpdCBhbHNvIHdvcmtzIG92ZXIgbXVsdGlwbGUgbGV2ZWxzIChyZXBsYWNlbWVudHMgY29udGFpbmluZyByZXBsYWNlbWVudHMpXG4gIHdoaWxlIChyZS5tYXRjaChyZXBsYWNlbWVudFJlZ2V4cCkpIHtcbiAgICByZSA9IHJlLnJlcGxhY2UocmVwbGFjZW1lbnRSZWdleHAsIChzdHJpbmcpID0+IHsgcmV0dXJuIHJlcGxhY2VtZW50c1tzdHJpbmddLnNvdXJjZTsgfSk7XG4gIH1cbiAgcnVsZS5zdGFydCA9IG5ldyBSZWdFeHAocmUsIHJ1bGUuc3RhcnQuZmxhZ3MpO1xufVxuXG4vKipcbiAqIEVzY2FwZXMgSFRNTCBzcGVjaWFsIGNoYXJhY3RlcnMgKDwsID4sIGFuZCAmKSBpbiB0aGUgc3RyaW5nLlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgcmF3IHN0cmluZyB0byBiZSBlc2NhcGVkXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgc3RyaW5nLCByZWFkeSB0byBiZSB1c2VkIGluIEhUTUxcbiAqL1xuZnVuY3Rpb24gaHRtbGVzY2FwZShzdHJpbmcpIHtcbiAgcmV0dXJuIChzdHJpbmcgPyBzdHJpbmcgOiAnJylcbiAgICAucmVwbGFjZSgvJi9nLCAnJmFtcDsnKVxuICAgIC5yZXBsYWNlKC88L2csICcmbHQ7JylcbiAgICAucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xufVxuLyoqXG4gKiBDb250YWlucyB0aGUgY29tbWFuZHMgdGhhdCBjYW4gYmUgc2VudCB0byB0aGUgZWRpdG9yLiBDb250YWlucyBvYmplY3RzIHdpdGggYSBuYW1lIHJlcHJlc2VudGluZyB0aGUgbmFtZSBvZiB0aGUgY29tbWFuZC5cbiAqIEVhY2ggb2YgdGhlIG9iamVjdHMgY29udGFpbnMgdGhlIGZvbGxvd2luZyBrZXlzOlxuICogXG4gKiAgIC0gdHlwZTogQ2FuIGJlIGVpdGhlciBpbmxpbmUgKGZvciBpbmxpbmUgZm9ybWF0dGluZykgb3IgbGluZSAoZm9yIGJsb2NrIC8gbGluZSBmb3JtYXR0aW5nKS5cbiAqICAgLSBjbGFzc05hbWU6IFVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGNvbW1hbmQgaXMgYWN0aXZlIGF0IGEgZ2l2ZW4gcG9zaXRpb24uIFxuICogICAgIEZvciBsaW5lIGZvcm1hdHRpbmcsIHRoaXMgbG9va3MgYXQgdGhlIGNsYXNzIG9mIHRoZSBsaW5lIGVsZW1lbnQuIEZvciBpbmxpbmUgZWxlbWVudHMsIHRyaWVzIHRvIGZpbmQgYW4gZW5jbG9zaW5nIGVsZW1lbnQgd2l0aCB0aGF0IGNsYXNzLlxuICogICAtIHNldCAvIHVuc2V0OiBDb250YWluIGluc3RydWN0aW9ucyBob3cgdG8gc2V0IGFuZCB1bnNldCB0aGUgY29tbWFuZC4gRm9yIGxpbmUgdHlwZSBjb21tYW5kcywgYm90aCBjb25zaXN0IG9mIGEgcGF0dGVybiBhbmQgcmVwbGFjZW1lbnQgdGhhdCBcbiAqICAgICB3aWxsIGJlIGFwcGxpZWQgdG8gZWFjaCBsaW5lICh1c2luZyBTdHJpbmcucmVwbGFjZSkuIEZvciBpbmxpbmUgdHlwZSBjb21tYW5kcywgdGhlIHNldCBvYmplY3QgY29udGFpbnMgYSBwcmUgYW5kIHBvc3Qgc3RyaW5nIHdoaWNoIHdpbGxcbiAqICAgICBiZSBpbnNlcnRlZCBiZWZvcmUgYW5kIGFmdGVyIHRoZSBzZWxlY3Rpb24uIFRoZSB1bnNldCBvYmplY3QgY29udGFpbnMgYSBwcmVQYXR0ZXJuIGFuZCBhIHBvc3RQYXR0ZXJuLiBCb3RoIHNob3VsZCBiZSByZWd1bGFyIGV4cHJlc3Npb25zIGFuZCBcbiAqICAgICB0aGV5IHdpbGwgYmUgYXBwbGllZCB0byB0aGUgcG9ydGlvbiBvZiB0aGUgbGluZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBzZWxlY3Rpb24gKHVzaW5nIFN0cmluZy5yZXBsYWNlLCB3aXRoIGFuIGVtcHR5IHJlcGxhY2VtZW50IHN0cmluZykuXG4gKi9cbmNvbnN0IGNvbW1hbmRzID0ge1xuICAvLyBSZXBsYWNlbWVudHMgZm9yIHVuc2V0IGZvciBpbmxpbmUgY29tbWFuZHMgYXJlICcnIGJ5IGRlZmF1bHRcbiAgYm9sZDoge1xuICAgIHR5cGU6ICdpbmxpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTVN0cm9uZycsIFxuICAgIHNldDoge3ByZTogJyoqJywgcG9zdDogJyoqJ30sIFxuICAgIHVuc2V0OiB7cHJlUGF0dGVybjogLyg/OlxcKlxcKnxfXykkLywgcG9zdFBhdHRlcm46IC9eKD86XFwqXFwqfF9fKS99XG4gIH0sIFxuICBpdGFsaWM6IHtcbiAgICB0eXBlOiAnaW5saW5lJywgXG4gICAgY2xhc3NOYW1lOiAnVE1FbScsIFxuICAgIHNldDoge3ByZTogJyonLCBwb3N0OiAnKid9LCBcbiAgICB1bnNldDoge3ByZVBhdHRlcm46IC8oPzpcXCp8XykkLywgcG9zdFBhdHRlcm46IC9eKD86XFwqfF8pL31cbiAgfSxcbiAgY29kZToge1xuICAgIHR5cGU6ICdpbmxpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUNvZGUnLCBcbiAgICBzZXQ6IHtwcmU6ICdgJywgcG9zdDogJ2AnfSwgXG4gICAgdW5zZXQ6IHtwcmVQYXR0ZXJuOiAvYCskLywgcG9zdFBhdHRlcm46IC9eYCsvfSAvLyBGSVhNRSB0aGlzIGRvZXNuJ3QgZW5zdXJlIGJhbGFuY2VkIGJhY2t0aWNrcyByaWdodCBub3dcbiAgfSwgXG4gIHN0cmlrZXRocm91Z2g6IHtcbiAgICB0eXBlOiAnaW5saW5lJywgXG4gICAgY2xhc3NOYW1lOiAnVE1TdHJpa2V0aHJvdWdoJywgXG4gICAgc2V0OiB7cHJlOiAnfn4nLCBwb3N0OiAnfn4nfSwgXG4gICAgdW5zZXQ6IHtwcmVQYXR0ZXJuOi9+fiQvLCBwb3N0UGF0dGVybjogL15+fi8gfVxuICB9LFxuICBoMToge1xuICAgIHR5cGU6ICdsaW5lJywgXG4gICAgY2xhc3NOYW1lOiAnVE1IMScsIFxuICAgIHNldDoge3BhdHRlcm46IC9eKCB7MCwzfSg/Oig/OiMrfFswLTldezEsOX1bKS5dfFs+XFwtKitdKVxccyspPykoLiopJC8sIHJlcGxhY2VtZW50OiAnIyAkMid9LCBcbiAgICB1bnNldDoge3BhdHRlcm46IC9eKCB7MCwzfSNcXHMrKSguKj8pKCg/OlxccysjK1xccyopPykkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIGgyOiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUgyJywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICcjIyAkMid9LCBcbiAgICB1bnNldDoge3BhdHRlcm46IC9eKCB7MCwzfSMjXFxzKykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIHJlcGxhY2VtZW50OiAnJDInfVxuICB9LFxuICBoMzoge1xuICAgIHR5cGU6ICdsaW5lJywgXG4gICAgY2xhc3NOYW1lOiAnVE1IMycsIFxuICAgIHNldDoge3BhdHRlcm46IC9eKCB7MCwzfSg/Oig/OiMrfFswLTldezEsOX1bKS5dfFs+XFwtKitdKVxccyspPykoLiopJC8sIHJlcGxhY2VtZW50OiAnIyMjICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9IyMjXFxzKykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIHJlcGxhY2VtZW50OiAnJDInfVxuICB9LFxuICBoNDoge1xuICAgIHR5cGU6ICdsaW5lJywgXG4gICAgY2xhc3NOYW1lOiAnVE1INCcsIFxuICAgIHNldDoge3BhdHRlcm46IC9eKCB7MCwzfSg/Oig/OiMrfFswLTldezEsOX1bKS5dfFs+XFwtKitdKVxccyspPykoLiopJC8sIHJlcGxhY2VtZW50OiAnIyMjIyAkMid9LCBcbiAgICB1bnNldDoge3BhdHRlcm46IC9eKCB7MCwzfSMjIyNcXHMrKSguKj8pKCg/OlxccysjK1xccyopPykkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIGg1OiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTUg1JywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICcjIyMjIyAkMid9LCBcbiAgICB1bnNldDoge3BhdHRlcm46IC9eKCB7MCwzfSMjIyMjXFxzKykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIHJlcGxhY2VtZW50OiAnJDInfVxuICB9LFxuICBoNjoge1xuICAgIHR5cGU6ICdsaW5lJywgXG4gICAgY2xhc3NOYW1lOiAnVE1INicsIFxuICAgIHNldDoge3BhdHRlcm46IC9eKCB7MCwzfSg/Oig/OiMrfFswLTldezEsOX1bKS5dfFs+XFwtKitdKVxccyspPykoLiopJC8sIHJlcGxhY2VtZW50OiAnIyMjIyMjICQyJ30sIFxuICAgIHVuc2V0OiB7cGF0dGVybjogL14oIHswLDN9IyMjIyMjXFxzKykoLio/KSgoPzpcXHMrIytcXHMqKT8pJC8sIHJlcGxhY2VtZW50OiAnJDInfVxuICB9LFxuICB1bDoge1xuICAgIHR5cGU6ICdsaW5lJywgXG4gICAgY2xhc3NOYW1lOiAnVE1VTCcsIFxuICAgIHNldDoge3BhdHRlcm46IC9eKCB7MCwzfSg/Oig/OiMrfFswLTldezEsOX1bKS5dfFs+XFwtKitdKVxccyspPykoLiopJC8sIHJlcGxhY2VtZW50OiAnLSAkMid9LCBcbiAgICB1bnNldDoge3BhdHRlcm46IC9eKCB7MCwzfVsrKi1dIHsxLDR9KSguKikkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG4gIG9sOiB7XG4gICAgdHlwZTogJ2xpbmUnLCBcbiAgICBjbGFzc05hbWU6ICdUTU9MJywgXG4gICAgc2V0OiB7cGF0dGVybjogL14oIHswLDN9KD86KD86Iyt8WzAtOV17MSw5fVspLl18Wz5cXC0qK10pXFxzKyk/KSguKikkLywgcmVwbGFjZW1lbnQ6ICckIy4gJDInfSwgXG4gICAgdW5zZXQ6IHtwYXR0ZXJuOiAvXiggezAsM31cXGR7MSw5fVsuKV0gezEsNH0pKC4qKSQvLCByZXBsYWNlbWVudDogJyQyJ31cbiAgfSwgXG4gIGJsb2NrcXVvdGU6IHtcbiAgICB0eXBlOiAnbGluZScsIFxuICAgIGNsYXNzTmFtZTogJ1RNQmxvY2txdW90ZScsIFxuICAgIHNldDoge3BhdHRlcm46IC9eKCB7MCwzfSg/Oig/OiMrfFswLTldezEsOX1bKS5dfFs+XFwtKitdKVxccyspPykoLiopJC8sIHJlcGxhY2VtZW50OiAnPiAkMid9LCBcbiAgICB1bnNldDoge3BhdHRlcm46IC9eKCB7MCwzfT5bIF0/KSguKikkLywgcmVwbGFjZW1lbnQ6ICckMid9XG4gIH0sXG59O1xuXG5leHBvcnQgeyBsaW5lR3JhbW1hciwgaW5saW5lR3JhbW1hciwgcHVuY3R1YXRpb25MZWFkaW5nLCBwdW5jdHVhdGlvblRyYWlsaW5nLCBodG1sZXNjYXBlLCBodG1sQmxvY2tHcmFtbWFyLCBjb21tYW5kcyB9OyIsImltcG9ydCB7IGlubGluZUdyYW1tYXIsIGxpbmVHcmFtbWFyLCBwdW5jdHVhdGlvbkxlYWRpbmcsIHB1bmN0dWF0aW9uVHJhaWxpbmcsIGh0bWxlc2NhcGUsIGh0bWxCbG9ja0dyYW1tYXIsIGNvbW1hbmRzIH0gZnJvbSBcIi4vZ3JhbW1hclwiO1xuXG5jbGFzcyBFZGl0b3Ige1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzID0ge30pIHsgICAgXG4gICAgdGhpcy5lID0gbnVsbDtcbiAgICB0aGlzLnRleHRhcmVhID0gbnVsbDtcbiAgICB0aGlzLmxpbmVzID0gW107XG4gICAgdGhpcy5saW5lRWxlbWVudHMgPSBbXTtcbiAgICB0aGlzLmxpbmVUeXBlcyA9IFtdO1xuICAgIHRoaXMubGluZUNhcHR1cmVzID0gW107XG4gICAgdGhpcy5saW5lUmVwbGFjZW1lbnRzID0gW107XG4gICAgdGhpcy5saW5rTGFiZWxzID0gW107XG4gICAgdGhpcy5saW5lRGlydHkgPSBbXTtcbiAgICB0aGlzLmxhc3RDb21tYW5kU3RhdGUgPSBudWxsO1xuXG4gICAgdGhpcy5saXN0ZW5lcnMgPSB7XG4gICAgICBjaGFuZ2U6IFtdLFxuICAgICAgc2VsZWN0aW9uOiBbXSxcbiAgICB9O1xuXG4gICAgbGV0IGVsZW1lbnQgPSBwcm9wcy5lbGVtZW50O1xuICAgIHRoaXMudGV4dGFyZWEgPSBwcm9wcy50ZXh0YXJlYTtcblxuICAgIGlmICh0aGlzLnRleHRhcmVhICYmICF0aGlzLnRleHRhcmVhLnRhZ05hbWUpIHtcbiAgICAgIHRoaXMudGV4dGFyZWEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLnRleHRhcmVhKTtcbiAgICAgIGlmICghZWxlbWVudCkgZWxlbWVudCA9IHRoaXMudGV4dGFyZWE7XG4gICAgfVxuXG4gICAgaWYgKGVsZW1lbnQgJiYgIWVsZW1lbnQudGFnTmFtZSkge1xuICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHByb3BzLmVsZW1lbnQpO1xuICAgIH1cbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdOyBcbiAgICB9XG4gICAgaWYgKGVsZW1lbnQudGFnTmFtZSA9PSAnVEVYVEFSRUEnKSB7XG4gICAgICB0aGlzLnRleHRhcmVhID0gZWxlbWVudDtcbiAgICAgIGVsZW1lbnQgPSB0aGlzLnRleHRhcmVhLnBhcmVudE5vZGU7IFxuICAgIH1cblxuICAgIGlmICh0aGlzLnRleHRhcmVhKSB7XG4gICAgICB0aGlzLnRleHRhcmVhLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgfVxuXG4gICAgdGhpcy5jcmVhdGVFZGl0b3JFbGVtZW50KGVsZW1lbnQpO1xuICAgIC8vIFRPRE8gUGxhY2Vob2xkZXIgZm9yIGVtcHR5IGNvbnRlbnRcbiAgICB0aGlzLnNldENvbnRlbnQocHJvcHMuY29udGVudCB8fCAodGhpcy50ZXh0YXJlYSA/IHRoaXMudGV4dGFyZWEudmFsdWUgOiBmYWxzZSkgfHwgJyMgSGVsbG8gVGlueU1ERSFcXG5FZGl0ICoqaGVyZSoqJyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgZWRpdG9yIGVsZW1lbnQgaW5zaWRlIHRoZSB0YXJnZXQgZWxlbWVudCBvZiB0aGUgRE9NIHRyZWVcbiAgICogQHBhcmFtIGVsZW1lbnQgVGhlIHRhcmdldCBlbGVtZW50IG9mIHRoZSBET00gdHJlZVxuICAgKi9cbiAgY3JlYXRlRWRpdG9yRWxlbWVudChlbGVtZW50KSB7XG4gICAgdGhpcy5lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5lLmNsYXNzTmFtZSA9ICdUaW55TURFJztcbiAgICB0aGlzLmUuY29udGVudEVkaXRhYmxlID0gdHJ1ZTtcbiAgICAvLyBUaGUgZm9sbG93aW5nIGlzIGltcG9ydGFudCBmb3IgZm9ybWF0dGluZyBwdXJwb3NlcywgYnV0IGFsc28gc2luY2Ugb3RoZXJ3aXNlIHRoZSBicm93c2VyIHJlcGxhY2VzIHN1YnNlcXVlbnQgc3BhY2VzIHdpdGggICZuYnNwOyAmbmJzcDtcbiAgICAvLyBUaGF0IGJyZWFrcyBhIGxvdCBvZiBzdHVmZiwgc28gd2UgZG8gdGhpcyBoZXJlIGFuZCBub3QgaW4gQ1NT4oCUdGhlcmVmb3JlLCB5b3UgZG9uJ3QgaGF2ZSB0byByZW1lbWJlciB0byBidXQgdGhpcyBpbiB0aGUgQ1NTIGZpbGVcbiAgICB0aGlzLmUuc3R5bGUud2hpdGVTcGFjZSA9ICdwcmUtd3JhcCc7IFxuICAgIC8vIEF2b2lkIGZvcm1hdHRpbmcgKEIgLyBJIC8gVSkgcG9wcGluZyB1cCBvbiBpT1NcbiAgICB0aGlzLmUuc3R5bGUud2Via2l0VXNlck1vZGlmeSA9ICdyZWFkLXdyaXRlLXBsYWludGV4dC1vbmx5JztcbiAgICBpZiAodGhpcy50ZXh0YXJlYSAmJiB0aGlzLnRleHRhcmVhLnBhcmVudE5vZGUgPT0gZWxlbWVudCAmJiB0aGlzLnRleHRhcmVhLm5leHRTaWJsaW5nKSB7XG4gICAgICBlbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLmUsIHRoaXMudGV4dGFyZWEubmV4dFNpYmxpbmcpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lKTtcbiAgICB9XG5cbiAgICB0aGlzLmUuYWRkRXZlbnRMaXN0ZW5lcihcImlucHV0XCIsIChlKSA9PiB0aGlzLmhhbmRsZUlucHV0RXZlbnQoZSkpO1xuICAgIC8vIHRoaXMuZS5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCAoZSkgPT4gdGhpcy5oYW5kbGVLZXlkb3duRXZlbnQoZSkpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJzZWxlY3Rpb25jaGFuZ2VcIiwgKGUpID0+IHRoaXMuaGFuZGxlU2VsZWN0aW9uQ2hhbmdlRXZlbnQoZSkpO1xuICAgIHRoaXMuZS5hZGRFdmVudExpc3RlbmVyKFwicGFzdGVcIiwgKGUpID0+IHRoaXMuaGFuZGxlUGFzdGUoZSkpO1xuICAgIC8vIHRoaXMuZS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGUpID0+IHRoaXMuaGFuZGxlS2V5RG93bihlKSk7XG4gICAgdGhpcy5saW5lRWxlbWVudHMgPSB0aGlzLmUuY2hpbGROb2RlczsgLy8gdGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgdXBkYXRlXG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZWRpdG9yIGNvbnRlbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IFRoZSBuZXcgTWFya2Rvd24gY29udGVudFxuICAgKi9cbiAgc2V0Q29udGVudChjb250ZW50KSB7XG4gICAgLy8gRGVsZXRlIGFueSBleGlzdGluZyBjb250ZW50XG4gICAgd2hpbGUgKHRoaXMuZS5maXJzdENoaWxkKSB7XG4gICAgICB0aGlzLmUucmVtb3ZlQ2hpbGQodGhpcy5lLmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgICB0aGlzLmxpbmVzID0gY29udGVudC5zcGxpdCgvKD86XFxyXFxufFxccnxcXG4pLyk7XG4gICAgdGhpcy5saW5lRGlydHkgPSBbXTtcbiAgICBmb3IgKGxldCBsaW5lTnVtID0gMDsgbGluZU51bSA8IHRoaXMubGluZXMubGVuZ3RoOyBsaW5lTnVtKyspIHtcbiAgICAgIGxldCBsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgdGhpcy5lLmFwcGVuZENoaWxkKGxlKTtcbiAgICAgIHRoaXMubGluZURpcnR5LnB1c2godHJ1ZSk7XG4gICAgfVxuICAgIHRoaXMubGluZVR5cGVzID0gbmV3IEFycmF5KHRoaXMubGluZXMubGVuZ3RoKTtcbiAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgICB0aGlzLmZpcmVDaGFuZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBlZGl0b3IgY29udGVudCBhcyBhIE1hcmtkb3duIHN0cmluZy5cbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGVkaXRvciBjb250ZW50IGFzIGEgbWFya2Rvd24gc3RyaW5nXG4gICAqL1xuICBnZXRDb250ZW50KCkge1xuICAgIHJldHVybiB0aGlzLmxpbmVzLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIG1haW4gbWV0aG9kIHRvIHVwZGF0ZSB0aGUgZm9ybWF0dGluZyAoZnJvbSB0aGlzLmxpbmVzIHRvIEhUTUwgb3V0cHV0KVxuICAgKi9cbiAgdXBkYXRlRm9ybWF0dGluZygpIHtcbiAgICAvLyBGaXJzdCwgcGFyc2UgbGluZSB0eXBlcy4gVGhpcyB3aWxsIHVwZGF0ZSB0aGlzLmxpbmVUeXBlcywgdGhpcy5saW5lUmVwbGFjZW1lbnRzLCBhbmQgdGhpcy5saW5lQ2FwdHVyZXNcbiAgICAvLyBXZSBkb24ndCBhcHBseSB0aGUgZm9ybWF0dGluZyB5ZXRcbiAgICB0aGlzLnVwZGF0ZUxpbmVUeXBlcygpO1xuICAgIC8vIENvbGxlY3QgYW55IHZhbGlkIGxpbmsgbGFiZWxzIGZyb20gbGluayByZWZlcmVuY2UgZGVmaW5pdGlvbnPigJR3ZSBuZWVkIHRoYXQgZm9yIGZvcm1hdHRpbmcgdG8gZGV0ZXJtaW5lIHdoYXQncyBhIHZhbGlkIGxpbmtcbiAgICB0aGlzLnVwZGF0ZUxpbmtMYWJlbHMoKTtcbiAgICAvLyBOb3csIGFwcGx5IHRoZSBmb3JtYXR0aW5nXG4gICAgdGhpcy5hcHBseUxpbmVUeXBlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhpcy5saW5rTGFiZWxzOiBGb3IgZXZlcnkgbGluayByZWZlcmVuY2UgZGVmaW5pdGlvbiAobGluZSB0eXBlIFRNTGlua1JlZmVyZW5jZURlZmluaXRpb24pLCB3ZSBjb2xsZWN0IHRoZSBsYWJlbFxuICAgKi9cbiAgdXBkYXRlTGlua0xhYmVscygpIHtcbiAgICB0aGlzLmxpbmtMYWJlbHMgPSBbXTtcbiAgICBmb3IgKGxldCBsID0gMDsgbCA8IHRoaXMubGluZXMubGVuZ3RoOyBsKyspIHtcbiAgICAgIGlmICh0aGlzLmxpbmVUeXBlc1tsXSA9PSAnVE1MaW5rUmVmZXJlbmNlRGVmaW5pdGlvbicpIHtcbiAgICAgICAgdGhpcy5saW5rTGFiZWxzLnB1c2godGhpcy5saW5lQ2FwdHVyZXNbbF1bbGluZUdyYW1tYXIuVE1MaW5rUmVmZXJlbmNlRGVmaW5pdGlvbi5sYWJlbFBsYWNlaG9sZGVyXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBmdW5jdGlvbiB0byByZXBsYWNlIHBsYWNlaG9sZGVycyBmcm9tIGEgUmVnRXhwIGNhcHR1cmUuIFRoZSByZXBsYWNlbWVudCBzdHJpbmcgY2FuIGNvbnRhaW4gcmVndWxhciBkb2xsYXIgcGxhY2Vob2xkZXJzIChlLmcuLCAkMSksXG4gICAqIHdoaWNoIGFyZSBpbnRlcnByZXRlZCBsaWtlIGluIFN0cmluZy5yZXBsYWNlKCksIGJ1dCBhbHNvIGRvdWJsZSBkb2xsYXIgcGxhY2Vob2xkZXJzICgkJDEpLiBJbiB0aGUgY2FzZSBvZiBkb3VibGUgZG9sbGFyIHBsYWNlaG9sZGVycywgXG4gICAqIE1hcmtkb3duIGlubGluZSBncmFtbWFyIGlzIGFwcGxpZWQgb24gdGhlIGNvbnRlbnQgb2YgdGhlIGNhcHR1cmVkIHN1Ymdyb3VwLCBpLmUuLCAkJDEgcHJvY2Vzc2VzIGlubGluZSBNYXJrZG93biBncmFtbWFyIGluIHRoZSBjb250ZW50IG9mIHRoZVxuICAgKiBmaXJzdCBjYXB0dXJlZCBzdWJncm91cCwgYW5kIHJlcGxhY2VzIGAkJDFgIHdpdGggdGhlIHJlc3VsdC5cbiAgICogXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZXBsYWNlbWVudCBUaGUgcmVwbGFjZW1lbnQgc3RyaW5nLCBpbmNsdWRpbmcgcGxhY2Vob2xkZXJzLlxuICAgKiBAcGFyYW0gIGNhcHR1cmUgVGhlIHJlc3VsdCBvZiBhIFJlZ0V4cC5leGVjKCkgY2FsbFxuICAgKiBAcmV0dXJucyBUaGUgcmVwbGFjZW1lbnQgc3RyaW5nLCB3aXRoIHBsYWNlaG9sZGVycyByZXBsYWNlZCBmcm9tIHRoZSBjYXB0dXJlIHJlc3VsdC5cbiAgICovXG4gIHJlcGxhY2UocmVwbGFjZW1lbnQsIGNhcHR1cmUpIHtcbiAgICByZXR1cm4gcmVwbGFjZW1lbnRcbiAgICAgIC5yZXBsYWNlKC8oXFwkezEsMn0pKFswLTldKS9nLCAoc3RyLCBwMSwgcDIpID0+IHtcbiAgICAgICAgaWYgKHAxID09ICckJykgcmV0dXJuIGh0bWxlc2NhcGUoY2FwdHVyZVtwMl0pO1xuICAgICAgICBlbHNlIHJldHVybiBgPHNwYW4gY2xhc3M9XCJUTUlubGluZUZvcm1hdHRlZFwiPiR7dGhpcy5wcm9jZXNzSW5saW5lU3R5bGVzKGNhcHR1cmVbcDJdKX08L3NwYW4+YDtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgdGhlIGxpbmUgdHlwZXMgKGZyb20gdGhpcy5saW5lVHlwZXMgYXMgd2VsbCBhcyB0aGUgY2FwdHVyZSByZXN1bHQgaW4gdGhpcy5saW5lUmVwbGFjZW1lbnRzIGFuZCB0aGlzLmxpbmVDYXB0dXJlcykgXG4gICAqIGFuZCBwcm9jZXNzZXMgaW5saW5lIGZvcm1hdHRpbmcgZm9yIGFsbCBsaW5lcy5cbiAgICovXG4gIGFwcGx5TGluZVR5cGVzKCkge1xuICAgIGZvciAobGV0IGxpbmVOdW0gPSAwOyBsaW5lTnVtIDwgdGhpcy5saW5lcy5sZW5ndGg7IGxpbmVOdW0rKykge1xuICAgICAgaWYgKHRoaXMubGluZURpcnR5W2xpbmVOdW1dKSB7XG4gICAgICAgIGxldCBjb250ZW50SFRNTCA9IHRoaXMucmVwbGFjZSh0aGlzLmxpbmVSZXBsYWNlbWVudHNbbGluZU51bV0sIHRoaXMubGluZUNhcHR1cmVzW2xpbmVOdW1dKTtcbiAgICAgICAgLy8gdGhpcy5saW5lSFRNTFtsaW5lTnVtXSA9IChjb250ZW50SFRNTCA9PSAnJyA/ICc8YnIgLz4nIDogY29udGVudEhUTUwpOyAvLyBQcmV2ZW50IGVtcHR5IGVsZW1lbnRzIHdoaWNoIGNhbid0IGJlIHNlbGVjdGVkIGV0Yy5cbiAgICAgICAgdGhpcy5saW5lRWxlbWVudHNbbGluZU51bV0uY2xhc3NOYW1lID0gdGhpcy5saW5lVHlwZXNbbGluZU51bV07XG4gICAgICAgIHRoaXMubGluZUVsZW1lbnRzW2xpbmVOdW1dLnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnKTtcbiAgICAgICAgdGhpcy5saW5lRWxlbWVudHNbbGluZU51bV0uaW5uZXJIVE1MID0gKGNvbnRlbnRIVE1MID09ICcnID8gJzxiciAvPicgOiBjb250ZW50SFRNTCk7IC8vIFByZXZlbnQgZW1wdHkgZWxlbWVudHMgd2hpY2ggY2FuJ3QgYmUgc2VsZWN0ZWQgZXRjLlxuICAgICAgfVxuICAgICAgdGhpcy5saW5lRWxlbWVudHNbbGluZU51bV0uZGF0YXNldC5saW5lTnVtID0gbGluZU51bTtcbiAgICB9ICAgIFxuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgbGluZSB0eXBlcyBmb3IgYWxsIGxpbmVzIGJhc2VkIG9uIHRoZSBsaW5lIC8gYmxvY2sgZ3JhbW1hci4gQ2FwdHVyZXMgdGhlIHJlc3VsdHMgb2YgdGhlIHJlc3BlY3RpdmUgbGluZVxuICAgKiBncmFtbWFyIHJlZ3VsYXIgZXhwcmVzc2lvbnMuXG4gICAqIFVwZGF0ZXMgdGhpcy5saW5lVHlwZXMsIHRoaXMubGluZUNhcHR1cmVzLCBhbmQgdGhpcy5saW5lUmVwbGFjZW1lbnRzLlxuICAgKi9cbiAgdXBkYXRlTGluZVR5cGVzKCkge1xuICAgIGxldCBjb2RlQmxvY2tUeXBlID0gZmFsc2U7XG4gICAgbGV0IGNvZGVCbG9ja1NlcUxlbmd0aCA9IDA7XG4gICAgbGV0IGh0bWxCbG9jayA9IGZhbHNlO1xuXG4gICAgZm9yIChsZXQgbGluZU51bSA9IDA7IGxpbmVOdW0gPCB0aGlzLmxpbmVzLmxlbmd0aDsgbGluZU51bSsrKSB7XG4gICAgICBsZXQgbGluZVR5cGUgPSAnVE1QYXJhJztcbiAgICAgIGxldCBsaW5lQ2FwdHVyZSA9IFt0aGlzLmxpbmVzW2xpbmVOdW1dXTtcbiAgICAgIGxldCBsaW5lUmVwbGFjZW1lbnQgPSAnJCQwJzsgLy8gRGVmYXVsdCByZXBsYWNlbWVudCBmb3IgcGFyYWdyYXBoOiBJbmxpbmUgZm9ybWF0IHRoZSBlbnRpcmUgbGluZVxuXG4gICAgICAvLyBDaGVjayBvbmdvaW5nIGNvZGUgYmxvY2tzXG4gICAgICAvLyBpZiAobGluZU51bSA+IDAgJiYgKHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSAnVE1Db2RlRmVuY2VCYWNrdGlja09wZW4nIHx8IHRoaXMubGluZVR5cGVzW2xpbmVOdW0gLSAxXSA9PSAnVE1GZW5jZWRDb2RlQmFja3RpY2snKSkge1xuICAgICAgaWYgKGNvZGVCbG9ja1R5cGUgPT0gJ1RNQ29kZUZlbmNlQmFja3RpY2tPcGVuJykge1xuICAgICAgICAvLyBXZSdyZSBpbiBhIGJhY2t0aWNrLWZlbmNlZCBjb2RlIGJsb2NrLCBjaGVjayBpZiB0aGUgY3VycmVudCBsaW5lIGNsb3NlcyBpdFxuICAgICAgICBsZXQgY2FwdHVyZSA9IGxpbmVHcmFtbWFyLlRNQ29kZUZlbmNlQmFja3RpY2tDbG9zZS5yZWdleHAuZXhlYyh0aGlzLmxpbmVzW2xpbmVOdW1dKTtcbiAgICAgICAgaWYgKGNhcHR1cmUgJiYgY2FwdHVyZS5ncm91cHNbJ3NlcSddLmxlbmd0aCA+PSBjb2RlQmxvY2tTZXFMZW5ndGgpIHtcbiAgICAgICAgICBsaW5lVHlwZSA9ICdUTUNvZGVGZW5jZUJhY2t0aWNrQ2xvc2UnO1xuICAgICAgICAgIGxpbmVSZXBsYWNlbWVudCA9IGxpbmVHcmFtbWFyLlRNQ29kZUZlbmNlQmFja3RpY2tDbG9zZS5yZXBsYWNlbWVudDtcbiAgICAgICAgICBsaW5lQ2FwdHVyZSA9IGNhcHR1cmU7XG4gICAgICAgICAgY29kZUJsb2NrVHlwZSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxpbmVUeXBlID0gJ1RNRmVuY2VkQ29kZUJhY2t0aWNrJztcbiAgICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSAnJDAnO1xuICAgICAgICAgIGxpbmVDYXB0dXJlID0gW3RoaXMubGluZXNbbGluZU51bV1dO1xuICAgICAgICB9IFxuICAgICAgfVxuICAgICAgLy8gaWYgKGxpbmVOdW0gPiAwICYmICh0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gJ1RNQ29kZUZlbmNlVGlsZGVPcGVuJyB8fCB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtIC0gMV0gPT0gJ1RNRmVuY2VkQ29kZVRpbGRlJykpIHtcbiAgICAgIGVsc2UgaWYgKGNvZGVCbG9ja1R5cGUgPT0gJ1RNQ29kZUZlbmNlVGlsZGVPcGVuJykge1xuICAgICAgICAvLyBXZSdyZSBpbiBhIHRpbGRlLWZlbmNlZCBjb2RlIGJsb2NrXG4gICAgICAgIGxldCBjYXB0dXJlID0gbGluZUdyYW1tYXIuVE1Db2RlRmVuY2VUaWxkZUNsb3NlLnJlZ2V4cC5leGVjKHRoaXMubGluZXNbbGluZU51bV0pO1xuICAgICAgICBpZiAoY2FwdHVyZSAmJiBjYXB0dXJlLmdyb3Vwc1snc2VxJ10ubGVuZ3RoID49IGNvZGVCbG9ja1NlcUxlbmd0aCkgIHtcbiAgICAgICAgICBsaW5lVHlwZSA9ICdUTUNvZGVGZW5jZVRpbGRlQ2xvc2UnO1xuICAgICAgICAgIGxpbmVSZXBsYWNlbWVudCA9IGxpbmVHcmFtbWFyLlRNQ29kZUZlbmNlVGlsZGVDbG9zZS5yZXBsYWNlbWVudDtcbiAgICAgICAgICBsaW5lQ2FwdHVyZSA9IGNhcHR1cmU7XG4gICAgICAgICAgY29kZUJsb2NrVHlwZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGxpbmVUeXBlID0gJ1RNRmVuY2VkQ29kZVRpbGRlJztcbiAgICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSAnJDAnO1xuICAgICAgICAgIGxpbmVDYXB0dXJlID0gW3RoaXMubGluZXNbbGluZU51bV1dO1xuICAgICAgICB9IFxuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBIVE1MIGJsb2NrIHR5cGVzXG4gICAgICBpZiAobGluZVR5cGUgPT0gJ1RNUGFyYScgJiYgaHRtbEJsb2NrID09PSBmYWxzZSkge1xuICAgICAgICBmb3IgKGxldCBodG1sQmxvY2tUeXBlIG9mIGh0bWxCbG9ja0dyYW1tYXIpIHtcbiAgICAgICAgICBpZiAodGhpcy5saW5lc1tsaW5lTnVtXS5tYXRjaChodG1sQmxvY2tUeXBlLnN0YXJ0KSkge1xuICAgICAgICAgICAgLy8gTWF0Y2hpbmcgc3RhcnQgY29uZGl0aW9uLiBDaGVjayBpZiB0aGlzIHRhZyBjYW4gc3RhcnQgaGVyZSAobm90IGFsbCBzdGFydCBjb25kaXRpb25zIGFsbG93IGJyZWFraW5nIGEgcGFyYWdyYXBoKS5cbiAgICAgICAgICAgIGlmIChodG1sQmxvY2tUeXBlLnBhcmFJbnRlcnJ1cHQgfHwgbGluZU51bSA9PSAwIHx8ICEodGhpcy5saW5lVHlwZXNbbGluZU51bS0xXSA9PSAnVE1QYXJhJyB8fCB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtLTFdID09ICdUTVVMJyB8fCB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtLTFdID09ICdUTU9MJyB8fCB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtLTFdID09ICdUTUJsb2NrcXVvdGUnKSkge1xuICAgICAgICAgICAgICBodG1sQmxvY2sgPSBodG1sQmxvY2tUeXBlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGh0bWxCbG9jayAhPT0gZmFsc2UpIHtcbiAgICAgICAgbGluZVR5cGUgPSAnVE1IVE1MQmxvY2snO1xuICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSAnJDAnOyAvLyBObyBmb3JtYXR0aW5nIGluIFRNSFRNTEJsb2NrXG4gICAgICAgIGxpbmVDYXB0dXJlID0gW3RoaXMubGluZXNbbGluZU51bV1dOyAvLyBUaGlzIHNob3VsZCBhbHJlYWR5IGJlIHNldCBidXQgYmV0dGVyIHNhZmUgdGhhbiBzb3JyeVxuXG4gICAgICAgIC8vIENoZWNrIGlmIEhUTUwgYmxvY2sgc2hvdWxkIGJlIGNsb3NlZFxuICAgICAgICBpZiAoaHRtbEJsb2NrLmVuZCkge1xuICAgICAgICAgIC8vIFNwZWNpZmljIGVuZCBjb25kaXRpb25cbiAgICAgICAgICBpZiAodGhpcy5saW5lc1tsaW5lTnVtXS5tYXRjaChodG1sQmxvY2suZW5kKSkge1xuICAgICAgICAgICAgaHRtbEJsb2NrID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE5vIHNwZWNpZmljIGVuZCBjb25kaXRpb24sIGVuZHMgd2l0aCBibGFuayBsaW5lXG4gICAgICAgICAgaWYgKGxpbmVOdW0gPT0gdGhpcy5saW5lcy5sZW5ndGggLSAxIHx8IHRoaXMubGluZXNbbGluZU51bSsxXS5tYXRjaChsaW5lR3JhbW1hci5UTUJsYW5rTGluZS5yZWdleHApKSB7XG4gICAgICAgICAgICBodG1sQmxvY2sgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgYWxsIHJlZ2V4cHMgaWYgd2UgaGF2ZW4ndCBhcHBsaWVkIG9uZSBvZiB0aGUgY29kZSBibG9jayB0eXBlc1xuICAgICAgaWYgKGxpbmVUeXBlID09ICdUTVBhcmEnKSB7XG4gICAgICAgIGZvciAobGV0IHR5cGUgaW4gbGluZUdyYW1tYXIpIHtcbiAgICAgICAgICBpZiAobGluZUdyYW1tYXJbdHlwZV0ucmVnZXhwKSB7XG4gICAgICAgICAgICBsZXQgY2FwdHVyZSA9IGxpbmVHcmFtbWFyW3R5cGVdLnJlZ2V4cC5leGVjKHRoaXMubGluZXNbbGluZU51bV0pO1xuICAgICAgICAgICAgaWYgKGNhcHR1cmUpIHtcbiAgICAgICAgICAgICAgbGluZVR5cGUgPSB0eXBlO1xuICAgICAgICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSBsaW5lR3JhbW1hclt0eXBlXS5yZXBsYWNlbWVudDtcbiAgICAgICAgICAgICAgbGluZUNhcHR1cmUgPSBjYXB0dXJlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gSWYgd2UndmUgb3BlbmVkIGEgY29kZSBibG9jaywgcmVtZW1iZXIgdGhhdFxuICAgICAgaWYgKGxpbmVUeXBlID09ICdUTUNvZGVGZW5jZUJhY2t0aWNrT3BlbicgfHwgbGluZVR5cGUgPT0gJ1RNQ29kZUZlbmNlVGlsZGVPcGVuJykge1xuICAgICAgICBjb2RlQmxvY2tUeXBlID0gbGluZVR5cGU7XG4gICAgICAgIGNvZGVCbG9ja1NlcUxlbmd0aCA9IGxpbmVDYXB0dXJlLmdyb3Vwc1snc2VxJ10ubGVuZ3RoO1xuICAgICAgfVxuXG4gICAgICAvLyBMaW5rIHJlZmVyZW5jZSBkZWZpbml0aW9uIGFuZCBpbmRlbnRlZCBjb2RlIGNhbid0IGludGVycnVwdCBhIHBhcmFncmFwaFxuICAgICAgaWYgKFxuICAgICAgICAobGluZVR5cGUgPT0gJ1RNSW5kZW50ZWRDb2RlJyB8fCBsaW5lVHlwZSA9PSAnVE1MaW5rUmVmZXJlbmNlRGVmaW5pdGlvbicpIFxuICAgICAgICAmJiBsaW5lTnVtID4gMCBcbiAgICAgICAgJiYgKHRoaXMubGluZVR5cGVzW2xpbmVOdW0tMV0gPT0gJ1RNUGFyYScgfHwgdGhpcy5saW5lVHlwZXNbbGluZU51bS0xXSA9PSAnVE1VTCcgfHwgdGhpcy5saW5lVHlwZXNbbGluZU51bS0xXSA9PSAnVE1PTCcgfHwgdGhpcy5saW5lVHlwZXNbbGluZU51bS0xXSA9PSAnVE1CbG9ja3F1b3RlJylcbiAgICAgICkge1xuICAgICAgICAvLyBGYWxsIGJhY2sgdG8gVE1QYXJhXG4gICAgICAgIGxpbmVUeXBlID0gJ1RNUGFyYSc7XG4gICAgICAgIGxpbmVDYXB0dXJlID0gW3RoaXMubGluZXNbbGluZU51bV1dO1xuICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSAnJCQwJztcbiAgICAgIH1cblxuICAgICAgLy8gU2V0ZXh0IEgyIG1hcmtlcnMgdGhhdCBjYW4gYWxzbyBiZSBpbnRlcnByZXRlZCBhcyBhbiBlbXB0eSBsaXN0IGl0ZW0gc2hvdWxkIGJlIHJlZ2FyZGVkIGFzIHN1Y2ggKGFzIHBlciBDb21tb25NYXJrIHNwZWMpXG4gICAgICBpZiAobGluZVR5cGUgPT0gJ1RNU2V0ZXh0SDJNYXJrZXInKSB7XG4gICAgICAgIGxldCBjYXB0dXJlID0gbGluZUdyYW1tYXIuVE1VTC5yZWdleHAuZXhlYyh0aGlzLmxpbmVzW2xpbmVOdW1dKTtcbiAgICAgICAgaWYgKGNhcHR1cmUpIHtcbiAgICAgICAgICBsaW5lVHlwZSA9ICdUTVVMJztcbiAgICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSBsaW5lR3JhbW1hci5UTVVMLnJlcGxhY2VtZW50O1xuICAgICAgICAgIGxpbmVDYXB0dXJlID0gY2FwdHVyZTtcbiAgICAgICAgfSAgICAgIFxuICAgICAgfVxuXG4gICAgICAvLyBTZXRleHQgaGVhZGluZ3MgYXJlIG9ubHkgdmFsaWQgaWYgcHJlY2VkZWQgYnkgYSBwYXJhZ3JhcGggKGFuZCBpZiBzbywgdGhleSBjaGFuZ2UgdGhlIHR5cGUgb2YgdGhlIHByZXZpb3VzIHBhcmFncmFwaClcbiAgICAgIGlmIChsaW5lVHlwZSA9PSAnVE1TZXRleHRIMU1hcmtlcicgfHwgbGluZVR5cGUgPT0gJ1RNU2V0ZXh0SDJNYXJrZXInKSB7XG4gICAgICAgIGlmIChsaW5lTnVtID09IDAgfHwgdGhpcy5saW5lVHlwZXNbbGluZU51bSAtIDFdICE9ICdUTVBhcmEnKSB7XG4gICAgICAgICAgLy8gU2V0ZXh0IG1hcmtlciBpcyBpbnZhbGlkLiBIb3dldmVyLCBhIEgyIG1hcmtlciBtaWdodCBzdGlsbCBiZSBhIHZhbGlkIEhSLCBzbyBsZXQncyBjaGVjayB0aGF0XG4gICAgICAgICAgbGV0IGNhcHR1cmUgPSBsaW5lR3JhbW1hci5UTUhSLnJlZ2V4cC5leGVjKHRoaXMubGluZXNbbGluZU51bV0pO1xuICAgICAgICAgIGlmIChjYXB0dXJlKSB7XG4gICAgICAgICAgICAvLyBWYWxpZCBIUlxuICAgICAgICAgICAgbGluZVR5cGUgPSAnVE1IUic7XG4gICAgICAgICAgICBsaW5lQ2FwdHVyZSA9IGNhcHR1cmU7XG4gICAgICAgICAgICBsaW5lUmVwbGFjZW1lbnQgPSBsaW5lR3JhbW1hci5UTUhSLnJlcGxhY2VtZW50O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBOb3QgdmFsaWQgSFIsIGZvcm1hdCBhcyBUTVBhcmFcbiAgICAgICAgICAgIGxpbmVUeXBlID0gJ1RNUGFyYSc7XG4gICAgICAgICAgICBsaW5lQ2FwdHVyZSA9IFt0aGlzLmxpbmVzW2xpbmVOdW1dXTtcbiAgICAgICAgICAgIGxpbmVSZXBsYWNlbWVudCA9ICckJDAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBWYWxpZCBzZXRleHQgbWFya2VyLiBDaGFuZ2UgdHlwZXMgb2YgcHJlY2VkaW5nIHBhcmEgbGluZXNcbiAgICAgICAgICBsZXQgaGVhZGluZ0xpbmUgPSBsaW5lTnVtIC0gMTtcbiAgICAgICAgICBjb25zdCBoZWFkaW5nTGluZVR5cGUgPSAobGluZVR5cGUgPT0gJ1RNU2V0ZXh0SDFNYXJrZXInID8gJ1RNU2V0ZXh0SDEnIDogJ1RNU2V0ZXh0SDInKTtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBpZiAodGhpcy5saW5lVHlwZXNbaGVhZGluZ0xpbmVUeXBlXSAhPSBoZWFkaW5nTGluZVR5cGUpIHtcbiAgICAgICAgICAgICAgdGhpcy5saW5lVHlwZXNbaGVhZGluZ0xpbmVdID0gaGVhZGluZ0xpbmVUeXBlOyBcbiAgICAgICAgICAgICAgdGhpcy5saW5lRGlydHlbaGVhZGluZ0xpbmVUeXBlXSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxpbmVSZXBsYWNlbWVudHNbaGVhZGluZ0xpbmVdID0gJyQkMCc7XG4gICAgICAgICAgICB0aGlzLmxpbmVDYXB0dXJlc1toZWFkaW5nTGluZV0gPSBbdGhpcy5saW5lc1toZWFkaW5nTGluZV1dO1xuXG4gICAgICAgICAgICBoZWFkaW5nTGluZS0tO1xuICAgICAgICAgIH0gd2hpbGUoaGVhZGluZ0xpbmUgPj0gMCAmJiB0aGlzLmxpbmVUeXBlc1toZWFkaW5nTGluZV0gPT0gJ1RNUGFyYScpOyBcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gTGFzdGx5LCBzYXZlIHRoZSBsaW5lIHN0eWxlIHRvIGJlIGFwcGxpZWQgbGF0ZXJcbiAgICAgIGlmICh0aGlzLmxpbmVUeXBlc1tsaW5lTnVtXSAhPSBsaW5lVHlwZSkge1xuICAgICAgICB0aGlzLmxpbmVUeXBlc1tsaW5lTnVtXSA9IGxpbmVUeXBlO1xuICAgICAgICB0aGlzLmxpbmVEaXJ0eVtsaW5lTnVtXSA9IHRydWU7XG4gICAgICB9XG4gICAgICB0aGlzLmxpbmVSZXBsYWNlbWVudHNbbGluZU51bV0gPSBsaW5lUmVwbGFjZW1lbnQ7XG4gICAgICB0aGlzLmxpbmVDYXB0dXJlc1tsaW5lTnVtXSA9IGxpbmVDYXB0dXJlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGFsbCBsaW5lIGNvbnRlbnRzIGZyb20gdGhlIEhUTUwsIHRoZW4gcmUtYXBwbGllcyBmb3JtYXR0aW5nLlxuICAgKi9cbiAgdXBkYXRlTGluZUNvbnRlbnRzQW5kRm9ybWF0dGluZygpIHtcbiAgICB0aGlzLmNsZWFyRGlydHlGbGFnKCk7XG4gICAgdGhpcy51cGRhdGVMaW5lQ29udGVudHMoKTtcbiAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0cyB0byBwYXJzZSBhIGxpbmsgb3IgaW1hZ2UgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24uIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBvcGVuaW5nIFsgb3IgIVsgaGFzIGFscmVhZHkgYmVlbiBtYXRjaGVkLiBcbiAgICogUmV0dXJucyBmYWxzZSBpZiB0aGlzIGlzIG5vdCBhIHZhbGlkIGxpbmssIGltYWdlLiBTZWUgYmVsb3cgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbmFsU3RyaW5nIFRoZSBvcmlnaW5hbCBzdHJpbmcsIHN0YXJ0aW5nIGF0IHRoZSBvcGVuaW5nIG1hcmtlciAoWyBvciAhWylcbiAgICogQHBhcmFtIHtib29sZWFufSBpc0ltYWdlIFdoZXRoZXIgb3Igbm90IHRoaXMgaXMgYW4gaW1hZ2UgKG9wZW5lciA9PSAhWylcbiAgICogQHJldHVybnMgZmFsc2UgaWYgbm90IGEgdmFsaWQgbGluayAvIGltYWdlLiBcbiAgICogT3RoZXJ3aXNlIHJldHVybnMgYW4gb2JqZWN0IHdpdGggdHdvIHByb3BlcnRpZXM6IG91dHB1dCBpcyB0aGUgc3RyaW5nIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBwcm9jZXNzZWQgb3V0cHV0LCBcbiAgICogY2hhckNvdW50IGlzIHRoZSBudW1iZXIgb2YgaW5wdXQgY2hhcmFjdGVycyAoZnJvbSBvcmlnaW5hbFN0cmluZykgY29uc3VtZWQuXG4gICAqL1xuICBwYXJzZUxpbmtPckltYWdlKG9yaWdpbmFsU3RyaW5nLCBpc0ltYWdlKSB7XG4gICAgLy8gU2tpcCB0aGUgb3BlbmluZyBicmFja2V0XG4gICAgbGV0IHRleHRPZmZzZXQgPSBpc0ltYWdlID8gMiA6IDE7XG4gICAgbGV0IG9wZW5lciA9IG9yaWdpbmFsU3RyaW5nLnN1YnN0cigwLCB0ZXh0T2Zmc2V0KTtcbiAgICBsZXQgdHlwZSA9IGlzSW1hZ2UgPyAnVE1JbWFnZScgOiAnVE1MaW5rJztcbiAgICBsZXQgY3VycmVudE9mZnNldCA9IHRleHRPZmZzZXQ7XG4gICAgXG4gICAgbGV0IGJyYWNrZXRMZXZlbCA9IDE7XG4gICAgbGV0IGxpbmtUZXh0ID0gZmFsc2U7XG4gICAgbGV0IGxpbmtSZWYgPSBmYWxzZTtcbiAgICBsZXQgbGlua0xhYmVsID0gW107XG4gICAgbGV0IGxpbmtEZXRhaWxzID0gW107IC8vIElmIG1hdGNoZWQsIHRoaXMgd2lsbCBiZSBhbiBhcnJheTogW3doaXRlc3BhY2UgKyBsaW5rIGRlc3RpbmF0aW9uIGRlbGltaXRlciwgbGluayBkZXN0aW5hdGlvbiwgbGluayBkZXN0aW5hdGlvbiBkZWxpbWl0ZXIsIHdoaXRlc3BhY2UsIGxpbmsgdGl0bGUgZGVsaW1pdGVyLCBsaW5rIHRpdGxlLCBsaW5rIHRpdGxlIGRlbGltaXRlciArIHdoaXRlc3BhY2VdLiBBbGwgY2FuIGJlIGVtcHR5IHN0cmluZ3MuXG5cbiAgXG4gICAgdGV4dE91dGVyOiB3aGlsZSAoY3VycmVudE9mZnNldCA8IG9yaWdpbmFsU3RyaW5nLmxlbmd0aCAmJiBsaW5rVGV4dCA9PT0gZmFsc2UgLyogZW1wdHkgc3RyaW5nIGlzIG9rYXkgKi8pIHtcbiAgICAgIGxldCBzdHJpbmcgPSBvcmlnaW5hbFN0cmluZy5zdWJzdHIoY3VycmVudE9mZnNldCk7XG4gIFxuICAgICAgLy8gQ2FwdHVyZSBhbnkgZXNjYXBlcyBhbmQgY29kZSBibG9ja3MgYXQgY3VycmVudCBwb3NpdGlvbiwgdGhleSBiaW5kIG1vcmUgc3Ryb25nbHkgdGhhbiBsaW5rc1xuICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSB0byBhY3R1YWxseSBwcm9jZXNzIHRoZW0gaGVyZSwgdGhhdCdsbCBiZSBkb25lIGxhdGVyIGluIGNhc2UgdGhlIGxpbmsgLyBpbWFnZSBpcyB2YWxpZCwgYnV0IHdlIG5lZWQgdG8gc2tpcCBvdmVyIHRoZW0uXG4gICAgICBmb3IgKGxldCBydWxlIG9mIFsnZXNjYXBlJywgJ2NvZGUnLCAnYXV0b2xpbmsnLCAnaHRtbCddKSB7XG4gICAgICAgIGxldCBjYXAgPSBpbmxpbmVHcmFtbWFyW3J1bGVdLnJlZ2V4cC5leGVjKHN0cmluZyk7XG4gICAgICAgIGlmIChjYXApIHtcbiAgICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgICAgY29udGludWUgdGV4dE91dGVyOyBcbiAgICAgICAgfVxuICAgICAgfVxuICBcbiAgICAgIC8vIENoZWNrIGZvciBpbWFnZS4gSXQncyBva2F5IGZvciBhbiBpbWFnZSB0byBiZSBpbmNsdWRlZCBpbiBhIGxpbmsgb3IgaW1hZ2VcbiAgICAgIGlmIChzdHJpbmcubWF0Y2goaW5saW5lR3JhbW1hci5pbWFnZU9wZW4ucmVnZXhwKSkge1xuICAgICAgICAvLyBPcGVuaW5nIGltYWdlLiBJdCdzIG9rYXkgaWYgdGhpcyBpcyBhIG1hdGNoaW5nIHBhaXIgb2YgYnJhY2tldHNcbiAgICAgICAgYnJhY2tldExldmVsKys7XG4gICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gMjtcbiAgICAgICAgY29udGludWUgdGV4dE91dGVyO1xuICAgICAgfVxuICBcbiAgICAgIC8vIENoZWNrIGZvciBsaW5rIChub3QgYW4gaW1hZ2UgYmVjYXVzZSB0aGF0IHdvdWxkIGhhdmUgYmVlbiBjYXB0dXJlZCBhbmQgc2tpcHBlZCBvdmVyIGFib3ZlKVxuICAgICAgaWYgKHN0cmluZy5tYXRjaChpbmxpbmVHcmFtbWFyLmxpbmtPcGVuLnJlZ2V4cCkpIHtcbiAgICAgICAgLy8gT3BlbmluZyBicmFja2V0LiBUd28gdGhpbmdzIHRvIGRvOlxuICAgICAgICAvLyAxKSBpdCdzIG9rYXkgaWYgdGhpcyBwYXJ0IG9mIGEgcGFpciBvZiBicmFja2V0cy5cbiAgICAgICAgLy8gMikgSWYgd2UgYXJlIGN1cnJlbnRseSB0cnlpbmcgdG8gcGFyc2UgYSBsaW5rLCB0aGlzIG5lc3RlZCBicmFja2V0IG11c24ndCBzdGFydCBhIHZhbGlkIGxpbmsgKG5vIG5lc3RlZCBsaW5rcyBhbGxvd2VkKVxuICAgICAgICBicmFja2V0TGV2ZWwrKztcbiAgICAgICAgLy8gaWYgKGJyYWNrZXRMZXZlbCA+PSAyKSByZXR1cm4gZmFsc2U7IC8vIE5lc3RlZCB1bmVzY2FwZWQgYnJhY2tldHMsIHRoaXMgZG9lc24ndCBxdWFsaWZ5IGFzIGEgbGluayAvIGltYWdlXG4gICAgICAgIGlmICghaXNJbWFnZSkge1xuICAgICAgICAgIGlmICh0aGlzLnBhcnNlTGlua09ySW1hZ2Uoc3RyaW5nLCBmYWxzZSkpIHtcbiAgICAgICAgICAgIC8vIFZhbGlkIGxpbmsgaW5zaWRlIHRoaXMgcG9zc2libGUgbGluaywgd2hpY2ggbWFrZXMgdGhpcyBsaW5rIGludmFsaWQgKGlubmVyIGxpbmtzIGJlYXQgb3V0ZXIgb25lcylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudE9mZnNldCArPSAxO1xuICAgICAgICBjb250aW51ZSB0ZXh0T3V0ZXI7XG4gICAgICB9XG4gIFxuICAgICAgLy8gQ2hlY2sgZm9yIGNsb3NpbmcgYnJhY2tldFxuICAgICAgaWYgKHN0cmluZy5tYXRjaCgvXlxcXS8pKSB7XG4gICAgICAgIGJyYWNrZXRMZXZlbC0tO1xuICAgICAgICBpZiAoYnJhY2tldExldmVsID09IDApIHtcbiAgICAgICAgICAvLyBGb3VuZCBtYXRjaGluZyBicmFja2V0IGFuZCBoYXZlbid0IGZvdW5kIGFueXRoaW5nIGRpc3F1YWxpZnlpbmcgdGhpcyBhcyBsaW5rIC8gaW1hZ2UuXG4gICAgICAgICAgbGlua1RleHQgPSBvcmlnaW5hbFN0cmluZy5zdWJzdHIodGV4dE9mZnNldCwgY3VycmVudE9mZnNldCAtIHRleHRPZmZzZXQpO1xuICAgICAgICAgIGN1cnJlbnRPZmZzZXQrKztcbiAgICAgICAgICBjb250aW51ZSB0ZXh0T3V0ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgXG4gICAgICAvLyBOb3RoaW5nIG1hdGNoZXMsIHByb2NlZWQgdG8gbmV4dCBjaGFyXG4gICAgICBjdXJyZW50T2Zmc2V0Kys7XG4gICAgfVxuICBcbiAgICAvLyBEaWQgd2UgZmluZCBhIGxpbmsgdGV4dCAoaS5lLiwgZmluZCBhIG1hdGNoaW5nIGNsb3NpbmcgYnJhY2tldD8pXG4gICAgaWYgKGxpbmtUZXh0ID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlOyAvLyBOb3BlXG4gIFxuICAgIC8vIFNvIGZhciwgc28gZ29vZC4gV2UndmUgZ290IGEgdmFsaWQgbGluayB0ZXh0LiBMZXQncyBzZWUgd2hhdCB0eXBlIG9mIGxpbmsgdGhpcyBpc1xuICAgIGxldCBuZXh0Q2hhciA9IGN1cnJlbnRPZmZzZXQgPCBvcmlnaW5hbFN0cmluZy5sZW5ndGggPyBvcmlnaW5hbFN0cmluZy5zdWJzdHIoY3VycmVudE9mZnNldCwgMSkgOiAnJzsgXG5cbiAgICAvLyBSRUZFUkVOQ0UgTElOS1NcbiAgICBpZiAobmV4dENoYXIgPT0gJ1snKSB7XG4gICAgICBsZXQgc3RyaW5nID0gb3JpZ2luYWxTdHJpbmcuc3Vic3RyKGN1cnJlbnRPZmZzZXQpO1xuICAgICAgbGV0IGNhcCA9IGlubGluZUdyYW1tYXIubGlua0xhYmVsLnJlZ2V4cC5leGVjKHN0cmluZyk7XG4gICAgICBpZiAoY2FwKSB7XG4gICAgICAgIC8vIFZhbGlkIGxpbmsgbGFiZWxcbiAgICAgICAgY3VycmVudE9mZnNldCArPSBjYXBbMF0ubGVuZ3RoO1xuICAgICAgICBsaW5rTGFiZWwucHVzaChjYXBbMV0sIGNhcFsyXSwgY2FwWzNdKTtcbiAgICAgICAgaWYgKGNhcFtpbmxpbmVHcmFtbWFyLmxpbmtMYWJlbC5sYWJlbFBsYWNlaG9sZGVyXSkge1xuICAgICAgICAgIC8vIEZ1bGwgcmVmZXJlbmNlIGxpbmtcbiAgICAgICAgICBsaW5rUmVmID0gY2FwW2lubGluZUdyYW1tYXIubGlua0xhYmVsLmxhYmVsUGxhY2Vob2xkZXJdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIENvbGxhcHNlZCByZWZlcmVuY2UgbGlua1xuICAgICAgICAgIGxpbmtSZWYgPSBsaW5rVGV4dC50cmltKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vdCBhIHZhbGlkIGxpbmsgbGFiZWxcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSAgIFxuICAgIH0gZWxzZSBpZiAobmV4dENoYXIgIT0gJygnKSB7XG4gICAgICBcbiAgICAgIC8vIFNob3J0Y3V0IHJlZiBsaW5rXG4gICAgICBsaW5rUmVmID0gbGlua1RleHQudHJpbSgpO1xuXG4gICAgLy8gSU5MSU5FIExJTktTXG4gICAgfSBlbHNlIHsgLy8gbmV4dENoYXIgPT0gJygnXG4gICAgICBcbiAgICAgIC8vIFBvdGVudGlhbCBpbmxpbmUgbGlua1xuICAgICAgY3VycmVudE9mZnNldCsrO1xuXG4gICAgICBsZXQgcGFyZW50aGVzaXNMZXZlbCA9IDE7XG4gICAgICBpbmxpbmVPdXRlcjogd2hpbGUgKGN1cnJlbnRPZmZzZXQgPCBvcmlnaW5hbFN0cmluZy5sZW5ndGggJiYgcGFyZW50aGVzaXNMZXZlbCA+IDApIHtcbiAgICAgICAgbGV0IHN0cmluZyA9IG9yaWdpbmFsU3RyaW5nLnN1YnN0cihjdXJyZW50T2Zmc2V0KTtcblxuICAgICAgICAvLyBQcm9jZXNzIHdoaXRlc3BhY2VcbiAgICAgICAgbGV0IGNhcCA9IC9eXFxzKy8uZXhlYyhzdHJpbmcpO1xuICAgICAgICBpZiAoY2FwKSB7XG4gICAgICAgICAgc3dpdGNoIChsaW5rRGV0YWlscy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDogbGlua0RldGFpbHMucHVzaChjYXBbMF0pOyBicmVhazsgLy8gT3BlbmluZyB3aGl0ZXNwYWNlXG4gICAgICAgICAgICBjYXNlIDE6IGxpbmtEZXRhaWxzLnB1c2goY2FwWzBdKTsgYnJlYWs7Ly8gT3BlbiBkZXN0aW5hdGlvbiwgYnV0IG5vdCBhIGRlc3RpbmF0aW9uIHlldDsgZGVzaW5hdGlvbiBvcGVuZWQgd2l0aCA8XG4gICAgICAgICAgICBjYXNlIDI6IC8vIE9wZW4gZGVzdGluYXRpb24gd2l0aCBjb250ZW50IGluIGl0LiBXaGl0ZXNwYWNlIG9ubHkgYWxsb3dlZCBpZiBvcGVuZWQgYnkgYW5nbGUgYnJhY2tldCwgb3RoZXJ3aXNlIHRoaXMgY2xvc2VzIHRoZSBkZXN0aW5hdGlvblxuICAgICAgICAgICAgICBpZiAobGlua0RldGFpbHNbMF0ubWF0Y2goLzwvKSkge1xuICAgICAgICAgICAgICAgIGxpbmtEZXRhaWxzWzFdID0gbGlua0RldGFpbHNbMV0uY29uY2F0KGNhcFswXSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudGhlc2lzTGV2ZWwgIT0gMSkgcmV0dXJuIGZhbHNlOyAvLyBVbmJhbGFuY2VkIHBhcmVudGhlc2lzXG4gICAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaCgnJyk7IC8vIEVtcHR5IGVuZCBkZWxpbWl0ZXIgZm9yIGRlc3RpbmF0aW9uXG4gICAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaChjYXBbMF0pOyAvLyBXaGl0ZXNwYWNlIGluIGJldHdlZW4gZGVzdGluYXRpb24gYW5kIHRpdGxlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDM6IGxpbmtEZXRhaWxzLnB1c2goY2FwWzBdKTsgYnJlYWs7IC8vIFdoaXRlc3BhY2UgYmV0d2VlbiBkZXN0aW5hdGlvbiBhbmQgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIGZhbHNlOyAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gKG5vIG9wZW5lciBmb3IgdGl0bGUgeWV0LCBidXQgbW9yZSB3aGl0ZXNwYWNlIHRvIGNhcHR1cmUpXG4gICAgICAgICAgICBjYXNlIDU6IGxpbmtEZXRhaWxzLnB1c2goJycpOyAvLyBXaGl0ZXNwYWNlIGF0IGJlZ2lubmluZyBvZiB0aXRsZSwgcHVzaCBlbXB0eSB0aXRsZSBhbmQgY29udGludWVcbiAgICAgICAgICAgIGNhc2UgNjogbGlua0RldGFpbHNbNV0gPSBsaW5rRGV0YWlsc1s1XS5jb25jYXQoY2FwWzBdKTsgYnJlYWs7IC8vIFdoaXRlc3BhY2UgaW4gdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNzogbGlua0RldGFpbHNbNl0gPSBsaW5rRGV0YWlsc1s2XS5jb25jYXQoY2FwWzBdKTsgYnJlYWs7IC8vIFdoaXRlc3BhY2UgYWZ0ZXIgY2xvc2luZyBkZWxpbWl0ZXJcbiAgICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBmYWxzZTsgLy8gV2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlXG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gY2FwWzBdLmxlbmd0aDtcbiAgICAgICAgICBjb250aW51ZSBpbmxpbmVPdXRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3MgYmFja3NsYXNoIGVzY2FwZXNcbiAgICAgICAgY2FwID0gaW5saW5lR3JhbW1hci5lc2NhcGUucmVnZXhwLmV4ZWMoc3RyaW5nKTtcbiAgICAgICAgaWYgKGNhcCkge1xuICAgICAgICAgIHN3aXRjaCAobGlua0RldGFpbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDA6IGxpbmtEZXRhaWxzLnB1c2goJycpOyAvLyB0aGlzIG9wZW5zIHRoZSBsaW5rIGRlc3RpbmF0aW9uLCBhZGQgZW1wdHkgb3BlbmluZyBkZWxpbWl0ZXIgYW5kIHByb2NlZWQgdG8gbmV4dCBjYXNlXG4gICAgICAgICAgICBjYXNlIDE6IGxpbmtEZXRhaWxzLnB1c2goY2FwWzBdKTsgYnJlYWs7IC8vIFRoaXMgb3BlbnMgdGhlIGxpbmsgZGVzdGluYXRpb24sIGFwcGVuZCBpdFxuICAgICAgICAgICAgY2FzZSAyOiBsaW5rRGV0YWlsc1sxXSA9IGxpbmtEZXRhaWxzWzFdLmNvbmNhdChjYXBbMF0pOyBicmVhazsgLy8gUGFydCBvZiB0aGUgbGluayBkZXN0aW5hdGlvblxuICAgICAgICAgICAgY2FzZSAzOiByZXR1cm4gZmFsc2U7IC8vIExhY2tpbmcgb3BlbmluZyBkZWxpbWl0ZXIgZm9yIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIGZhbHNlOyAvLyBMY2FraW5nIG9wZW5pbmcgZGVsaW1pdGVyIGZvciBsaW5rIHRpdGxlXG4gICAgICAgICAgICBjYXNlIDU6IGxpbmtEZXRhaWxzLnB1c2goJycpOyAvLyBUaGlzIG9wZW5zIHRoZSBsaW5rIHRpdGxlXG4gICAgICAgICAgICBjYXNlIDY6IGxpbmtEZXRhaWxzWzVdID0gbGlua0RldGFpbHNbNV0uY29uY2F0KGNhcFswXSk7IGJyZWFrOyAvLyBQYXJ0IG9mIHRoZSBsaW5rIHRpdGxlXG4gICAgICAgICAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7IC8vIEFmdGVyIGxpbmsgdGl0bGUgd2FzIGNsb3NlZCwgd2l0aG91dCBjbG9zaW5nIHBhcmVudGhlc2lzXG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gY2FwWzBdLmxlbmd0aDtcbiAgICAgICAgICBjb250aW51ZSBpbmxpbmVPdXRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3Mgb3BlbmluZyBhbmdsZSBicmFja2V0IGFzIGRlaWxpbWl0ZXIgb2YgZGVzdGluYXRpb25cbiAgICAgICAgaWYgKGxpbmtEZXRhaWxzLmxlbmd0aCA8IDIgJiYgc3RyaW5nLm1hdGNoKC9ePC8pKSB7XG4gICAgICAgICAgaWYgKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSAwKSBsaW5rRGV0YWlscy5wdXNoKCcnKTtcbiAgICAgICAgICBsaW5rRGV0YWlsc1swXSA9IGxpbmtEZXRhaWxzWzBdLmNvbmNhdCgnPCcpO1xuICAgICAgICAgIGN1cnJlbnRPZmZzZXQrKztcbiAgICAgICAgICBjb250aW51ZSBpbmxpbmVPdXRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3MgY2xvc2luZyBhbmdsZSBicmFja2V0IGFzIGRlbGltaXRlciBvZiBkZXN0aW5hdGlvblxuICAgICAgICBpZiAoKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSAxIHx8IGxpbmtEZXRhaWxzLmxlbmd0aCA9PSAyKSAmJiBzdHJpbmcubWF0Y2goL14+LykpIHtcbiAgICAgICAgICBpZiAobGlua0RldGFpbHMubGVuZ3RoID09IDEpIGxpbmtEZXRhaWxzLnB1c2goJycpOyAvLyBFbXB0eSBsaW5rIGRlc3RpbmF0aW9uXG4gICAgICAgICAgbGlua0RldGFpbHMucHVzaCgnPicpO1xuICAgICAgICAgIGN1cnJlbnRPZmZzZXQrKztcbiAgICAgICAgICBjb250aW51ZSBpbmxpbmVPdXRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3MgIG5vbi1wYXJlbnRoZXNpcyBkZWxpbWl0ZXIgZm9yIHRpdGxlLiBcbiAgICAgICAgY2FwID0gL15bXCInXS8uZXhlYyhzdHJpbmcpXG4gICAgICAgIC8vIEZvciB0aGlzIHRvIGJlIGEgdmFsaWQgb3BlbmVyLCB3ZSBoYXZlIHRvIGVpdGhlciBoYXZlIG5vIGRlc3RpbmF0aW9uLCBvbmx5IHdoaXRlc3BhY2Ugc28gZmFyLFxuICAgICAgICAvLyBvciBhIGRlc3RpbmF0aW9uIHdpdGggdHJhaWxpbmcgd2hpdGVzcGFjZS5cbiAgICAgICAgaWYgKGNhcCAmJiAobGlua0RldGFpbHMubGVuZ3RoID09IDAgfHwgbGlua0RldGFpbHMubGVuZ3RoID09IDEgfHwgbGlua0RldGFpbHMubGVuZ3RoID09IDQpKSB7XG4gICAgICAgICAgd2hpbGUgKGxpbmtEZXRhaWxzLmxlbmd0aCA8IDQpIGxpbmtEZXRhaWxzLnB1c2goJycpO1xuICAgICAgICAgIGxpbmtEZXRhaWxzLnB1c2goY2FwWzBdKTtcbiAgICAgICAgICBjdXJyZW50T2Zmc2V0Kys7XG4gICAgICAgICAgY29udGludWUgaW5saW5lT3V0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3IgdGhpcyB0byBiZSBhIHZhbGlkIGNsb3Nlciwgd2UgaGF2ZSB0byBoYXZlIGFuIG9wZW5lciBhbmQgc29tZSBvciBubyB0aXRsZSwgYW5kIHRoaXMgaGFzIHRvIG1hdGNoIHRoZSBvcGVuZXJcbiAgICAgICAgaWYgKGNhcCAmJiAobGlua0RldGFpbHMubGVuZ3RoID09IDUgfHwgbGlua0RldGFpbHMubGVuZ3RoID09IDYpICYmIGxpbmtEZXRhaWxzWzRdID09IGNhcFswXSkge1xuICAgICAgICAgIGlmIChsaW5rRGV0YWlscy5sZW5ndGggPT0gNSkgbGlua0RldGFpbHMucHVzaCgnJyk7IC8vIEVtcHR5IGxpbmsgdGl0bGVcbiAgICAgICAgICBsaW5rRGV0YWlscy5wdXNoKGNhcFswXSk7XG4gICAgICAgICAgY3VycmVudE9mZnNldCsrO1xuICAgICAgICAgIGNvbnRpbnVlIGlubGluZU91dGVyO1xuICAgICAgICB9XG4gICAgICAgIC8vIE90aGVyIGNhc2VzIChsaW5rRGV0YWlscy5sZW5ndGggPT0gMiwgMywgNykgd2lsbCBiZSBoYW5kbGVkIHdpdGggdGhlIFwiZGVmYXVsdFwiIGNhc2UgYmVsb3cuXG5cbiAgICAgICAgLy8gUHJvY2VzcyBvcGVuaW5nIHBhcmVudGhlc2lzXG4gICAgICAgIGlmIChzdHJpbmcubWF0Y2goL15cXCgvKSkge1xuICAgICAgICAgIHN3aXRjaCAobGlua0RldGFpbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDA6IGxpbmtEZXRhaWxzLnB1c2goJycpOyAvLyB0aGlzIG9wZW5zIHRoZSBsaW5rIGRlc3RpbmF0aW9uLCBhZGQgZW1wdHkgb3BlbmluZyBkZWxpbWl0ZXIgYW5kIHByb2NlZWQgdG8gbmV4dCBjYXNlXG4gICAgICAgICAgICBjYXNlIDE6IGxpbmtEZXRhaWxzLnB1c2goJycpOyAvLyBUaGlzIG9wZW5zIHRoZSBsaW5rIGRlc3RpbmF0aW9uXG4gICAgICAgICAgICBjYXNlIDI6IC8vIFBhcnQgb2YgdGhlIGxpbmsgZGVzdGluYXRpb25cbiAgICAgICAgICAgICAgbGlua0RldGFpbHNbMV0gPSBsaW5rRGV0YWlsc1sxXS5jb25jYXQoJygnKTsgXG4gICAgICAgICAgICAgIGlmICghbGlua0RldGFpbHNbMF0ubWF0Y2goLzwkLykpIHBhcmVudGhlc2lzTGV2ZWwrKzsgIFxuICAgICAgICAgICAgICBicmVhazsgXG4gICAgICAgICAgICBjYXNlIDM6IGxpbmtEZXRhaWxzLnB1c2goJycpOyAgLy8gIG9wZW5pbmcgZGVsaW1pdGVyIGZvciBsaW5rIHRpdGxlXG4gICAgICAgICAgICBjYXNlIDQ6IGxpbmtEZXRhaWxzLnB1c2goJygnKTsgYnJlYWs7Ly8gb3BlbmluZyBkZWxpbWl0ZXIgZm9yIGxpbmsgdGl0bGVcbiAgICAgICAgICAgIGNhc2UgNTogbGlua0RldGFpbHMucHVzaCgnJyk7IC8vIG9wZW5zIHRoZSBsaW5rIHRpdGxlLCBhZGQgZW1wdHkgdGl0bGUgY29udGVudCBhbmQgcHJvY2VlZCB0byBuZXh0IGNhc2UgXG4gICAgICAgICAgICBjYXNlIDY6Ly8gUGFydCBvZiB0aGUgbGluayB0aXRsZS4gVW4tZXNjYXBlZCBwYXJlbnRoZXNpcyBvbmx5IGFsbG93ZWQgaW4gXCIgb3IgJyBkZWxpbWl0ZWQgdGl0bGVcbiAgICAgICAgICAgICAgaWYgKGxpbmtEZXRhaWxzWzRdID09ICcoJykgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICBsaW5rRGV0YWlsc1s1XSA9IGxpbmtEZXRhaWxzWzVdLmNvbmNhdCgnKCcpOyBcbiAgICAgICAgICAgICAgYnJlYWs7IFxuICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGZhbHNlOyAvLyBBZnRlciBsaW5rIHRpdGxlIHdhcyBjbG9zZWQsIHdpdGhvdXQgY2xvc2luZyBwYXJlbnRoZXNpc1xuICAgICAgICAgIH1cbiAgICAgICAgICBjdXJyZW50T2Zmc2V0Kys7XG4gICAgICAgICAgY29udGludWUgaW5saW5lT3V0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcm9jZXNzIGNsb3NpbmcgcGFyZW50aGVzaXNcbiAgICAgICAgaWYgKHN0cmluZy5tYXRjaCgvXlxcKS8pKSB7XG4gICAgICAgICAgaWYgKGxpbmtEZXRhaWxzLmxlbmd0aCA8PSAyKSB7XG4gICAgICAgICAgICAvLyBXZSBhcmUgaW5zaWRlIHRoZSBsaW5rIGRlc3RpbmF0aW9uLiBQYXJlbnRoZXNlcyBoYXZlIHRvIGJlIG1hdGNoZWQgaWYgbm90IGluIGFuZ2xlIGJyYWNrZXRzXG4gICAgICAgICAgICB3aGlsZSAobGlua0RldGFpbHMubGVuZ3RoIDwgMikgbGlua0RldGFpbHMucHVzaCgnJyk7XG5cbiAgICAgICAgICAgIGlmICghbGlua0RldGFpbHNbMF0ubWF0Y2goLzwkLykpIHBhcmVudGhlc2lzTGV2ZWwtLTtcblxuICAgICAgICAgICAgaWYgKHBhcmVudGhlc2lzTGV2ZWwgPiAwKSB7XG4gICAgICAgICAgICAgIGxpbmtEZXRhaWxzWzFdID0gbGlua0RldGFpbHNbMV0uY29uY2F0KCcpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICB9IGVsc2UgaWYgKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA1IHx8IGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA2KSB7XG4gICAgICAgICAgICAvLyBXZSBhcmUgaW5zaWRlIHRoZSBsaW5rIHRpdGxlLiBcbiAgICAgICAgICAgIGlmIChsaW5rRGV0YWlsc1s0XSA9PSAnKCcpIHtcbiAgICAgICAgICAgICAgLy8gVGhpcyBjbG9zZXMgdGhlIGxpbmsgdGl0bGVcbiAgICAgICAgICAgICAgaWYgKGxpbmtEZXRhaWxzLmxlbmd0aCA9PSA1KSBsaW5rRGV0YWlscy5wdXNoKCcnKTtcbiAgICAgICAgICAgICAgbGlua0RldGFpbHMucHVzaCgnKScpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gSnVzdCByZWd1bGFyIG9sJyBjb250ZW50XG4gICAgICAgICAgICAgIGlmIChsaW5rRGV0YWlscy5sZW5ndGggPT0gNSkgbGlua0RldGFpbHMucHVzaCgnKScpO1xuICAgICAgICAgICAgICBlbHNlIGxpbmtEZXRhaWxzWzVdID0gbGlua0RldGFpbHNbNV0uY29uY2F0KCcpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlICB7XG4gICAgICAgICAgICBwYXJlbnRoZXNpc0xldmVsLS07IC8vIFRoaXMgc2hvdWxkIGRlY3JlYXNlIGl0IGZyb20gMSB0byAwLi4uXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHBhcmVudGhlc2lzTGV2ZWwgPT0gMCkge1xuICAgICAgICAgICAgLy8gTm8gaW52YWxpZCBjb25kaXRpb24sIGxldCdzIG1ha2Ugc3VyZSB0aGUgbGlua0RldGFpbHMgYXJyYXkgaXMgY29tcGxldGVcbiAgICAgICAgICAgIHdoaWxlIChsaW5rRGV0YWlscy5sZW5ndGggPCA3KSBsaW5rRGV0YWlscy5wdXNoKCcnKTtcbiAgICAgICAgICB9IFxuXG4gICAgICAgICAgY3VycmVudE9mZnNldCsrO1xuICAgICAgICAgIGNvbnRpbnVlIGlubGluZU91dGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQW55IG9sZCBjaGFyYWN0ZXJcbiAgICAgICAgY2FwID0gL14uLy5leGVjKHN0cmluZyk7XG4gICAgICAgIGlmIChjYXApIHtcbiAgICAgICAgICBzd2l0Y2ggKGxpbmtEZXRhaWxzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOiBsaW5rRGV0YWlscy5wdXNoKCcnKTsgLy8gdGhpcyBvcGVucyB0aGUgbGluayBkZXN0aW5hdGlvbiwgYWRkIGVtcHR5IG9wZW5pbmcgZGVsaW1pdGVyIGFuZCBwcm9jZWVkIHRvIG5leHQgY2FzZVxuICAgICAgICAgICAgY2FzZSAxOiBsaW5rRGV0YWlscy5wdXNoKGNhcFswXSk7IGJyZWFrOyAvLyBUaGlzIG9wZW5zIHRoZSBsaW5rIGRlc3RpbmF0aW9uLCBhcHBlbmQgaXRcbiAgICAgICAgICAgIGNhc2UgMjogbGlua0RldGFpbHNbMV0gPSBsaW5rRGV0YWlsc1sxXS5jb25jYXQoY2FwWzBdKTsgYnJlYWs7IC8vIFBhcnQgb2YgdGhlIGxpbmsgZGVzdGluYXRpb25cbiAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIGZhbHNlOyAvLyBMYWNraW5nIG9wZW5pbmcgZGVsaW1pdGVyIGZvciBsaW5rIHRpdGxlXG4gICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBmYWxzZTsgLy8gTGNha2luZyBvcGVuaW5nIGRlbGltaXRlciBmb3IgbGluayB0aXRsZVxuICAgICAgICAgICAgY2FzZSA1OiBsaW5rRGV0YWlscy5wdXNoKCcnKTsgLy8gVGhpcyBvcGVucyB0aGUgbGluayB0aXRsZVxuICAgICAgICAgICAgY2FzZSA2OiBsaW5rRGV0YWlsc1s1XSA9IGxpbmtEZXRhaWxzWzVdLmNvbmNhdChjYXBbMF0pOyBicmVhazsgLy8gUGFydCBvZiB0aGUgbGluayB0aXRsZVxuICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGZhbHNlOyAvLyBBZnRlciBsaW5rIHRpdGxlIHdhcyBjbG9zZWQsIHdpdGhvdXQgY2xvc2luZyBwYXJlbnRoZXNpc1xuICAgICAgICAgIH1cbiAgICAgICAgICBjdXJyZW50T2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgICAgY29udGludWUgaW5saW5lT3V0ZXI7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgXCJJbmZpbml0ZSBsb29wXCI7IC8vIHdlIHNob3VsZCBuZXZlciBnZXQgaGVyZSBzaW5jZSB0aGUgbGFzdCB0ZXN0IG1hdGNoZXMgYW55IGNoYXJhY3RlclxuICAgICAgfVxuICAgICAgaWYgKHBhcmVudGhlc2lzTGV2ZWwgPiAwKSByZXR1cm4gZmFsc2U7IC8vIFBhcmVudGhlcyhlcykgbm90IGNsb3NlZFxuXG4gICAgfVxuXG4gICAgaWYgKGxpbmtSZWYgIT09IGZhbHNlKSB7XG4gICAgICAvLyBSZWYgbGluazsgY2hlY2sgdGhhdCBsaW5rUmVmIGlzIHZhbGlkXG4gICAgICBsZXQgdmFsaWQgPSBmYWxzZTtcbiAgICAgIGZvciAobGV0IGxhYmVsIG9mIHRoaXMubGlua0xhYmVscykge1xuICAgICAgICBpZiAobGFiZWwgPT0gbGlua1JlZikge1xuICAgICAgICAgIHZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV0IGxhYmVsID0gdmFsaWQgPyBcIlRNTGlua0xhYmVsIFRNTGlua0xhYmVsX1ZhbGlkXCIgOiBcIlRNTGlua0xhYmVsIFRNTGlua0xhYmVsX0ludmFsaWRcIlxuICAgICAgbGV0IG91dHB1dCA9IGA8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPiR7b3BlbmVyfTwvc3Bhbj48c3BhbiBjbGFzcz1cIiR7dHlwZX0gJHsobGlua0xhYmVsLmxlbmd0aCA8IDMgfHwgIWxpbmtMYWJlbFsxXSkgPyBsYWJlbCA6IFwiXCJ9XCI+JHt0aGlzLnByb2Nlc3NJbmxpbmVTdHlsZXMobGlua1RleHQpfTwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPl08L3NwYW4+YDtcblxuICAgICAgaWYgKGxpbmtMYWJlbC5sZW5ndGggPj0gMykge1xuICAgICAgICBvdXRwdXQgPSBvdXRwdXQuY29uY2F0KFxuICAgICAgICAgIGA8c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPiR7bGlua0xhYmVsWzBdfTwvc3Bhbj5gLFxuICAgICAgICAgIGA8c3BhbiBjbGFzcz1cIiR7bGFiZWx9XCI+JHtsaW5rTGFiZWxbMV19PC9zcGFuPmAsXG4gICAgICAgICAgYDxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya18ke3R5cGV9XCI+JHtsaW5rTGFiZWxbMl19PC9zcGFuPmBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG91dHB1dCA6IG91dHB1dCxcbiAgICAgICAgY2hhckNvdW50IDogIGN1cnJlbnRPZmZzZXRcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAobGlua0RldGFpbHMpIHtcbiAgICAgIC8vIElubGluZSBsaW5rXG5cbiAgICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiwgYnV0IGJldHRlciBzYWZlIHRoYW4gc29ycnkuXG4gICAgICB3aGlsZSAobGlua0RldGFpbHMubGVuZ3RoIDwgNykge1xuICAgICAgICBsaW5rRGV0YWlscy5wdXNoKCcnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3V0cHV0OiBgPHNwYW4gY2xhc3M9XCJUTU1hcmsgVE1NYXJrXyR7dHlwZX1cIj4ke29wZW5lcn08L3NwYW4+PHNwYW4gY2xhc3M9XCIke3R5cGV9XCI+JHt0aGlzLnByb2Nlc3NJbmxpbmVTdHlsZXMobGlua1RleHQpfTwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPl0oJHtsaW5rRGV0YWlsc1swXX08L3NwYW4+PHNwYW4gY2xhc3M9XCIke3R5cGV9RGVzdGluYXRpb25cIj4ke2xpbmtEZXRhaWxzWzFdfTwvc3Bhbj48c3BhbiBjbGFzcz1cIlRNTWFyayBUTU1hcmtfJHt0eXBlfVwiPiR7bGlua0RldGFpbHNbMl19JHtsaW5rRGV0YWlsc1szXX0ke2xpbmtEZXRhaWxzWzRdfTwvc3Bhbj48c3BhbiBjbGFzcz1cIiR7dHlwZX1UaXRsZVwiPiR7bGlua0RldGFpbHNbNV19PC9zcGFuPjxzcGFuIGNsYXNzPVwiVE1NYXJrIFRNTWFya18ke3R5cGV9XCI+JHtsaW5rRGV0YWlsc1s2XX0pPC9zcGFuPmAsXG4gICAgICAgIGNoYXJDb3VudDogY3VycmVudE9mZnNldFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBcbiAgLyoqXG4gICAqIEZvcm1hdHMgYSBtYXJrZG93biBzdHJpbmcgYXMgSFRNTCwgdXNpbmcgTWFya2Rvd24gaW5saW5lIGZvcm1hdHRpbmcuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW5hbFN0cmluZyBUaGUgaW5wdXQgKG1hcmtkb3duIGlubGluZSBmb3JtYXR0ZWQpIHN0cmluZ1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgSFRNTCBmb3JtYXR0ZWQgb3V0cHV0XG4gICAqL1xuICBwcm9jZXNzSW5saW5lU3R5bGVzKG9yaWdpbmFsU3RyaW5nKSB7XG4gICAgbGV0IHByb2Nlc3NlZCA9ICcnO1xuICAgIGxldCBzdGFjayA9IFtdOyAvLyBTdGFjayBpcyBhbiBhcnJheSBvZiBvYmplY3RzIG9mIHRoZSBmb3JtYXQ6IHtkZWxpbWl0ZXIsIGRlbGltU3RyaW5nLCBjb3VudCwgb3V0cHV0fVxuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGxldCBzdHJpbmcgPSBvcmlnaW5hbFN0cmluZztcbiAgXG4gIFxuICAgIG91dGVyOiB3aGlsZSAoc3RyaW5nKSB7XG4gICAgICAvLyBQcm9jZXNzIHNpbXBsZSBydWxlcyAobm9uLWRlbGltaXRlcilcbiAgICAgIGZvciAobGV0IHJ1bGUgb2YgWydlc2NhcGUnLCAnY29kZScsICdhdXRvbGluaycsICdodG1sJ10pIHtcbiAgICAgICAgbGV0IGNhcCA9IGlubGluZUdyYW1tYXJbcnVsZV0ucmVnZXhwLmV4ZWMoc3RyaW5nKTtcbiAgICAgICAgaWYgKGNhcCkge1xuICAgICAgICAgIHN0cmluZyA9IHN0cmluZy5zdWJzdHIoY2FwWzBdLmxlbmd0aCk7XG4gICAgICAgICAgb2Zmc2V0ICs9IGNhcFswXS5sZW5ndGg7XG4gICAgICAgICAgcHJvY2Vzc2VkICs9IGlubGluZUdyYW1tYXJbcnVsZV0ucmVwbGFjZW1lbnRcbiAgICAgICAgICAgIC8vIC5yZXBsYWNlKC9cXCRcXCQoWzEtOV0pL2csIChzdHIsIHAxKSA9PiBwcm9jZXNzSW5saW5lU3R5bGVzKGNhcFtwMV0pKSAvLyB0b2RvIHJlY3Vyc2l2ZSBjYWxsaW5nXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwkKFsxLTldKS9nLCAoc3RyLCBwMSkgPT4gaHRtbGVzY2FwZShjYXBbcDFdKSk7XG4gICAgICAgICAgY29udGludWUgb3V0ZXI7IFxuICAgICAgICB9XG4gICAgICB9XG4gIFxuICAgICAgLy8gQ2hlY2sgZm9yIGxpbmtzIC8gaW1hZ2VzXG4gICAgICBsZXQgcG90ZW50aWFsTGluayA9IHN0cmluZy5tYXRjaChpbmxpbmVHcmFtbWFyLmxpbmtPcGVuLnJlZ2V4cCk7XG4gICAgICBsZXQgcG90ZW50aWFsSW1hZ2UgPSBzdHJpbmcubWF0Y2goaW5saW5lR3JhbW1hci5pbWFnZU9wZW4ucmVnZXhwKTtcbiAgICAgIGlmIChwb3RlbnRpYWxJbWFnZSB8fCBwb3RlbnRpYWxMaW5rKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLnBhcnNlTGlua09ySW1hZ2Uoc3RyaW5nLCBwb3RlbnRpYWxJbWFnZSk7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICBwcm9jZXNzZWQgPSBgJHtwcm9jZXNzZWR9JHtyZXN1bHQub3V0cHV0fWA7XG4gICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnN1YnN0cihyZXN1bHQuY2hhckNvdW50KTtcbiAgICAgICAgICBvZmZzZXQgKz0gcmVzdWx0LmNoYXJDb3VudDtcbiAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgXG4gICAgICAvLyBDaGVjayBmb3IgZW0gLyBzdHJvbmcgZGVsaW1pdGVyc1xuICAgICAgbGV0IGNhcCA9IC8oXlxcKispfCheXyspLy5leGVjKHN0cmluZyk7XG4gICAgICBpZiAoY2FwKSB7XG4gICAgICAgIGxldCBkZWxpbUNvdW50ID0gY2FwWzBdLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZGVsaW1TdHJpbmcgPSBjYXBbMF07XG4gICAgICAgIGNvbnN0IGN1cnJlbnREZWxpbWl0ZXIgPSBjYXBbMF1bMF07IC8vIFRoaXMgc2hvdWxkIGJlICogb3IgX1xuICBcbiAgICAgICAgc3RyaW5nID0gc3RyaW5nLnN1YnN0cihjYXBbMF0ubGVuZ3RoKTtcbiAgICAgIFxuICAgICAgICAvLyBXZSBoYXZlIGEgZGVsaW1pdGVyIHJ1bi4gTGV0J3MgY2hlY2sgaWYgaXQgY2FuIG9wZW4gb3IgY2xvc2UgYW4gZW1waGFzaXMuXG4gICAgICAgIFxuICAgICAgICBjb25zdCBwcmVjZWRpbmcgPSAob2Zmc2V0ID4gMCkgPyBvcmlnaW5hbFN0cmluZy5zdWJzdHIoMCwgb2Zmc2V0KSA6ICcgJzsgLy8gYmVnaW5uaW5nIGFuZCBlbmQgb2YgbGluZSBjb3VudCBhcyB3aGl0ZXNwYWNlXG4gICAgICAgIGNvbnN0IGZvbGxvd2luZyA9IChvZmZzZXQgKyBjYXBbMF0ubGVuZ3RoIDwgb3JpZ2luYWxTdHJpbmcubGVuZ3RoKSA/IHN0cmluZyA6ICcgJztcbiAgXG4gICAgICAgIGNvbnN0IHB1bmN0dWF0aW9uRm9sbG93cyA9IGZvbGxvd2luZy5tYXRjaChwdW5jdHVhdGlvbkxlYWRpbmcpO1xuICAgICAgICBjb25zdCBwdW5jdHVhdGlvblByZWNlZGVzID0gcHJlY2VkaW5nLm1hdGNoKHB1bmN0dWF0aW9uVHJhaWxpbmcpO1xuICAgICAgICBjb25zdCB3aGl0ZXNwYWNlRm9sbG93cyA9IGZvbGxvd2luZy5tYXRjaCgvXlxccy8pO1xuICAgICAgICBjb25zdCB3aGl0ZXNwYWNlUHJlY2VkZXMgPSBwcmVjZWRpbmcubWF0Y2goL1xccyQvKTtcbiAgXG4gICAgICAgIC8vIFRoZXNlIGFyZSB0aGUgcnVsZXMgZm9yIHJpZ2h0LWZsYW5raW5nIGFuZCBsZWZ0LWZsYW5raW5nIGRlbGltaXRlciBydW5zIGFzIHBlciBDb21tb25NYXJrIHNwZWNcbiAgICAgICAgbGV0IGNhbk9wZW4gPSAhd2hpdGVzcGFjZUZvbGxvd3MgJiYgKCFwdW5jdHVhdGlvbkZvbGxvd3MgfHwgISF3aGl0ZXNwYWNlUHJlY2VkZXMgfHwgISFwdW5jdHVhdGlvblByZWNlZGVzKTtcbiAgICAgICAgbGV0IGNhbkNsb3NlID0gIXdoaXRlc3BhY2VQcmVjZWRlcyAmJiAoIXB1bmN0dWF0aW9uUHJlY2VkZXMgfHwgISF3aGl0ZXNwYWNlRm9sbG93cyB8fCAhIXB1bmN0dWF0aW9uRm9sbG93cyk7XG4gIFxuICAgICAgICAvLyBVbmRlcnNjb3JlcyBoYXZlIG1vcmUgZGV0YWlsZWQgcnVsZXMgdGhhbiBqdXN0IGJlaW5nIHBhcnQgb2YgbGVmdC0gb3IgcmlnaHQtZmxhbmtpbmcgcnVuOlxuICAgICAgICBpZiAoY3VycmVudERlbGltaXRlciA9PSAnXycgJiYgY2FuT3BlbiAmJiBjYW5DbG9zZSkge1xuICAgICAgICAgIGNhbk9wZW4gPSBwdW5jdHVhdGlvblByZWNlZGVzO1xuICAgICAgICAgIGNhbkNsb3NlID0gcHVuY3R1YXRpb25Gb2xsb3dzO1xuICAgICAgICB9XG4gIFxuICAgICAgICAvLyBJZiB0aGUgZGVsaW1pdGVyIGNhbiBjbG9zZSwgY2hlY2sgdGhlIHN0YWNrIGlmIHRoZXJlJ3Mgc29tZXRoaW5nIGl0IGNhbiBjbG9zZVxuICAgICAgICBpZiAoY2FuQ2xvc2UpIHtcbiAgICAgICAgICBsZXQgc3RhY2tQb2ludGVyID0gc3RhY2subGVuZ3RoIC0gMTtcbiAgICAgICAgICAvLyBTZWUgaWYgd2UgY2FuIGZpbmQgYSBtYXRjaGluZyBvcGVuaW5nIGRlbGltaXRlciwgbW92ZSBkb3duIHRocm91Z2ggdGhlIHN0YWNrXG4gICAgICAgICAgd2hpbGUgKGRlbGltQ291bnQgJiYgc3RhY2tQb2ludGVyID49IDApIHtcbiAgICAgICAgICAgIGlmIChzdGFja1tzdGFja1BvaW50ZXJdLmRlbGltaXRlciA9PSBjdXJyZW50RGVsaW1pdGVyKSB7XG4gICAgICAgICAgICAgIC8vIFdlIGZvdW5kIGEgbWF0Y2hpbmcgZGVsaW1pdGVyLCBsZXQncyBjb25zdHJ1Y3QgdGhlIGZvcm1hdHRlZCBzdHJpbmdcbiAgXG4gICAgICAgICAgICAgIC8vIEZpcnN0bHksIGlmIHdlIHNraXBwZWQgYW55IHN0YWNrIGxldmVscywgcG9wIHRoZW0gaW1tZWRpYXRlbHkgKG5vbi1tYXRjaGluZyBkZWxpbWl0ZXJzKVxuICAgICAgICAgICAgICB3aGlsZSAoc3RhY2tQb2ludGVyIDwgc3RhY2subGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gc3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc2VkID0gYCR7ZW50cnkub3V0cHV0fSR7ZW50cnkuZGVsaW1TdHJpbmcuc3Vic3RyKDAsIGVudHJ5LmNvdW50KX0ke3Byb2Nlc3NlZH1gO1xuICAgICAgICAgICAgICB9XG4gIFxuICAgICAgICAgICAgICAvLyBUaGVuLCBmb3JtYXQgdGhlIHN0cmluZ1xuICAgICAgICAgICAgICBpZiAoZGVsaW1Db3VudCA+PSAyICYmIHN0YWNrW3N0YWNrUG9pbnRlcl0uY291bnQgPj0gMikge1xuICAgICAgICAgICAgICAgIC8vIFN0cm9uZ1xuICAgICAgICAgICAgICAgIHByb2Nlc3NlZCA9IGA8c3BhbiBjbGFzcz1cIlRNTWFya1wiPiR7Y3VycmVudERlbGltaXRlcn0ke2N1cnJlbnREZWxpbWl0ZXJ9PC9zcGFuPjxzdHJvbmcgY2xhc3M9XCJUTVN0cm9uZ1wiPiR7cHJvY2Vzc2VkfTwvc3Ryb25nPjxzcGFuIGNsYXNzPVwiVE1NYXJrXCI+JHtjdXJyZW50RGVsaW1pdGVyfSR7Y3VycmVudERlbGltaXRlcn08L3NwYW4+YDtcbiAgICAgICAgICAgICAgICBkZWxpbUNvdW50IC09IDI7XG4gICAgICAgICAgICAgICAgc3RhY2tbc3RhY2tQb2ludGVyXS5jb3VudCAtPSAyO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEVtXG4gICAgICAgICAgICAgICAgcHJvY2Vzc2VkID0gYDxzcGFuIGNsYXNzPVwiVE1NYXJrXCI+JHtjdXJyZW50RGVsaW1pdGVyfTwvc3Bhbj48ZW0gY2xhc3M9XCJUTUVtXCI+JHtwcm9jZXNzZWR9PC9lbT48c3BhbiBjbGFzcz1cIlRNTWFya1wiPiR7Y3VycmVudERlbGltaXRlcn08L3NwYW4+YDtcbiAgICAgICAgICAgICAgICBkZWxpbUNvdW50IC09IDE7XG4gICAgICAgICAgICAgICAgc3RhY2tbc3RhY2tQb2ludGVyXS5jb3VudCAtPSAxO1xuICAgICAgICAgICAgICB9XG4gIFxuICAgICAgICAgICAgICAvLyBJZiB0aGF0IHN0YWNrIGxldmVsIGlzIGVtcHR5IG5vdywgcG9wIGl0XG4gICAgICAgICAgICAgIGlmIChzdGFja1tzdGFja1BvaW50ZXJdLmNvdW50ID09IDApIHtcbiAgICAgICAgICAgICAgICBsZXQgZW50cnkgPSBzdGFjay5wb3AoKTtcbiAgICAgICAgICAgICAgICBwcm9jZXNzZWQgPSBgJHtlbnRyeS5vdXRwdXR9JHtwcm9jZXNzZWR9YFxuICAgICAgICAgICAgICAgIHN0YWNrUG9pbnRlci0tO1xuICAgICAgICAgICAgICB9XG4gIFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gVGhpcyBzdGFjayBsZXZlbCdzIGRlbGltaXRlciB0eXBlIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnQgZGVsaW1pdGVyIHR5cGVcbiAgICAgICAgICAgICAgLy8gR28gZG93biBvbmUgbGV2ZWwgaW4gdGhlIHN0YWNrXG4gICAgICAgICAgICAgIHN0YWNrUG9pbnRlci0tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBJZiB0aGVyZSBhcmUgc3RpbGwgZGVsaW1pdGVycyBsZWZ0LCBhbmQgdGhlIGRlbGltaXRlciBydW4gY2FuIG9wZW4sIHB1c2ggaXQgb24gdGhlIHN0YWNrXG4gICAgICAgIGlmIChkZWxpbUNvdW50ICYmIGNhbk9wZW4pIHtcbiAgICAgICAgICBzdGFjay5wdXNoKHtcbiAgICAgICAgICAgIGRlbGltaXRlcjogY3VycmVudERlbGltaXRlcixcbiAgICAgICAgICAgIGRlbGltU3RyaW5nOiBkZWxpbVN0cmluZyxcbiAgICAgICAgICAgIGNvdW50OiBkZWxpbUNvdW50LFxuICAgICAgICAgICAgb3V0cHV0OiBwcm9jZXNzZWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwcm9jZXNzZWQgPSAnJzsgLy8gQ3VycmVudCBmb3JtYXR0ZWQgb3V0cHV0IGhhcyBiZWVuIHB1c2hlZCBvbiB0aGUgc3RhY2sgYW5kIHdpbGwgYmUgcHJlcGVuZGVkIHdoZW4gdGhlIHN0YWNrIGdldHMgcG9wcGVkXG4gICAgICAgICAgZGVsaW1Db3VudCA9IDA7XG4gICAgICAgIH1cbiAgXG4gICAgICAgIC8vIEFueSBkZWxpbWl0ZXJzIHRoYXQgYXJlIGxlZnQgKGNsb3NpbmcgdW5tYXRjaGVkKSBhcmUgYXBwZW5kZWQgdG8gdGhlIG91dHB1dC5cbiAgICAgICAgaWYgKGRlbGltQ291bnQpIHtcbiAgICAgICAgICBwcm9jZXNzZWQgPSBgJHtwcm9jZXNzZWR9JHtkZWxpbVN0cmluZy5zdWJzdHIoMCxkZWxpbUNvdW50KX1gO1xuICAgICAgICB9XG4gIFxuICAgICAgICBvZmZzZXQgKz0gY2FwWzBdLmxlbmd0aDtcbiAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGZvciBzdHJpa2V0aHJvdWdoIGRlbGltaXRlclxuICAgICAgY2FwID0gL15+fi8uZXhlYyhzdHJpbmcpO1xuICAgICAgaWYgKGNhcCkge1xuICAgICAgICBsZXQgY29uc3VtZWQgPSBmYWxzZTtcbiAgICAgICAgbGV0IHN0YWNrUG9pbnRlciA9IHN0YWNrLmxlbmd0aCAtIDE7XG4gICAgICAgIC8vIFNlZSBpZiB3ZSBjYW4gZmluZCBhIG1hdGNoaW5nIG9wZW5pbmcgZGVsaW1pdGVyLCBtb3ZlIGRvd24gdGhyb3VnaCB0aGUgc3RhY2tcbiAgICAgICAgd2hpbGUgKCFjb25zdW1lZCAmJiBzdGFja1BvaW50ZXIgPj0gMCkge1xuICAgICAgICAgIGlmIChzdGFja1tzdGFja1BvaW50ZXJdLmRlbGltaXRlciA9PSAnficpIHtcbiAgICAgICAgICAgIC8vIFdlIGZvdW5kIGEgbWF0Y2hpbmcgZGVsaW1pdGVyLCBsZXQncyBjb25zdHJ1Y3QgdGhlIGZvcm1hdHRlZCBzdHJpbmdcblxuICAgICAgICAgICAgLy8gRmlyc3RseSwgaWYgd2Ugc2tpcHBlZCBhbnkgc3RhY2sgbGV2ZWxzLCBwb3AgdGhlbSBpbW1lZGlhdGVseSAobm9uLW1hdGNoaW5nIGRlbGltaXRlcnMpXG4gICAgICAgICAgICB3aGlsZSAoc3RhY2tQb2ludGVyIDwgc3RhY2subGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICBjb25zdCBlbnRyeSA9IHN0YWNrLnBvcCgpO1xuICAgICAgICAgICAgICBwcm9jZXNzZWQgPSBgJHtlbnRyeS5vdXRwdXR9JHtlbnRyeS5kZWxpbVN0cmluZy5zdWJzdHIoMCwgZW50cnkuY291bnQpfSR7cHJvY2Vzc2VkfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFRoZW4sIGZvcm1hdCB0aGUgc3RyaW5nXG4gICAgICAgICAgICBwcm9jZXNzZWQgPSBgPHNwYW4gY2xhc3M9XCJUTU1hcmtcIj5+fjwvc3Bhbj48ZGVsIGNsYXNzPVwiVE1TdHJpa2V0aHJvdWdoXCI+JHtwcm9jZXNzZWR9PC9kZWw+PHNwYW4gY2xhc3M9XCJUTU1hcmtcIj5+fjwvc3Bhbj5gO1xuICAgICAgICAgICAgbGV0IGVudHJ5ID0gc3RhY2sucG9wKCk7XG4gICAgICAgICAgICBwcm9jZXNzZWQgPSBgJHtlbnRyeS5vdXRwdXR9JHtwcm9jZXNzZWR9YFxuICAgICAgICAgICAgY29uc3VtZWQgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUaGlzIHN0YWNrIGxldmVsJ3MgZGVsaW1pdGVyIHR5cGUgZG9lc24ndCBtYXRjaCB0aGUgY3VycmVudCBkZWxpbWl0ZXIgdHlwZVxuICAgICAgICAgICAgLy8gR28gZG93biBvbmUgbGV2ZWwgaW4gdGhlIHN0YWNrXG4gICAgICAgICAgICBzdGFja1BvaW50ZXItLTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBzdGlsbCBkZWxpbWl0ZXJzIGxlZnQsIGFuZCB0aGUgZGVsaW1pdGVyIHJ1biBjYW4gb3BlbiwgcHVzaCBpdCBvbiB0aGUgc3RhY2tcbiAgICAgICAgaWYgKCFjb25zdW1lZCkge1xuICAgICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgICAgZGVsaW1pdGVyOiAnficsXG4gICAgICAgICAgICBkZWxpbVN0cmluZzogJ35+JyxcbiAgICAgICAgICAgIGNvdW50OiAyLFxuICAgICAgICAgICAgb3V0cHV0OiBwcm9jZXNzZWRcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBwcm9jZXNzZWQgPSAnJzsgLy8gQ3VycmVudCBmb3JtYXR0ZWQgb3V0cHV0IGhhcyBiZWVuIHB1c2hlZCBvbiB0aGUgc3RhY2sgYW5kIHdpbGwgYmUgcHJlcGVuZGVkIHdoZW4gdGhlIHN0YWNrIGdldHMgcG9wcGVkXG4gICAgICAgIH1cblxuICAgICAgICBvZmZzZXQgKz0gY2FwWzBdLmxlbmd0aDtcbiAgICAgICAgc3RyaW5nID0gc3RyaW5nLnN1YnN0cihjYXBbMF0ubGVuZ3RoKTsgXG4gICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgfVxuICAgICAgXG4gIFxuICAgICAgLy8gUHJvY2VzcyAnZGVmYXVsdCcgcnVsZVxuICAgICAgY2FwID0gaW5saW5lR3JhbW1hci5kZWZhdWx0LnJlZ2V4cC5leGVjKHN0cmluZyk7XG4gICAgICBpZiAoY2FwKSB7XG4gICAgICAgIHN0cmluZyA9IHN0cmluZy5zdWJzdHIoY2FwWzBdLmxlbmd0aCk7XG4gICAgICAgIG9mZnNldCArPSBjYXBbMF0ubGVuZ3RoO1xuICAgICAgICBwcm9jZXNzZWQgKz0gaW5saW5lR3JhbW1hci5kZWZhdWx0LnJlcGxhY2VtZW50XG4gICAgICAgICAgLnJlcGxhY2UoL1xcJChbMS05XSkvZywgKHN0ciwgcDEpID0+IGh0bWxlc2NhcGUoY2FwW3AxXSkpO1xuICAgICAgICBjb250aW51ZSBvdXRlcjsgXG4gICAgICB9XG4gICAgICB0aHJvdyAnSW5maW5pdGUgbG9vcCEnO1xuICAgIH1cbiAgXG4gICAgLy8gRW1wdHkgdGhlIHN0YWNrLCBhbnkgb3BlbmluZyBkZWxpbWl0ZXJzIGFyZSB1bnVzZWRcbiAgICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7XG4gICAgICBjb25zdCBlbnRyeSA9IHN0YWNrLnBvcCgpO1xuICAgICAgcHJvY2Vzc2VkID0gYCR7ZW50cnkub3V0cHV0fSR7ZW50cnkuZGVsaW1TdHJpbmcuc3Vic3RyKDAsIGVudHJ5LmNvdW50KX0ke3Byb2Nlc3NlZH1gO1xuICAgIH1cbiAgXG4gICAgcmV0dXJuIHByb2Nlc3NlZDtcbiAgfVxuXG4gIC8qKiBcbiAgICogQ2xlYXJzIHRoZSBsaW5lIGRpcnR5IGZsYWcgKHJlc2V0cyBpdCB0byBhbiBhcnJheSBvZiBmYWxzZSlcbiAgICovXG4gIGNsZWFyRGlydHlGbGFnKCkge1xuICAgIHRoaXMubGluZURpcnR5ID0gbmV3IEFycmF5KHRoaXMubGluZXMubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGluZURpcnR5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmxpbmVEaXJ0eVtpXSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBjbGFzcyBwcm9wZXJ0aWVzIChsaW5lcywgbGluZUVsZW1lbnRzKSBmcm9tIHRoZSBET00uXG4gICAqIEByZXR1cm5zIHRydWUgaWYgY29udGVudHMgY2hhbmdlZFxuICAgKi9cbiAgdXBkYXRlTGluZUNvbnRlbnRzKCkge1xuICAgIC8vIHRoaXMubGluZURpcnR5ID0gW107IFxuICAgIC8vIENoZWNrIGlmIHdlIGhhdmUgY2hhbmdlZCBhbnl0aGluZyBhYm91dCB0aGUgbnVtYmVyIG9mIGxpbmVzIChpbnNlcnRlZCBvciBkZWxldGVkIGEgcGFyYWdyYXBoKVxuICAgIC8vIDwgMCBtZWFucyBsaW5lKHMpIHJlbW92ZWQ7ID4gMCBtZWFucyBsaW5lKHMpIGFkZGVkXG4gICAgbGV0IGxpbmVEZWx0YSA9IHRoaXMuZS5jaGlsZEVsZW1lbnRDb3VudCAtIHRoaXMubGluZXMubGVuZ3RoO1xuICAgIGlmIChsaW5lRGVsdGEpIHtcbiAgICAgIC8vIHl1cC4gTGV0J3MgdHJ5IGhvdyBtdWNoIHdlIGNhbiBzYWx2YWdlIChmaW5kIG91dCB3aGljaCBsaW5lcyBmcm9tIGJlZ2lubmluZyBhbmQgZW5kIHdlcmUgdW5jaGFuZ2VkKVxuICAgICAgLy8gRmluZCBsaW5lcyBmcm9tIHRoZSBiZWdpbm5pbmcgdGhhdCBoYXZlbid0IGNoYW5nZWQuLi5cbiAgICAgIGxldCBmaXJzdENoYW5nZWRMaW5lID0gMDtcbiAgICAgIHdoaWxlIChcbiAgICAgICAgICBmaXJzdENoYW5nZWRMaW5lIDw9IHRoaXMubGluZXMubGVuZ3RoIFxuICAgICAgICAgICYmIGZpcnN0Q2hhbmdlZExpbmUgPD0gdGhpcy5saW5lRWxlbWVudHMubGVuZ3RoXG4gICAgICAgICAgJiYgdGhpcy5saW5lRWxlbWVudHNbZmlyc3RDaGFuZ2VkTGluZV0gLy8gQ2hlY2sgdGhhdCB0aGUgbGluZSBlbGVtZW50IGhhc24ndCBiZWVuIGRlbGV0ZWRcbiAgICAgICAgICAmJiB0aGlzLmxpbmVzW2ZpcnN0Q2hhbmdlZExpbmVdID09IHRoaXMubGluZUVsZW1lbnRzW2ZpcnN0Q2hhbmdlZExpbmVdLnRleHRDb250ZW50XG4gICAgICApIHtcbiAgICAgICAgZmlyc3RDaGFuZ2VkTGluZSsrO1xuICAgICAgfVxuXG4gICAgICAvLyBFbmQgYWxzbyBmcm9tIHRoZSBlbmRcbiAgICAgIGxldCBsYXN0Q2hhbmdlZExpbmUgPSAtMTtcbiAgICAgIHdoaWxlIChcbiAgICAgICAgICAtbGFzdENoYW5nZWRMaW5lIDwgdGhpcy5saW5lcy5sZW5ndGggXG4gICAgICAgICAgJiYgLWxhc3RDaGFuZ2VkTGluZSA8IHRoaXMubGluZUVsZW1lbnRzLmxlbmd0aFxuICAgICAgICAgICYmIHRoaXMubGluZXNbdGhpcy5saW5lcy5sZW5ndGggKyBsYXN0Q2hhbmdlZExpbmVdID09IHRoaXMubGluZUVsZW1lbnRzW3RoaXMubGluZUVsZW1lbnRzLmxlbmd0aCArIGxhc3RDaGFuZ2VkTGluZV0udGV4dENvbnRlbnRcbiAgICAgICkge1xuICAgICAgICBsYXN0Q2hhbmdlZExpbmUtLTtcbiAgICAgIH1cblxuICAgICAgbGV0IGxpbmVzVG9EZWxldGUgPSB0aGlzLmxpbmVzLmxlbmd0aCArIGxhc3RDaGFuZ2VkTGluZSArIDEgLSBmaXJzdENoYW5nZWRMaW5lO1xuICAgICAgaWYgKGxpbmVzVG9EZWxldGUgPCAtbGluZURlbHRhKSBsaW5lc1RvRGVsZXRlID0gLWxpbmVEZWx0YTtcbiAgICAgIGlmIChsaW5lc1RvRGVsZXRlIDwgMCkgbGluZXNUb0RlbGV0ZSA9IDA7XG5cbiAgICAgIGxldCBsaW5lc1RvQWRkID0gW107XG4gICAgICBmb3IgKGxldCBsID0gMDsgbCA8IGxpbmVzVG9EZWxldGUgKyBsaW5lRGVsdGE7IGwrKykge1xuICAgICAgICBsaW5lc1RvQWRkLnB1c2godGhpcy5saW5lRWxlbWVudHNbZmlyc3RDaGFuZ2VkTGluZSArIGxdLnRleHRDb250ZW50KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3BsaWNlTGluZXMoZmlyc3RDaGFuZ2VkTGluZSwgbGluZXNUb0RlbGV0ZSwgbGluZXNUb0FkZCwgZmFsc2UpO1xuICAgICAgXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vIGxpbmVzIGFkZGVkIG9yIHJlbW92ZWRcbiAgICAgIGZvciAobGV0IGxpbmUgPSAwOyBsaW5lIDwgdGhpcy5saW5lRWxlbWVudHMubGVuZ3RoOyBsaW5lKyspIHtcbiAgICAgICAgbGV0IGUgPSB0aGlzLmxpbmVFbGVtZW50c1tsaW5lXTtcbiAgICAgICAgbGV0IGN0ID0gZS50ZXh0Q29udGVudDtcbiAgICAgICAgaWYgKHRoaXMubGluZXNbbGluZV0gIT09IGN0KSB7XG4gICAgICAgICAgLy8gTGluZSBjaGFuZ2VkLCB1cGRhdGUgaXRcbiAgICAgICAgICB0aGlzLmxpbmVzW2xpbmVdID0gY3Q7XG4gICAgICAgICAgdGhpcy5saW5lRGlydHlbbGluZV0gPSB0cnVlOyBcbiAgICAgICAgfSBcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJvY2Vzc2VzIGEgbmV3IHBhcmFncmFwaC5cbiAgICogQHBhcmFtIHNlbCBUaGUgY3VycmVudCBzZWxlY3Rpb25cbiAgICovXG4gIHByb2Nlc3NOZXdQYXJhZ3JhcGgoc2VsKSB7XG4gICAgaWYgKCFzZWwpIHJldHVybjtcblxuICAgIC8vIFVwZGF0ZSBsaW5lcyBmcm9tIGNvbnRlbnRcbiAgICB0aGlzLnVwZGF0ZUxpbmVDb250ZW50cygpO1xuXG4gICAgbGV0IGNvbnRpbnVhYmxlVHlwZSA9IGZhbHNlO1xuICAgIC8vIExldCdzIHNlZSBpZiB3ZSBuZWVkIHRvIGNvbnRpbnVlIGEgbGlzdFxuXG4gICAgbGV0IGNoZWNrTGluZSA9IHNlbC5jb2wgPiAwID8gc2VsLnJvdyA6IHNlbC5yb3cgLSAxO1xuICAgIHN3aXRjaCAodGhpcy5saW5lVHlwZXNbY2hlY2tMaW5lXSkge1xuICAgICAgY2FzZSAnVE1VTCc6IGNvbnRpbnVhYmxlVHlwZSA9ICdUTVVMJzsgYnJlYWs7XG4gICAgICBjYXNlICdUTU9MJzogY29udGludWFibGVUeXBlID0gJ1RNT0wnOyBicmVhaztcbiAgICAgIGNhc2UgJ1RNSW5kZW50ZWRDb2RlJzogY29udGludWFibGVUeXBlID0gJ1RNSW5kZW50ZWRDb2RlJzsgYnJlYWs7XG4gICAgfVxuXG4gICAgbGV0IGxpbmVzID0gdGhpcy5saW5lc1tzZWwucm93XS5yZXBsYWNlKC9cXG5cXG4kLywgJ1xcbicpLnNwbGl0KC8oPzpcXHJcXG58XFxufFxccikvKTtcbiAgICBpZiAobGluZXMubGVuZ3RoID09IDEpIHtcbiAgICAgIC8vIE5vIG5ldyBsaW5lXG4gICAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zcGxpY2VMaW5lcyhzZWwucm93LCAxLCBsaW5lcywgdHJ1ZSk7XG4gICAgc2VsLnJvdysrO1xuICAgIHNlbC5jb2wgPSAwO1xuXG4gICAgaWYgKGNvbnRpbnVhYmxlVHlwZSkge1xuICAgICAgLy8gQ2hlY2sgaWYgdGhlIHByZXZpb3VzIGxpbmUgd2FzIG5vbi1lbXB0eVxuICAgICAgbGV0IGNhcHR1cmUgPSBsaW5lR3JhbW1hcltjb250aW51YWJsZVR5cGVdLnJlZ2V4cC5leGVjKHRoaXMubGluZXNbc2VsLnJvdyAtIDFdKTtcbiAgICAgIGlmIChjYXB0dXJlKSB7XG4gICAgICAgIC8vIENvbnZlbnRpb246IGNhcHR1cmVbMV0gaXMgdGhlIGxpbmUgdHlwZSBtYXJrZXIsIGNhcHR1cmVbMl0gaXMgdGhlIGNvbnRlbnRcbiAgICAgICAgaWYgKGNhcHR1cmVbMl0pIHtcbiAgICAgICAgICAvLyBQcmV2aW91cyBsaW5lIGhhcyBjb250ZW50LCBjb250aW51ZSB0aGUgY29udGludWFibGUgdHlwZVxuXG4gICAgICAgICAgLy8gSGFjayBmb3IgT0w6IGluY3JlbWVudCBudW1iZXJcbiAgICAgICAgICBpZiAoY29udGludWFibGVUeXBlID09ICdUTU9MJykge1xuICAgICAgICAgICAgY2FwdHVyZVsxXSA9IGNhcHR1cmVbMV0ucmVwbGFjZSgvXFxkezEsOX0vLCAocmVzdWx0KSA9PiB7IHJldHVybiBwYXJzZUludChyZXN1bHRbMF0pICsgMX0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmxpbmVzW3NlbC5yb3ddID0gYCR7Y2FwdHVyZVsxXX0ke3RoaXMubGluZXNbc2VsLnJvd119YDtcbiAgICAgICAgICB0aGlzLmxpbmVEaXJ0eVtzZWwucm93XSA9IHRydWU7XG4gICAgICAgICAgc2VsLmNvbCA9IGNhcHR1cmVbMV0ubGVuZ3RoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFByZXZpb3VzIGxpbmUgaGFzIG5vIGNvbnRlbnQsIHJlbW92ZSB0aGUgY29udGludWFibGUgdHlwZSBmcm9tIHRoZSBwcmV2aW91cyByb3dcbiAgICAgICAgICB0aGlzLmxpbmVzW3NlbC5yb3cgLSAxXSA9ICcnO1xuICAgICAgICAgIHRoaXMubGluZURpcnR5W3NlbC5yb3cgLSAxXSA9IHRydWU7XG4gICAgICAgIH0gICAgIFxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgfVxuXG4gIC8vIC8qKlxuICAvLyAgKiBQcm9jZXNzZXMgYSBcImRlbGV0ZVwiIGlucHV0IGFjdGlvbi5cbiAgLy8gICogQHBhcmFtIHtvYmplY3R9IGZvY3VzIFRoZSBzZWxlY3Rpb25cbiAgLy8gICogQHBhcmFtIHtib29sZWFufSBmb3J3YXJkIElmIHRydWUsIHBlcmZvcm1zIGEgZm9yd2FyZCBkZWxldGUsIG90aGVyd2lzZSBwZXJmb3JtcyBhIGJhY2t3YXJkIGRlbGV0ZVxuICAvLyAgKi9cbiAgLy8gcHJvY2Vzc0RlbGV0ZShmb2N1cywgZm9yd2FyZCkge1xuICAvLyAgIGlmICghZm9jdXMpIHJldHVybjtcbiAgLy8gICBsZXQgYW5jaG9yID0gdGhpcy5nZXRTZWxlY3Rpb24odHJ1ZSk7XG4gIC8vICAgLy8gRG8gd2UgaGF2ZSBhIG5vbi1lbXB0eSBzZWxlY3Rpb24/IFxuICAvLyAgIGlmIChmb2N1cy5jb2wgIT0gYW5jaG9yLmNvbCB8fCBmb2N1cy5yb3cgIT0gYW5jaG9yLnJvdykge1xuICAvLyAgICAgLy8gbm9uLWVtcHR5LiBkaXJlY3Rpb24gZG9lc24ndCBtYXR0ZXIuXG4gIC8vICAgICB0aGlzLnBhc3RlKCcnLCBhbmNob3IsIGZvY3VzKTtcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgaWYgKGZvcndhcmQpIHtcbiAgLy8gICAgICAgaWYgKGZvY3VzLmNvbCA8IHRoaXMubGluZXNbZm9jdXMucm93XS5sZW5ndGgpIHRoaXMucGFzdGUoJycsIHtyb3c6IGZvY3VzLnJvdywgY29sOiBmb2N1cy5jb2wgKyAxfSwgZm9jdXMpO1xuICAvLyAgICAgICBlbHNlIGlmIChmb2N1cy5jb2wgPCB0aGlzLmxpbmVzLmxlbmd0aCkgdGhpcy5wYXN0ZSgnJywge3JvdzogZm9jdXMucm93ICsgMSwgY29sOiAwfSwgZm9jdXMpO1xuICAvLyAgICAgICAvLyBPdGhlcndpc2UsIHdlJ3JlIGF0IHRoZSB2ZXJ5IGVuZCBhbmQgY2FuJ3QgZGVsZXRlIGZvcndhcmRcbiAgLy8gICAgIH0gZWxzZSB7XG4gIC8vICAgICAgIGlmIChmb2N1cy5jb2wgPiAwKSB0aGlzLnBhc3RlKCcnLCB7cm93OiBmb2N1cy5yb3csIGNvbDogZm9jdXMuY29sIC0gMX0sIGZvY3VzKTtcbiAgLy8gICAgICAgZWxzZSBpZiAoZm9jdXMucm93ID4gMCkgdGhpcy5wYXN0ZSgnJywge3JvdzogZm9jdXMucm93IC0gMSwgY29sOiB0aGlzLmxpbmVzW2ZvY3VzLnJvdyAtIDFdLmxlbmd0aCAtIDF9LCBmb2N1cyk7XG4gIC8vICAgICAgIC8vIE90aGVyd2lzZSwgd2UncmUgYXQgdGhlIHZlcnkgYmVnaW5uaW5nIGFuZCBjYW4ndCBkZWxldGUgYmFja3dhcmRzXG4gIC8vICAgICB9XG4gIC8vICAgfVxuXG4gIC8vIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUgc2VsZWN0aW9uIGNvdW50ZWQgYnkgcm93IGFuZCBjb2x1bW4gb2YgdGhlIGVkaXRvciBNYXJrZG93biBjb250ZW50IChhcyBvcHBvc2VkIHRvIHRoZSBwb3NpdGlvbiBpbiB0aGUgRE9NKS5cbiAgICogXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZ2V0QW5jaG9yIGlmIHNldCB0byB0cnVlLCBnZXRzIHRoZSBzZWxlY3Rpb24gYW5jaG9yIChzdGFydCBwb2ludCBvZiB0aGUgc2VsZWN0aW9uKSwgb3RoZXJ3aXNlIGdldHMgdGhlIGZvY3VzIChlbmQgcG9pbnQpLlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IEFuIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHNlbGVjdGlvbiwgd2l0aCBwcm9wZXJ0aWVzIGNvbCBhbmQgcm93LlxuICAgKi9cbiAgZ2V0U2VsZWN0aW9uKGdldEFuY2hvciA9IGZhbHNlKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgIGxldCBzdGFydE5vZGUgPSAoZ2V0QW5jaG9yID8gc2VsZWN0aW9uLmFuY2hvck5vZGUgOiBzZWxlY3Rpb24uZm9jdXNOb2RlKTtcbiAgICBpZiAoIXN0YXJ0Tm9kZSkgcmV0dXJuIG51bGw7XG4gICAgbGV0IG9mZnNldCA9IHN0YXJ0Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgPyAoZ2V0QW5jaG9yID8gc2VsZWN0aW9uLmFuY2hvck9mZnNldCA6IHNlbGVjdGlvbi5mb2N1c09mZnNldCkgOiAwO1xuICBcbiAgICBpZiAoc3RhcnROb2RlID09IHRoaXMuZSkge1xuICAgICAgcmV0dXJuIHtyb3c6IDAsIGNvbDogb2Zmc2V0fTtcbiAgICB9XG5cbiAgICBsZXQgY29sID0gdGhpcy5jb21wdXRlQ29sdW1uKHN0YXJ0Tm9kZSwgb2Zmc2V0KTsgICAgXG4gICAgaWYgKGNvbCA9PT0gbnVsbCkgcmV0dXJuIG51bGw7IC8vIFdlIGFyZSBvdXRzaWRlIG9mIHRoZSBlZGl0b3JcblxuICAgIC8vIEZpbmQgdGhlIHJvdyBub2RlXG4gICAgbGV0IG5vZGUgPSBzdGFydE5vZGU7XG4gICAgd2hpbGUgKG5vZGUucGFyZW50RWxlbWVudCAhPSB0aGlzLmUpIHtcbiAgICAgIG5vZGUgPSBub2RlLnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgbGV0IHJvdyA9IDA7XG4gICAgLy8gQ2hlY2sgaWYgd2UgY2FuIHJlYWQgYSBsaW5lIG51bWJlciBmcm9tIHRoZSBkYXRhLWxpbmUtbnVtIGF0dHJpYnV0ZS5cbiAgICAvLyBUaGUgbGFzdCBjb25kaXRpb24gaXMgYSBzZWN1cml0eSBtZWFzdXJlIHNpbmNlIGluc2VydGluZyBhIG5ldyBwYXJhZ3JhcGggY29waWVzIHRoZSBwcmV2aW91cyByb3dzJyBsaW5lIG51bWJlclxuICAgIGlmIChub2RlLmRhdGFzZXQgJiYgbm9kZS5kYXRhc2V0LmxpbmVOdW0gJiYgKCFub2RlLnByZXZpb3VzU2libGluZyB8fCBub2RlLnByZXZpb3VzU2libGluZy5kYXRhc2V0LmxpbmVOdW0gIT0gbm9kZS5kYXRhc2V0LmxpbmVOdW0gKSkge1xuICAgICAgcm93ID0gcGFyc2VJbnQobm9kZS5kYXRhc2V0LmxpbmVOdW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aGlsZSAobm9kZS5wcmV2aW91c1NpYmxpbmcpIHtcbiAgICAgICAgcm93Kys7XG4gICAgICAgIG5vZGUgPSBub2RlLnByZXZpb3VzU2libGluZztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtyb3c6IHJvdywgY29sOiBjb2wsIG5vZGU6IHN0YXJ0Tm9kZX07XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgYSBjb2x1bW4gd2l0aGluIGFuIGVkaXRvciBsaW5lIGZyb20gYSBub2RlIGFuZCBvZmZzZXQgd2l0aGluIHRoYXQgbm9kZS5cbiAgICogQHBhcmFtIHtOb2RlfSBzdGFydE5vZGUgVGhlIG5vZGVcbiAgICogQHBhcmFtIHtpbnR9IG9mZnNldCBUSGUgc2VsZWN0aW9uXG4gICAqIEByZXR1cm5zIHtpbnR9IHRoZSBjb2x1bW4sIG9yIG51bGwgaWYgdGhlIG5vZGUgaXMgbm90IGluc2lkZSB0aGUgZWRpdG9yXG4gICAqL1xuICBjb21wdXRlQ29sdW1uKHN0YXJ0Tm9kZSwgb2Zmc2V0KSB7XG4gICAgbGV0IG5vZGUgPSBzdGFydE5vZGU7XG4gICAgbGV0IGNvbCA9IG9mZnNldDtcbiAgICAvLyBGaXJzdCwgbWFrZSBzdXJlIHdlJ3JlIGFjdHVhbGx5IGluIHRoZSBlZGl0b3IuXG4gICAgd2hpbGUgKG5vZGUgJiYgbm9kZS5wYXJlbnROb2RlICE9IHRoaXMuZSkge1xuICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICB9XG4gICAgaWYgKG5vZGUgPT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgXG4gICAgbm9kZSA9IHN0YXJ0Tm9kZTtcbiAgICB3aGlsZSAobm9kZS5wYXJlbnROb2RlICE9IHRoaXMuZSkge1xuICAgICAgaWYgKG5vZGUucHJldmlvdXNTaWJsaW5nKSB7XG4gICAgICAgIG5vZGUgPSBub2RlLnByZXZpb3VzU2libGluZztcbiAgICAgICAgY29sICs9IG5vZGUudGV4dENvbnRlbnQubGVuZ3RoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBET00gbm9kZSBhbmQgb2Zmc2V0IHdpdGhpbiB0aGF0IG5vZGUgZnJvbSBhIHBvc2l0aW9uIGV4cHJlc3NlZCBhcyByb3cgYW5kIGNvbHVtbi5cbiAgICogQHBhcmFtIHtpbnR9IHJvdyBSb3cgKGxpbmUgbnVtYmVyKVxuICAgKiBAcGFyYW0ge2ludH0gY29sIENvbHVtblxuICAgKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCB0d28gcHJvcGVydGllczogbm9kZSBhbmQgb2Zmc2V0LiBvZmZzZXQgbWF5IGJlIG51bGw7XG4gICAqL1xuICBjb21wdXRlTm9kZUFuZE9mZnNldChyb3csIGNvbCwgYmluZFJpZ2h0ID0gZmFsc2UpIHtcbiAgICBpZiAocm93ID49IHRoaXMubGluZUVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgLy8gU2VsZWN0aW9uIHBhc3QgdGhlIGVuZCBvZiB0ZXh0LCBzZXQgc2VsZWN0aW9uIHRvIGVuZCBvZiB0ZXh0XG4gICAgICByb3cgPSB0aGlzLmxpbmVFbGVtZW50cy5sZW5ndGggLSAxO1xuICAgICAgY29sID0gdGhpcy5saW5lc1tyb3ddLmxlbmd0aDtcbiAgICB9IFxuICAgIGlmIChjb2wgPiB0aGlzLmxpbmVzW3Jvd10ubGVuZ3RoKSB7XG4gICAgICBjb2wgPSB0aGlzLmxpbmVzW3Jvd10ubGVuZ3RoO1xuICAgIH1cbiAgICBjb25zdCBwYXJlbnROb2RlID0gdGhpcy5saW5lRWxlbWVudHNbcm93XTtcbiAgICBsZXQgbm9kZSA9IHBhcmVudE5vZGUuZmlyc3RDaGlsZDtcblxuICAgIGxldCBjaGlsZHJlbkNvbXBsZXRlID0gZmFsc2U7XG4gICAgLy8gZGVmYXVsdCByZXR1cm4gdmFsdWVcbiAgICBsZXQgcnYgPSB7bm9kZTogcGFyZW50Tm9kZS5maXJzdENoaWxkID8gcGFyZW50Tm9kZS5maXJzdENoaWxkIDogcGFyZW50Tm9kZSwgb2Zmc2V0OiAwfTtcblxuICAgIHdoaWxlIChub2RlICE9IHBhcmVudE5vZGUpIHtcbiAgICAgIGlmICghY2hpbGRyZW5Db21wbGV0ZSAmJiBub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgICBpZiAobm9kZS5ub2RlVmFsdWUubGVuZ3RoID49IGNvbCkge1xuICAgICAgICAgIGlmIChiaW5kUmlnaHQgJiYgbm9kZS5ub2RlVmFsdWUubGVuZ3RoID09IGNvbCkge1xuICAgICAgICAgICAgLy8gU2VsZWN0aW9uIGlzIGF0IHRoZSBlbmQgb2YgdGhpcyB0ZXh0IG5vZGUsIGJ1dCB3ZSBhcmUgYmluZGluZyByaWdodCAocHJlZmVyIGFuIG9mZnNldCBvZiAwIGluIHRoZSBuZXh0IHRleHQgbm9kZSlcbiAgICAgICAgICAgIC8vIFJlbWVtYmVyIHJldHVybiB2YWx1ZSBpbiBjYXNlIHdlIGRvbid0IGZpbmQgYW5vdGhlciB0ZXh0IG5vZGVcbiAgICAgICAgICAgIHJ2ID0ge25vZGU6IG5vZGUsIG9mZnNldDogY29sfTtcbiAgICAgICAgICAgIGNvbCA9IDA7XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuKHtub2RlOiBub2RlLCBvZmZzZXQ6IGNvbH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2wgLT0gbm9kZS5ub2RlVmFsdWUubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9IFxuICAgICAgaWYgKCFjaGlsZHJlbkNvbXBsZXRlICYmIG5vZGUuZmlyc3RDaGlsZCkge1xuICAgICAgICBub2RlID0gbm9kZS5maXJzdENoaWxkO1xuICAgICAgfSBlbHNlIGlmIChub2RlLm5leHRTaWJsaW5nKSB7XG4gICAgICAgIGNoaWxkcmVuQ29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGlsZHJlbkNvbXBsZXRlID0gdHJ1ZTtcbiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFaXRoZXIsIHRoZSBwb3NpdGlvbiB3YXMgaW52YWxpZCBhbmQgd2UganVzdCByZXR1cm4gdGhlIGRlZmF1bHQgcmV0dXJuIHZhbHVlXG4gICAgLy8gT3Igd2UgYXJlIGJpbmRpbmcgcmlnaHQgYW5kIHRoZSBzZWxlY3Rpb24gaXMgYXQgdGhlIGVuZCBvZiB0aGUgbGluZVxuICAgIHJldHVybiBydjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZWxlY3Rpb24gYmFzZWQgb24gcm93cyBhbmQgY29sdW1ucyB3aXRoaW4gdGhlIGVkaXRvciBNYXJrZG93biBjb250ZW50LlxuICAgKiBAcGFyYW0ge29iamVjdH0gZm9jdXMgT2JqZWN0IHJlcHJlc2VudGluZyB0aGUgc2VsZWN0aW9uLCBuZWVkcyB0byBoYXZlIHByb3BlcnRpZXMgcm93IGFuZCBjb2wuXG4gICAqL1xuICBzZXRTZWxlY3Rpb24oZm9jdXMsIGFuY2hvciA9IG51bGwpIHtcbiAgICBpZiAoIWZvY3VzKSByZXR1cm47XG5cbiAgICBsZXQgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuXG4gICAgbGV0IHtub2RlOiBmb2N1c05vZGUsIG9mZnNldDogZm9jdXNPZmZzZXR9ID0gdGhpcy5jb21wdXRlTm9kZUFuZE9mZnNldChmb2N1cy5yb3csIGZvY3VzLmNvbCwgKGFuY2hvciAmJiBhbmNob3Iucm93ID09IGZvY3VzLnJvdyAmJiBhbmNob3IuY29sID4gZm9jdXMuY29sKSk7IC8vIEJpbmQgc2VsZWN0aW9uIHJpZ2h0IGlmIGFuY2hvciBpcyBpbiB0aGUgc2FtZSByb3cgYW5kIGJlaGluZCB0aGUgZm9jdXNcbiAgICBsZXQgYW5jaG9yTm9kZSA9IG51bGwsIGFuY2hvck9mZnNldCA9IG51bGw7XG4gICAgaWYgKGFuY2hvciAmJiAoYW5jaG9yLnJvdyAhPSBmb2N1cy5yb3cgfHwgYW5jaG9yLmNvbCAhPSBmb2N1cy5jb2wpKSB7XG4gICAgICBsZXQge25vZGUsIG9mZnNldH0gPSB0aGlzLmNvbXB1dGVOb2RlQW5kT2Zmc2V0KGFuY2hvci5yb3csIGFuY2hvci5jb2wsIGZvY3VzLnJvdyA9PSBhbmNob3Iucm93ICYmIGZvY3VzLmNvbCA+IGFuY2hvci5jb2wpO1xuICAgICAgYW5jaG9yTm9kZSA9IG5vZGU7XG4gICAgICBhbmNob3JPZmZzZXQgPSBvZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKGFuY2hvck5vZGUpIHJhbmdlLnNldFN0YXJ0KGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCk7XG4gICAgZWxzZSByYW5nZS5zZXRTdGFydChmb2N1c05vZGUsIGZvY3VzT2Zmc2V0KTtcbiAgICByYW5nZS5zZXRFbmQoZm9jdXNOb2RlLCBmb2N1c09mZnNldCk7XG4gICAgXG4gICAgbGV0IHdpbmRvd1NlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICB3aW5kb3dTZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgd2luZG93U2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKTtcbiAgfVxuXG4gIC8qKiBcbiAgICogRXZlbnQgaGFuZGxlciBmb3IgaW5wdXQgZXZlbnRzIFxuICAgKi9cbiAgaGFuZGxlSW5wdXRFdmVudChldmVudCkge1xuICAgIGxldCBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoKGV2ZW50LmlucHV0VHlwZSA9PSAnaW5zZXJ0UGFyYWdyYXBoJyB8fCBldmVudC5pbnB1dFR5cGUgPT0gJ2luc2VydExpbmVCcmVhaycpICYmIGZvY3VzKSB7XG4gICAgICB0aGlzLmNsZWFyRGlydHlGbGFnKCk7XG4gICAgICB0aGlzLnByb2Nlc3NOZXdQYXJhZ3JhcGgoZm9jdXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMuZS5maXJzdENoaWxkKSB7XG4gICAgICAgIHRoaXMuZS5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz1cIlRNQmxhbmtMaW5lXCI+PGJyPjwvZGl2Pic7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgZm9yIChsZXQgY2hpbGROb2RlID0gdGhpcy5lLmZpcnN0Q2hpbGQ7IGNoaWxkTm9kZTsgY2hpbGROb2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgaWYgKGNoaWxkTm9kZS5ub2RlVHlwZSAhPSAzIHx8IGNoaWxkTm9kZS50YWdOYW1lICE9ICdESVYnKSB7XG4gICAgICAgICAgICAvLyBGb3VuZCBhIGNoaWxkIG5vZGUgdGhhdCdzIGVpdGhlciBub3QgYW4gZWxlbWVudCBvciBub3QgYSBkaXYuIFdyYXAgaXQgaW4gYSBkaXYuXG4gICAgICAgICAgICBsZXQgZGl2V3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgdGhpcy5lLmluc2VydEJlZm9yZShkaXZXcmFwcGVyLCBjaGlsZE5vZGUpO1xuICAgICAgICAgICAgdGhpcy5lLnJlbW92ZUNoaWxkKGNoaWxkTm9kZSk7XG4gICAgICAgICAgICBkaXZXcmFwcGVyLmFwcGVuZENoaWxkKGNoaWxkTm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZUxpbmVDb250ZW50c0FuZEZvcm1hdHRpbmcoKTsgIFxuICAgIH1cbiAgICBpZiAoZm9jdXMpIHRoaXMuc2V0U2VsZWN0aW9uKGZvY3VzKTtcbiAgICB0aGlzLmZpcmVDaGFuZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBoYW5kbGVyIGZvciBcInNlbGVjdGlvbmNoYW5nZVwiIGV2ZW50cy5cbiAgICovXG4gIGhhbmRsZVNlbGVjdGlvbkNoYW5nZUV2ZW50KCkge1xuICAgIHRoaXMuZmlyZVNlbGVjdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIFwic3BsaWNlXCIgbmV3IGxpbmVzIGludG8gdGhlIGFycmF5cyB0aGlzLmxpbmVzLCB0aGlzLmxpbmVEaXJ0eSwgdGhpcy5saW5lVHlwZXMsIGFuZCB0aGUgRE9NIGVsZW1lbnRzIFxuICAgKiB1bmRlcm5lYXRoIHRoZSBlZGl0b3IgZWxlbWVudC5cbiAgICogVGhpcyBtZXRob2QgaXMgZXNzZW50aWFsbHkgQXJyYXkuc3BsaWNlLCBvbmx5IHRoYXQgdGhlIHRoaXJkIHBhcmFtZXRlciB0YWtlcyBhbiB1bi1zcHJlYWQgYXJyYXkgKGFuZCB0aGUgZm9ydGggcGFyYW1ldGVyKVxuICAgKiBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIERPTSBzaG91bGQgYWxzbyBiZSBhZGp1c3RlZC5cbiAgICogXG4gICAqIEBwYXJhbSB7aW50fSBzdGFydExpbmUgUG9zaXRpb24gYXQgd2hpY2ggdG8gc3RhcnQgY2hhbmdpbmcgdGhlIGFycmF5IG9mIGxpbmVzXG4gICAqIEBwYXJhbSB7aW50fSBsaW5lc1RvRGVsZXRlIE51bWJlciBvZiBsaW5lcyB0byBkZWxldGVcbiAgICogQHBhcmFtIHthcnJheX0gbGluZXNUb0luc2VydCBBcnJheSBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgbGluZXMgdG8gYmUgaW5zZXJ0ZWRcbiAgICogQHBhcmFtIHtib29sZWFufSBhZGp1c3RMaW5lRWxlbWVudHMgSWYgdHJ1ZSwgdGhlbiA8ZGl2PiBlbGVtZW50cyBhcmUgYWxzbyBpbnNlcnRlZCBpbiB0aGUgRE9NIGF0IHRoZSByZXNwZWN0aXZlIHBvc2l0aW9uXG4gICAqL1xuICBzcGxpY2VMaW5lcyhzdGFydExpbmUsIGxpbmVzVG9EZWxldGUgPSAwLCBsaW5lc1RvSW5zZXJ0ID0gW10sIGFkanVzdExpbmVFbGVtZW50cyA9IHRydWUpIHtcbiAgICBpZiAoYWRqdXN0TGluZUVsZW1lbnRzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzVG9EZWxldGU7IGkrKykge1xuICAgICAgICB0aGlzLmUucmVtb3ZlQ2hpbGQodGhpcy5lLmNoaWxkTm9kZXNbc3RhcnRMaW5lXSk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGxldCBpbnNlcnRlZEJsYW5rID0gW107XG4gICAgbGV0IGluc2VydGVkRGlydHkgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXNUb0luc2VydC5sZW5ndGg7IGkrKykge1xuICAgICAgaW5zZXJ0ZWRCbGFuay5wdXNoKCcnKTtcbiAgICAgIGluc2VydGVkRGlydHkucHVzaCh0cnVlKTtcbiAgICAgIGlmIChhZGp1c3RMaW5lRWxlbWVudHMpIHtcbiAgICAgICAgaWYgKHRoaXMuZS5jaGlsZE5vZGVzW3N0YXJ0TGluZV0pIHRoaXMuZS5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksdGhpcy5lLmNoaWxkTm9kZXNbc3RhcnRMaW5lXSk7XG4gICAgICAgIGVsc2UgdGhpcy5lLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxpbmVzLnNwbGljZShzdGFydExpbmUsIGxpbmVzVG9EZWxldGUsIC4uLmxpbmVzVG9JbnNlcnQpO1xuICAgIHRoaXMubGluZVR5cGVzLnNwbGljZShzdGFydExpbmUsIGxpbmVzVG9EZWxldGUsIC4uLmluc2VydGVkQmxhbmspO1xuICAgIHRoaXMubGluZURpcnR5LnNwbGljZShzdGFydExpbmUsIGxpbmVzVG9EZWxldGUsIC4uLmluc2VydGVkRGlydHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2ZW50IGhhbmRsZXIgZm9yIHRoZSBcInBhc3RlXCIgZXZlbnRcbiAgICovXG4gIGhhbmRsZVBhc3RlKGV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgXG4gICAgLy8gZ2V0IHRleHQgcmVwcmVzZW50YXRpb24gb2YgY2xpcGJvYXJkXG4gICAgbGV0IHRleHQgPSAoZXZlbnQub3JpZ2luYWxFdmVudCB8fCBldmVudCkuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJyk7XG5cbiAgICAvLyBpbnNlcnQgdGV4dCBtYW51YWxseVxuICAgIHRoaXMucGFzdGUodGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogUGFzdGVzIHRoZSB0ZXh0IGF0IHRoZSBjdXJyZW50IHNlbGVjdGlvbiAob3IgYXQgdGhlIGVuZCwgaWYgbm8gY3VycmVudCBzZWxlY3Rpb24pXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFxuICAgKi9cbiAgcGFzdGUodGV4dCwgYW5jaG9yID0gbnVsbCwgZm9jdXMgPSBudWxsKSB7XG4gICAgaWYgKCFhbmNob3IpIGFuY2hvciA9IHRoaXMuZ2V0U2VsZWN0aW9uKHRydWUpO1xuICAgIGlmICghZm9jdXMpIGZvY3VzID0gdGhpcy5nZXRTZWxlY3Rpb24oZmFsc2UpO1xuICAgIGxldCBiZWdpbm5pbmcsIGVuZDtcbiAgICBpZiAoIWZvY3VzKSB7XG4gICAgICBmb2N1cyA9IHsgcm93OiB0aGlzLmxpbmVzLmxlbmd0aCAtIDEsIGNvbDogdGhpcy5saW5lc1t0aGlzLmxpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aCB9OyAvLyBJbnNlcnQgYXQgZW5kXG4gICAgfVxuICAgIGlmICghYW5jaG9yKSB7XG4gICAgICBhbmNob3IgPSBmb2N1cztcbiAgICB9XG4gICAgaWYgKGFuY2hvci5yb3cgPCBmb2N1cy5yb3cgfHwgKGFuY2hvci5yb3cgPT0gZm9jdXMucm93ICYmIGFuY2hvci5jb2wgPD0gZm9jdXMuY29sKSkge1xuICAgICAgYmVnaW5uaW5nID0gYW5jaG9yO1xuICAgICAgZW5kID0gZm9jdXM7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgYmVnaW5uaW5nID0gZm9jdXM7XG4gICAgICBlbmQgPSBhbmNob3I7XG4gICAgfVxuICAgIGxldCBpbnNlcnRlZExpbmVzID0gdGV4dC5zcGxpdCgvKD86XFxyXFxufFxccnxcXG4pLyk7XG4gICAgbGV0IGxpbmVCZWZvcmUgPSB0aGlzLmxpbmVzW2JlZ2lubmluZy5yb3ddLnN1YnN0cigwLCBiZWdpbm5pbmcuY29sKTtcbiAgICBsZXQgbGluZUVuZCA9IHRoaXMubGluZXNbZW5kLnJvd10uc3Vic3RyKGVuZC5jb2wpO1xuICAgIGluc2VydGVkTGluZXNbMF0gPSBsaW5lQmVmb3JlLmNvbmNhdChpbnNlcnRlZExpbmVzWzBdKTtcbiAgICBsZXQgZW5kQ29sUG9zID0gaW5zZXJ0ZWRMaW5lc1tpbnNlcnRlZExpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aDtcbiAgICBpbnNlcnRlZExpbmVzW2luc2VydGVkTGluZXMubGVuZ3RoIC0gMV0gPSBpbnNlcnRlZExpbmVzW2luc2VydGVkTGluZXMubGVuZ3RoIC0gMV0uY29uY2F0KGxpbmVFbmQpO1xuICAgIHRoaXMuc3BsaWNlTGluZXMoYmVnaW5uaW5nLnJvdywgMSArIGVuZC5yb3cgLSBiZWdpbm5pbmcucm93LCBpbnNlcnRlZExpbmVzKTtcbiAgICBmb2N1cy5yb3cgPSBiZWdpbm5pbmcucm93ICsgaW5zZXJ0ZWRMaW5lcy5sZW5ndGggLSAxO1xuICAgIGZvY3VzLmNvbCA9IGVuZENvbFBvcztcbiAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgICB0aGlzLnNldFNlbGVjdGlvbihmb2N1cyk7XG4gICAgdGhpcy5maXJlQ2hhbmdlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgdGhlIChsb3dlc3QgaW4gdGhlIERPTSB0cmVlKSBjb21tb24gYW5jZXN0b3Igb2YgdHdvIERPTSBub2Rlcy5cbiAgICogQHBhcmFtIHtOb2RlfSBub2RlMSB0aGUgZmlyc3Qgbm9kZVxuICAgKiBAcGFyYW0ge05vZGV9IG5vZGUyIHRoZSBzZWNvbmQgbm9kZVxuICAgKiBAcmV0dXJucyB7Tm9kZX0gVGhlIGNvbW1lbiBhbmNlc3RvciBub2RlLCBvciBudWxsIGlmIHRoZXJlIGlzIG5vIGNvbW1vbiBhbmNlc3RvclxuICAgKi9cbiAgY29tcHV0ZUNvbW1vbkFuY2VzdG9yKG5vZGUxLCBub2RlMikge1xuICAgIGlmICghbm9kZTEgfHwgIW5vZGUyKSByZXR1cm4gbnVsbDtcbiAgICBpZiAobm9kZTEgPT0gbm9kZTIpIHJldHVybiBub2RlMTtcbiAgICBjb25zdCBhbmNlc3RyeSA9IChub2RlKSA9PiB7XG4gICAgICBsZXQgYW5jZXN0cnkgPSBbXTtcbiAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgIGFuY2VzdHJ5LnVuc2hpZnQobm9kZSk7XG4gICAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICB9XG4gICAgICByZXR1cm4gYW5jZXN0cnk7XG4gICAgfVxuXG4gICAgY29uc3QgYW5jZXN0cnkxID0gYW5jZXN0cnkobm9kZTEpO1xuICAgIGNvbnN0IGFuY2VzdHJ5MiA9IGFuY2VzdHJ5KG5vZGUyKTtcblxuICAgIGlmIChhbmNlc3RyeTFbMF0gIT0gYW5jZXN0cnkyWzBdKSByZXR1cm4gbnVsbDtcbiAgICBsZXQgaTtcbiAgICBmb3IgKGkgPSAwOyBhbmNlc3RyeTFbaV0gPT0gYW5jZXN0cnkyW2ldOyBpKyspO1xuICAgIHJldHVybiBhbmNlc3RyeTFbaS0xXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgKGxvd2VzdCBpbiB0aGUgRE9NIHRyZWUpIGVuY2xvc2luZyBET00gbm9kZSB3aXRoIGEgZ2l2ZW4gY2xhc3MuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmb2N1cyBUaGUgZm9jdXMgc2VsZWN0aW9uIG9iamVjdFxuICAgKiBAcGFyYW0ge29iamVjdH0gYW5jaG9yIFRoZSBhbmNob3Igc2VsZWN0aW9uIG9iamVjdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lIFRoZSBjbGFzcyBuYW1lIHRvIGZpbmRcbiAgICogQHJldHVybnMge05vZGV9IFRoZSBlbmNsb3NpbmcgRE9NIG5vZGUgd2l0aCB0aGUgcmVzcGVjdGl2ZSBjbGFzcyAoaW5zaWRlIHRoZSBlZGl0b3IpLCBpZiB0aGVyZSBpcyBvbmU7IG51bGwgb3RoZXJ3aXNlLlxuICAgKi9cbiAgY29tcHV0ZUVuY2xvc2luZ01hcmt1cE5vZGUoZm9jdXMsIGFuY2hvciwgY2xhc3NOYW1lKSB7XG4gICAgbGV0IG5vZGUgPSBudWxsO1xuICAgIGlmICghZm9jdXMpIHJldHVybiBudWxsO1xuICAgIGlmICghYW5jaG9yKSB7XG4gICAgICBub2RlID0gZm9jdXMubm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGZvY3VzLnJvdyAhPSBhbmNob3Iucm93KSByZXR1cm4gbnVsbDtcbiAgICAgIG5vZGUgPSB0aGlzLmNvbXB1dGVDb21tb25BbmNlc3Rvcihmb2N1cy5ub2RlLCBhbmNob3Iubm9kZSk7XG4gICAgfVxuICAgIGlmICghbm9kZSkgcmV0dXJuIG51bGw7XG4gICAgd2hpbGUgKG5vZGUgIT0gdGhpcy5lKSB7XG4gICAgICBpZiAobm9kZS5jbGFzc05hbWUgJiYgbm9kZS5jbGFzc05hbWUuaW5jbHVkZXMoY2xhc3NOYW1lKSkgcmV0dXJuIG5vZGU7XG4gICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgIH1cbiAgICAvLyBBc2NlbmRlZCBhbGwgdGhlIHdheSB0byB0aGUgZWRpdG9yIGVsZW1lbnRcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzdGF0ZSAodHJ1ZSAvIGZhbHNlKSBvZiBhbGwgY29tbWFuZHMuXG4gICAqIEBwYXJhbSBmb2N1cyBGb2N1cyBvZiB0aGUgc2VsZWN0aW9uLiBJZiBub3QgZ2l2ZW4sIGFzc3VtZXMgdGhlIGN1cnJlbnQgZm9jdXMuXG4gICAqL1xuICBnZXRDb21tYW5kU3RhdGUoZm9jdXMgPSBudWxsLCBhbmNob3IgPSBudWxsKSB7XG4gICAgbGV0IGNvbW1hbmRTdGF0ZSA9IHt9O1xuICAgIGlmICghZm9jdXMpIGZvY3VzID0gdGhpcy5nZXRTZWxlY3Rpb24oZmFsc2UpO1xuICAgIGlmICghYW5jaG9yKSBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICBpZiAoIWZvY3VzKSB7XG4gICAgICBmb3IgKGxldCBjbWQgaW4gY29tbWFuZHMpIHtcbiAgICAgICAgY29tbWFuZFN0YXRlW2NtZF0gPSBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbW1hbmRTdGF0ZTtcbiAgICB9XG4gICAgaWYgKCFhbmNob3IpIGFuY2hvciA9IGZvY3VzOyBcbiAgICBcbiAgICBsZXQgc3RhcnQsIGVuZDtcbiAgICBpZiAoYW5jaG9yLnJvdyA8IGZvY3VzLnJvdyB8fCAoYW5jaG9yLnJvdyA9PSBmb2N1cy5yb3cgJiYgYW5jaG9yLmNvbCA8IGZvY3VzLmNvbCkpIHtcbiAgICAgIHN0YXJ0ID0gYW5jaG9yO1xuICAgICAgZW5kID0gZm9jdXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXJ0ID0gZm9jdXM7XG4gICAgICBlbmQgPSBhbmNob3I7XG4gICAgfVxuICAgIGlmIChlbmQucm93ID4gc3RhcnQucm93ICYmIGVuZC5jb2wgPT0gMCkge1xuICAgICAgZW5kLnJvdy0tO1xuICAgICAgZW5kLmNvbCA9IHRoaXMubGluZXNbZW5kLnJvd10ubGVuZ3RoOyAvLyBTZWxlY3Rpb24gdG8gYmVnaW5uaW5nIG9mIG5leHQgbGluZSBpcyBzYWlkIHRvIGVuZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsYXN0IGxpbmVcbiAgICB9XG5cbiAgICBmb3IgKGxldCBjbWQgaW4gY29tbWFuZHMpIHtcbiAgICAgIGlmIChjb21tYW5kc1tjbWRdLnR5cGUgPT0gJ2lubGluZScpIHtcblxuICAgICAgICBpZiAoIWZvY3VzIHx8IGZvY3VzLnJvdyAhPSBhbmNob3Iucm93IHx8ICF0aGlzLmlzSW5saW5lRm9ybWF0dGluZ0FsbG93ZWQoZm9jdXMsIGFuY2hvcikpIHtcbiAgICAgICAgICBjb21tYW5kU3RhdGVbY21kXSA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVGhlIGNvbW1hbmQgc3RhdGUgaXMgdHJ1ZSBpZiB0aGVyZSBpcyBhIHJlc3BlY3RpdmUgZW5jbG9zaW5nIG1hcmt1cCBub2RlIChlLmcuLCB0aGUgc2VsZWN0aW9uIGlzIGVuY2xvc2VkIGluIGEgPGI+Li48L2I+KSAuLi4gXG4gICAgICAgICAgY29tbWFuZFN0YXRlW2NtZF0gPSBcbiAgICAgICAgICAgICEhdGhpcy5jb21wdXRlRW5jbG9zaW5nTWFya3VwTm9kZShmb2N1cywgYW5jaG9yLCBjb21tYW5kc1tjbWRdLmNsYXNzTmFtZSkgfHxcbiAgICAgICAgICAvLyAuLi4gb3IgaWYgaXQncyBhbiBlbXB0eSBzdHJpbmcgcHJlY2VkZWQgYnkgYW5kIGZvbGxvd2VkIGJ5IGZvcm1hdHRpbmcgbWFya2VycywgZS5nLiAqKnwqKiB3aGVyZSB8IGlzIHRoZSBjdXJzb3JcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgZm9jdXMuY29sID09IGFuY2hvci5jb2wgXG4gICAgICAgICAgICAgICYmICEhdGhpcy5saW5lc1tmb2N1cy5yb3ddLnN1YnN0cigwLCBmb2N1cy5jb2wpLm1hdGNoKGNvbW1hbmRzW2NtZF0udW5zZXQucHJlUGF0dGVybilcbiAgICAgICAgICAgICAgJiYgISF0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKGZvY3VzLmNvbCkubWF0Y2goY29tbWFuZHNbY21kXS51bnNldC5wb3N0UGF0dGVybilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gXG4gICAgICBpZiAoY29tbWFuZHNbY21kXS50eXBlID09ICdsaW5lJykge1xuICAgICAgICBpZiAoIWZvY3VzKSB7XG4gICAgICAgICAgY29tbWFuZFN0YXRlW2NtZF0gPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBzdGF0ZSA9IHRoaXMubGluZVR5cGVzW3N0YXJ0LnJvd10gPT0gY29tbWFuZHNbY21kXS5jbGFzc05hbWU7XG4gICAgICAgICAgXG4gICAgICAgICAgZm9yIChsZXQgbGluZSA9IHN0YXJ0LnJvdzsgbGluZSA8PSBlbmQucm93OyBsaW5lICsrKSB7XG4gICAgICAgICAgICBpZiAoKHRoaXMubGluZVR5cGVzW2xpbmVdID09IGNvbW1hbmRzW2NtZF0uY2xhc3NOYW1lKSAhPSBzdGF0ZSkge1xuICAgICAgICAgICAgICBzdGF0ZSA9IG51bGw7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb21tYW5kU3RhdGVbY21kXSA9IHN0YXRlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29tbWFuZFN0YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYSBjb21tYW5kIHN0YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb21tYW5kIFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN0YXRlIFxuICAgKi9cbiAgc2V0Q29tbWFuZFN0YXRlKGNvbW1hbmQsIHN0YXRlKSB7XG4gICAgaWYgKGNvbW1hbmRzW2NvbW1hbmRdLnR5cGUgPT0gJ2lubGluZScpIHtcbiAgICAgIGxldCBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICAgIGxldCBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKGZhbHNlKTtcbiAgICAgIGlmICghYW5jaG9yKSBhbmNob3IgPSBmb2N1cztcbiAgICAgIGlmICghYW5jaG9yKSByZXR1cm47XG4gICAgICBpZiAoYW5jaG9yLnJvdyAhPSBmb2N1cy5yb3cpIHJldHVybjtcbiAgICAgIGlmICghdGhpcy5pc0lubGluZUZvcm1hdHRpbmdBbGxvd2VkKGZvY3VzLCBhbmNob3IpKSByZXR1cm47IFxuICAgICAgbGV0IG1hcmt1cE5vZGUgPSB0aGlzLmNvbXB1dGVFbmNsb3NpbmdNYXJrdXBOb2RlKGZvY3VzLCBhbmNob3IsIGNvbW1hbmRzW2NvbW1hbmRdLmNsYXNzTmFtZSk7XG4gICAgICB0aGlzLmNsZWFyRGlydHlGbGFnKCk7XG4gICAgICBcbiAgICAgIC8vIEZpcnN0IGNhc2U6IFRoZXJlJ3MgYW4gZW5jbG9zaW5nIG1hcmt1cCBub2RlLCByZW1vdmUgdGhlIG1hcmtlcnMgYXJvdW5kIHRoYXQgbWFya3VwIG5vZGVcbiAgICAgIGlmIChtYXJrdXBOb2RlKSB7XG4gICAgICAgIHRoaXMubGluZURpcnR5W2ZvY3VzLnJvd10gPSB0cnVlO1xuICAgICAgICBjb25zdCBzdGFydENvbCA9IHRoaXMuY29tcHV0ZUNvbHVtbihtYXJrdXBOb2RlLCAwKTtcbiAgICAgICAgY29uc3QgbGVuID0gbWFya3VwTm9kZS50ZXh0Q29udGVudC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGxlZnQgPSB0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKDAsIHN0YXJ0Q29sKS5yZXBsYWNlKGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnByZVBhdHRlcm4sICcnKTtcbiAgICAgICAgY29uc3QgbWlkID0gdGhpcy5saW5lc1tmb2N1cy5yb3ddLnN1YnN0cihzdGFydENvbCwgbGVuKTtcbiAgICAgICAgY29uc3QgcmlnaHQgPSB0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKHN0YXJ0Q29sICsgbGVuKS5yZXBsYWNlKGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnBvc3RQYXR0ZXJuLCAnJyk7XG4gICAgICAgIHRoaXMubGluZXNbZm9jdXMucm93XSA9IGxlZnQuY29uY2F0KG1pZCwgcmlnaHQpO1xuICAgICAgICBhbmNob3IuY29sID0gbGVmdC5sZW5ndGg7XG4gICAgICAgIGZvY3VzLmNvbCA9IGFuY2hvci5jb2wgKyBsZW47XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybWF0dGluZygpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihmb2N1cywgYW5jaG9yKTsgIFxuICAgICAgICB0aGlzLmZpcmVDaGFuZ2UoKTtcblxuICAgICAgLy8gU2Vjb25kIGNhc2U6IEVtcHR5IHNlbGVjdGlvbiB3aXRoIHN1cnJvdW5kaW5nIGZvcm1hdHRpbmcgbWFya2VycywgcmVtb3ZlIHRob3NlXG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBmb2N1cy5jb2wgPT0gYW5jaG9yLmNvbCBcbiAgICAgICAgJiYgISF0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKDAsIGZvY3VzLmNvbCkubWF0Y2goY29tbWFuZHNbY29tbWFuZF0udW5zZXQucHJlUGF0dGVybilcbiAgICAgICAgJiYgISF0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKGZvY3VzLmNvbCkubWF0Y2goY29tbWFuZHNbY29tbWFuZF0udW5zZXQucG9zdFBhdHRlcm4pXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5saW5lRGlydHlbZm9jdXMucm93XSA9IHRydWU7XG4gICAgICAgIGNvbnN0IGxlZnQgPSB0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKDAsIGZvY3VzLmNvbCkucmVwbGFjZShjb21tYW5kc1tjb21tYW5kXS51bnNldC5wcmVQYXR0ZXJuLCAnJyk7XG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gdGhpcy5saW5lc1tmb2N1cy5yb3ddLnN1YnN0cihmb2N1cy5jb2wpLnJlcGxhY2UoY29tbWFuZHNbY29tbWFuZF0udW5zZXQucG9zdFBhdHRlcm4sICcnKTtcbiAgICAgICAgdGhpcy5saW5lc1tmb2N1cy5yb3ddID0gbGVmdC5jb25jYXQocmlnaHQpO1xuICAgICAgICBmb2N1cy5jb2wgPSBhbmNob3IuY29sID0gbGVmdC5sZW5ndGg7XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybWF0dGluZygpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihmb2N1cywgYW5jaG9yKTtcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlKCk7XG5cbiAgICAgIC8vIE5vdCBjdXJyZW50bHkgZm9ybWF0dGVkLCBpbnNlcnQgZm9ybWF0dGluZyBtYXJrZXJzXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBcbiAgICAgICAgLy8gVHJpbSBhbnkgc3BhY2VzIGZyb20gdGhlIHNlbGVjdGlvblxuICAgICAgICBsZXQge3N0YXJ0Q29sLCBlbmRDb2x9ID0gZm9jdXMuY29sIDwgYW5jaG9yLmNvbCA/IHtzdGFydENvbDogZm9jdXMuY29sLCBlbmRDb2w6IGFuY2hvci5jb2x9IDoge3N0YXJ0Q29sOiBhbmNob3IuY29sLCBlbmRDb2w6IGZvY3VzLmNvbH07XG5cbiAgICAgICAgbGV0IG1hdGNoID0gdGhpcy5saW5lc1tmb2N1cy5yb3ddLnN1YnN0cihzdGFydENvbCwgZW5kQ29sIC0gc3RhcnRDb2wpLm1hdGNoKC9eKD88bGVhZGluZz5cXHMqKS4qXFxTKD88dHJhaWxpbmc+XFxzKikkLyk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIHN0YXJ0Q29sICs9IG1hdGNoLmdyb3Vwcy5sZWFkaW5nLmxlbmd0aDtcbiAgICAgICAgICBlbmRDb2wgLT0gbWF0Y2guZ3JvdXBzLnRyYWlsaW5nLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvY3VzLmNvbCA9IHN0YXJ0Q29sO1xuICAgICAgICBhbmNob3IuY29sID0gZW5kQ29sO1xuXG4gICAgICAgIC8vIEp1c3QgaW5zZXJ0IG1hcmt1cCBiZWZvcmUgYW5kIGFmdGVyIGFuZCBob3BlIGZvciB0aGUgYmVzdC4gXG4gICAgICAgIHRoaXMud3JhcFNlbGVjdGlvbihjb21tYW5kc1tjb21tYW5kXS5zZXQucHJlLCBjb21tYW5kc1tjb21tYW5kXS5zZXQucG9zdCwgZm9jdXMsIGFuY2hvcik7XG4gICAgICAgIHRoaXMuZmlyZUNoYW5nZSgpO1xuICAgICAgICAvLyBUT0RPIGNsZWFuIHRoaXMgdXAgc28gdGhhdCBtYXJrdXAgcmVtYWlucyBwcm9wZXJseSBuZXN0ZWRcbiAgICAgIH1cblxuICAgIH0gZWxzZSBpZiAoY29tbWFuZHNbY29tbWFuZF0udHlwZSA9PSAnbGluZScpIHtcbiAgICAgIGxldCBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICAgIGxldCBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKGZhbHNlKTtcbiAgICAgIGlmICghYW5jaG9yKSBhbmNob3IgPSBmb2N1cztcbiAgICAgIGlmICghZm9jdXMpIHJldHVybjtcbiAgICAgIHRoaXMuY2xlYXJEaXJ0eUZsYWcoKTtcbiAgICAgIGxldCBzdGFydCA9IGFuY2hvci5yb3cgPiBmb2N1cy5yb3cgPyBmb2N1cyA6IGFuY2hvcjtcbiAgICAgIGxldCBlbmQgPSAgYW5jaG9yLnJvdyA+IGZvY3VzLnJvdyA/IGFuY2hvciA6IGZvY3VzO1xuICAgICAgaWYgKGVuZC5yb3cgPiBzdGFydC5yb3cgJiYgZW5kLmNvbCA9PSAwKSB7XG4gICAgICAgIGVuZC5yb3ctLTtcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgbGluZSA9IHN0YXJ0LnJvdzsgbGluZSA8PSBlbmQucm93OyBsaW5lKyspIHtcbiAgICAgICAgaWYgKHN0YXRlICYmIHRoaXMubGluZVR5cGVzW2xpbmVdICE9IGNvbW1hbmRzW2NvbW1hbmRdLmNsYXNzTmFtZSkge1xuICAgICAgICAgIHRoaXMubGluZXNbbGluZV0gPSB0aGlzLmxpbmVzW2xpbmVdLnJlcGxhY2UoY29tbWFuZHNbY29tbWFuZF0uc2V0LnBhdHRlcm4sIGNvbW1hbmRzW2NvbW1hbmRdLnNldC5yZXBsYWNlbWVudC5yZXBsYWNlKCckIycsIChsaW5lIC0gc3RhcnQucm93ICsgMSkpKTtcbiAgICAgICAgICB0aGlzLmxpbmVEaXJ0eVtsaW5lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzdGF0ZSAmJiB0aGlzLmxpbmVUeXBlc1tsaW5lXSA9PSBjb21tYW5kc1tjb21tYW5kXS5jbGFzc05hbWUpIHtcbiAgICAgICAgICB0aGlzLmxpbmVzW2xpbmVdID0gdGhpcy5saW5lc1tsaW5lXS5yZXBsYWNlKGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnBhdHRlcm4sIGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnJlcGxhY2VtZW50KTtcbiAgICAgICAgICB0aGlzLmxpbmVEaXJ0eVtsaW5lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlRm9ybWF0dGluZygpO1xuICAgICAgdGhpcy5zZXRTZWxlY3Rpb24oe3JvdzogZW5kLnJvdywgY29sOiB0aGlzLmxpbmVzW2VuZC5yb3ddLmxlbmd0aH0sIHtyb3c6IHN0YXJ0LnJvdywgY29sOiAwfSk7XG4gICAgICB0aGlzLmZpcmVDaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCBpbmxpbmUgZm9ybWF0dGluZyBpcyBhbGxvd2VkIGF0IHRoZSBjdXJyZW50IGZvY3VzIFxuICAgKiBAcGFyYW0ge29iamVjdH0gZm9jdXMgVGhlIGN1cnJlbnQgZm9jdXNcbiAgICovXG4gIGlzSW5saW5lRm9ybWF0dGluZ0FsbG93ZWQoKSB7XG4gICAgLy8gVE9ETyBSZW1vdmUgcGFyYW1ldGVycyBmcm9tIGFsbCBjYWxsc1xuICAgIGNvbnN0IHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICBpZiAoIXNlbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgaWYgd2UgY2FuIGZpbmQgYSBjb21tb24gYW5jZXN0b3Igd2l0aCB0aGUgY2xhc3MgYFRNSW5saW5lRm9ybWF0dGVkYCBcblxuICAgIC8vIFNwZWNpYWwgY2FzZTogRW1wdHkgc2VsZWN0aW9uIHJpZ2h0IGJlZm9yZSBgVE1JbmxpbmVGb3JtYXR0ZWRgXG4gICAgaWYgKHNlbC5pc0NvbGxhcHNlZCAmJiBzZWwuZm9jdXNOb2RlLm5vZGVUeXBlID09IDMgJiYgc2VsLmZvY3VzT2Zmc2V0ID09IHNlbC5mb2N1c05vZGUubm9kZVZhbHVlLmxlbmd0aCkge1xuICAgICAgbGV0IG5vZGU7XG4gICAgICBmb3IgKG5vZGUgPSBzZWwuZm9jdXNOb2RlOyBub2RlICYmIG5vZGUubmV4dFNpYmxpbmcgPT0gbnVsbDsgbm9kZSA9IG5vZGUucGFyZW50Tm9kZSk7XG4gICAgICBpZiAobm9kZSAmJiBub2RlLm5leHRTaWJsaW5nLmNsYXNzTmFtZSAmJiBub2RlLm5leHRTaWJsaW5nLmNsYXNzTmFtZS5pbmNsdWRlcygnVE1JbmxpbmVGb3JtYXR0ZWQnKSkgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gTG9vayBmb3IgYSBjb21tb24gYW5jZXN0b3JcbiAgICBsZXQgYW5jZXN0b3IgPSB0aGlzLmNvbXB1dGVDb21tb25BbmNlc3RvcihzZWwuZm9jdXNOb2RlLCBzZWwuYW5jaG9yTm9kZSk7XG4gICAgaWYgKCFhbmNlc3RvcikgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBhbiBhbmNlc3RvciBvZiBjbGFzcyAnVE1JbmxpbmVGb3JtYXR0ZWQnIG9yICdUTUJsYW5rTGluZSdcbiAgICB3aGlsZSAoYW5jZXN0b3IgJiYgYW5jZXN0b3IgIT0gdGhpcy5lKSB7XG4gICAgICBpZiAoYW5jZXN0b3IuY2xhc3NOYW1lICYmIChhbmNlc3Rvci5jbGFzc05hbWUuaW5jbHVkZXMoJ1RNSW5saW5lRm9ybWF0dGVkJykgfHwgYW5jZXN0b3IuY2xhc3NOYW1lLmluY2x1ZGVzKCdUTUJsYW5rTGluZScpKSkgcmV0dXJuIHRydWU7XG4gICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLnBhcmVudE5vZGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyYXBzIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBpbiB0aGUgc3RyaW5ncyBwcmUgYW5kIHBvc3QuIElmIHRoZSBzZWxlY3Rpb24gaXMgbm90IG9uIG9uZSBsaW5lLCByZXR1cm5zLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJlIFRoZSBzdHJpbmcgdG8gaW5zZXJ0IGJlZm9yZSB0aGUgc2VsZWN0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcG9zdCBUaGUgc3RyaW5nIHRvIGluc2VydCBhZnRlciB0aGUgc2VsZWN0aW9uLlxuICAgKiBAcGFyYW0ge29iamVjdH0gZm9jdXMgVGhlIGN1cnJlbnQgc2VsZWN0aW9uIGZvY3VzLiBJZiBudWxsLCBzZWxlY3Rpb24gd2lsbCBiZSBjb21wdXRlZC5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFuY2hvciBUaGUgY3VycmVudCBzZWxlY3Rpb24gZm9jdXMuIElmIG51bGwsIHNlbGVjdGlvbiB3aWxsIGJlIGNvbXB1dGVkLlxuICAgKi9cbiAgd3JhcFNlbGVjdGlvbihwcmUsIHBvc3QsIGZvY3VzID0gbnVsbCwgYW5jaG9yID0gbnVsbCkge1xuICAgIGlmICghZm9jdXMpIGZvY3VzID0gdGhpcy5nZXRTZWxlY3Rpb24oZmFsc2UpO1xuICAgIGlmICghYW5jaG9yKSBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICBpZiAoIWZvY3VzIHx8ICFhbmNob3IgfHwgZm9jdXMucm93ICE9IGFuY2hvci5yb3cpIHJldHVybjtcbiAgICB0aGlzLmxpbmVEaXJ0eVtmb2N1cy5yb3ddID0gdHJ1ZTtcblxuICAgIGNvbnN0IHN0YXJ0Q29sID0gZm9jdXMuY29sIDwgYW5jaG9yLmNvbCA/IGZvY3VzLmNvbCA6IGFuY2hvci5jb2w7XG4gICAgY29uc3QgZW5kQ29sID0gZm9jdXMuY29sIDwgYW5jaG9yLmNvbCA/IGFuY2hvci5jb2wgOiBmb2N1cy5jb2w7XG4gICAgY29uc3QgbGVmdCA9IHRoaXMubGluZXNbZm9jdXMucm93XS5zdWJzdHIoMCwgc3RhcnRDb2wpLmNvbmNhdChwcmUpO1xuICAgIGNvbnN0IG1pZCA9IChlbmRDb2wgPT0gc3RhcnRDb2wgPyAnJyA6IHRoaXMubGluZXNbZm9jdXMucm93XS5zdWJzdHIoc3RhcnRDb2wsIGVuZENvbCAtIHN0YXJ0Q29sKSk7IFxuICAgIGNvbnN0IHJpZ2h0ID0gcG9zdC5jb25jYXQodGhpcy5saW5lc1tmb2N1cy5yb3ddLnN1YnN0cihlbmRDb2wpKTtcbiAgICB0aGlzLmxpbmVzW2ZvY3VzLnJvd10gPSBsZWZ0LmNvbmNhdChtaWQsIHJpZ2h0KTtcbiAgICBhbmNob3IuY29sID0gbGVmdC5sZW5ndGg7XG4gICAgZm9jdXMuY29sID0gYW5jaG9yLmNvbCArIG1pZC5sZW5ndGg7XG5cbiAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgICB0aGlzLnNldFNlbGVjdGlvbihmb2N1cywgYW5jaG9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBjb21tYW5kIHN0YXRlIGZvciBhIGNvbW1hbmQgKHRydWUgPC0+IGZhbHNlKVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29tbWFuZCBUaGUgZWRpdG9yIGNvbW1hbmRcbiAgICovXG4gIHRvZ2dsZUNvbW1hbmRTdGF0ZShjb21tYW5kKSB7XG4gICAgaWYgKCF0aGlzLmxhc3RDb21tYW5kU3RhdGUpIHRoaXMubGFzdENvbW1hbmRTdGF0ZSA9IHRoaXMuZ2V0Q29tbWFuZFN0YXRlKCk7XG4gICAgdGhpcy5zZXRDb21tYW5kU3RhdGUoY29tbWFuZCwgIXRoaXMubGFzdENvbW1hbmRTdGF0ZVtjb21tYW5kXSk7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgYSBjaGFuZ2UgZXZlbnQuIFVwZGF0ZXMgdGhlIGxpbmtlZCB0ZXh0YXJlYSBhbmQgbm90aWZpZXMgYW55IGV2ZW50IGxpc3RlbmVycy5cbiAgICovXG4gIGZpcmVDaGFuZ2UoKSB7XG4gICAgaWYgKCF0aGlzLnRleHRhcmVhICYmICF0aGlzLmxpc3RlbmVycy5jaGFuZ2UubGVuZ3RoKSByZXR1cm47XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpO1xuICAgIGlmICh0aGlzLnRleHRhcmVhKSB0aGlzLnRleHRhcmVhLnZhbHVlID0gY29udGVudDtcbiAgICBmb3IgKGxldCBsaXN0ZW5lciBvZiB0aGlzLmxpc3RlbmVycy5jaGFuZ2UpIHtcbiAgICAgIGxpc3RlbmVyKHtcbiAgICAgICAgY29udGVudDogY29udGVudCxcbiAgICAgICAgbGluZXNEaXJ0eTogdGhpcy5saW5lc0RpcnR5LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIGEgXCJzZWxlY3Rpb24gY2hhbmdlZFwiIGV2ZW50LlxuICAgKi9cbiAgZmlyZVNlbGVjdGlvbigpIHtcbiAgICBpZiAodGhpcy5saXN0ZW5lcnMuc2VsZWN0aW9uICYmIHRoaXMubGlzdGVuZXJzLnNlbGVjdGlvbi5sZW5ndGgpIHtcbiAgICAgIGxldCBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKGZhbHNlKTtcbiAgICAgIGxldCBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICAgIGxldCBjb21tYW5kU3RhdGUgPSB0aGlzLmdldENvbW1hbmRTdGF0ZShmb2N1cywgYW5jaG9yKTtcbiAgICAgIGlmICh0aGlzLmxhc3RDb21tYW5kU3RhdGUpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmxhc3RDb21tYW5kU3RhdGUsIGNvbW1hbmRTdGF0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxhc3RDb21tYW5kU3RhdGUgPSBPYmplY3QuYXNzaWduKHt9LCBjb21tYW5kU3RhdGUpO1xuICAgICAgfVxuICAgICAgZm9yIChsZXQgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMuc2VsZWN0aW9uKSB7XG4gICAgICAgIGxpc3RlbmVyKHtcbiAgICAgICAgICBmb2N1czogZm9jdXMsXG4gICAgICAgICAgYW5jaG9yOiBhbmNob3IsXG4gICAgICAgICAgY29tbWFuZFN0YXRlOiB0aGlzLmxhc3RDb21tYW5kU3RhdGUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGV2ZW50IGxpc3RlbmVyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSBUaGUgdHlwZSBvZiBldmVudCB0byBsaXN0ZW4gdG8uIENhbiBiZSAnY2hhbmdlJyBvciAnc2VsZWN0aW9uJ1xuICAgKiBAcGFyYW0geyp9IGxpc3RlbmVyIEZ1bmN0aW9uIG9mIHRoZSB0eXBlIChldmVudCkgPT4ge30gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGV2ZW50IG9jY3Vycy5cbiAgICovXG4gIGFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICBpZiAodHlwZS5tYXRjaCgvXig/OmNoYW5nZXxpbnB1dCkkL2kpKSB7XG4gICAgICB0aGlzLmxpc3RlbmVycy5jaGFuZ2UucHVzaChsaXN0ZW5lcik7XG4gICAgfVxuICAgIGlmICh0eXBlLm1hdGNoKC9eKD86c2VsZWN0aW9ufHNlbGVjdGlvbmNoYW5nZSkkL2kpKSB7XG4gICAgICB0aGlzLmxpc3RlbmVycy5zZWxlY3Rpb24ucHVzaChsaXN0ZW5lcik7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVkaXRvcjtcbiJdLCJuYW1lcyI6WyJzdmciLCJibG9ja3F1b3RlIiwiYm9sZCIsImNsZWFyX2Zvcm1hdHRpbmciLCJjb2RlIiwiaDEiLCJoMiIsImhyIiwiaW1hZ2UiLCJpdGFsaWMiLCJsaW5rIiwib2wiLCJzdHJpa2V0aHJvdWdoIiwidWwiLCJpc01hY0xpa2UiLCJ0ZXN0IiwibmF2aWdhdG9yIiwicGxhdGZvcm0iLCJEZWZhdWx0Q29tbWFuZHMiLCJuYW1lIiwiYWN0aW9uIiwiaW5uZXJIVE1MIiwidGl0bGUiLCJob3RrZXkiLCJlZGl0b3IiLCJpc0lubGluZUZvcm1hdHRpbmdBbGxvd2VkIiwid3JhcFNlbGVjdGlvbiIsImVuYWJsZWQiLCJmb2N1cyIsImFuY2hvciIsInBhc3RlIiwiQ29tbWFuZEJhciIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJlIiwiY29tbWFuZHMiLCJidXR0b25zIiwic3RhdGUiLCJob3RrZXlzIiwiZWxlbWVudCIsInRhZ05hbWUiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiYm9keSIsImNyZWF0ZUNvbW1hbmRCYXJFbGVtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImhhbmRsZUtleWRvd24iLCJzZXRFZGl0b3IiLCJwYXJlbnRFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImNvbW1hbmQiLCJlbCIsImFwcGVuZENoaWxkIiwiY29tbWFuZE5hbWUiLCJPYmplY3QiLCJhc3NpZ24iLCJrZXlzIiwic3BsaXQiLCJtb2RpZmllcnMiLCJtb2RpZmllcmV4cGxhbmF0aW9uIiwiaSIsImxlbmd0aCIsInB1c2giLCJtYXRjaCIsImtleSIsInRvTG93ZXJDYXNlIiwiY29uY2F0Iiwiam9pbiIsImhhbmRsZUNsaWNrIiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsInNldENvbW1hbmRTdGF0ZSIsImhhbmRsZVNlbGVjdGlvbiIsImNvbW1hbmRTdGF0ZSIsInVuZGVmaW5lZCIsIm91dGVyIiwibW9kaWZpZXIiLCJjaGVjayIsIml0IiwiTWF0aCIsIm1vZHVsZSIsImdsb2JhbFRoaXMiLCJ3aW5kb3ciLCJzZWxmIiwiZ2xvYmFsIiwidGhpcyIsIkZ1bmN0aW9uIiwiZXhlYyIsImVycm9yIiwiZmFpbHMiLCJyZXF1aXJlIiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJiaW5kIiwiaGFzT3duUHJvcGVydHkiLCJOQVRJVkVfQklORCIsIkZ1bmN0aW9uUHJvdG90eXBlIiwicHJvdG90eXBlIiwiY2FsbCIsInVuY3VycnlUaGlzV2l0aEJpbmQiLCJmbiIsImFwcGx5IiwiYXJndW1lbnRzIiwiZG9jdW1lbnRBbGwiLCJhbGwiLCJJU19IVE1MRERBIiwiJGRvY3VtZW50QWxsIiwiYXJndW1lbnQiLCJpc051bGxPclVuZGVmaW5lZCIsIiRUeXBlRXJyb3IiLCJUeXBlRXJyb3IiLCJyZXF1aXJlT2JqZWN0Q29lcmNpYmxlIiwiJE9iamVjdCIsInVuY3VycnlUaGlzIiwidG9PYmplY3QiLCJoYXNPd24iLCJERVNDUklQVE9SUyIsImdldERlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJFWElTVFMiLCJQUk9QRVIiLCJzb21ldGhpbmciLCJDT05GSUdVUkFCTEUiLCJjb25maWd1cmFibGUiLCJ2YWx1ZSIsIndyaXRhYmxlIiwiZGVmaW5lR2xvYmFsUHJvcGVydHkiLCJTSEFSRUQiLCJzdG9yZSIsImlzQ2FsbGFibGUiLCJmdW5jdGlvblRvU3RyaW5nIiwidG9TdHJpbmciLCJpbnNwZWN0U291cmNlIiwiV2Vha01hcCIsIlN0cmluZyIsImlzT2JqZWN0IiwiYSIsIiRTdHJpbmciLCJhRnVuY3Rpb24iLCJuYW1lc3BhY2UiLCJtZXRob2QiLCJpc1Byb3RvdHlwZU9mIiwidXNlckFnZW50IiwicHJvY2VzcyIsIkRlbm8iLCJ2ZXJzaW9ucyIsInZlcnNpb24iLCJ2OCIsIlY4X1ZFUlNJT04iLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzeW1ib2wiLCJTeW1ib2wiLCJzaGFtIiwiTkFUSVZFX1NZTUJPTCIsIml0ZXJhdG9yIiwiZ2V0QnVpbHRJbiIsIlVTRV9TWU1CT0xfQVNfVUlEIiwiJFN5bWJvbCIsInRyeVRvU3RyaW5nIiwiYUNhbGxhYmxlIiwiViIsIlAiLCJmdW5jIiwiaW5wdXQiLCJwcmVmIiwidmFsIiwidmFsdWVPZiIsIm1vZGUiLCJjb3B5cmlnaHQiLCJsaWNlbnNlIiwic291cmNlIiwiaWQiLCJwb3N0Zml4IiwicmFuZG9tIiwic2hhcmVkIiwidWlkIiwiV2VsbEtub3duU3ltYm9sc1N0b3JlIiwiY3JlYXRlV2VsbEtub3duU3ltYm9sIiwid2l0aG91dFNldHRlciIsImlzU3ltYm9sIiwiZ2V0TWV0aG9kIiwib3JkaW5hcnlUb1ByaW1pdGl2ZSIsIndlbGxLbm93blN5bWJvbCIsIlRPX1BSSU1JVElWRSIsImV4b3RpY1RvUHJpbSIsInJlc3VsdCIsInRvUHJpbWl0aXZlIiwiSUU4X0RPTV9ERUZJTkUiLCJWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyIsImFuT2JqZWN0IiwidG9Qcm9wZXJ0eUtleSIsIiRkZWZpbmVQcm9wZXJ0eSIsIiRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJFTlVNRVJBQkxFIiwiV1JJVEFCTEUiLCJleHBvcnRzIiwiTyIsIkF0dHJpYnV0ZXMiLCJjdXJyZW50IiwiZW51bWVyYWJsZSIsImJpdG1hcCIsImRlZmluZVByb3BlcnR5TW9kdWxlIiwiY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yIiwib2JqZWN0IiwiZiIsIk5BVElWRV9XRUFLX01BUCIsImNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSIsInNoYXJlZEtleSIsIk9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEIiwic2V0IiwiaGFzIiwiZW5mb3JjZSIsImdldHRlckZvciIsIlRZUEUiLCJ0eXBlIiwibWV0YWRhdGEiLCJmYWNhZGUiLCJTVEFURSIsIkNPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FIiwiSW50ZXJuYWxTdGF0ZU1vZHVsZSIsImVuZm9yY2VJbnRlcm5hbFN0YXRlIiwiZ2V0SW50ZXJuYWxTdGF0ZSIsInN0cmluZ1NsaWNlIiwic2xpY2UiLCJyZXBsYWNlIiwiQ09ORklHVVJBQkxFX0xFTkdUSCIsIlRFTVBMQVRFIiwibWFrZUJ1aWx0SW4iLCJvcHRpb25zIiwiZ2V0dGVyIiwic2V0dGVyIiwiYXJpdHkiLCJ0YXJnZXQiLCJkZXNjcmlwdG9yIiwidGhhdCIsImhhc0luZGljZXMiLCJpZ25vcmVDYXNlIiwibXVsdGlsaW5lIiwiZG90QWxsIiwidW5pY29kZSIsInVuaWNvZGVTZXRzIiwic3RpY2t5IiwiZGVmaW5lQnVpbHRJbkFjY2Vzc29yIiwicmVnRXhwRmxhZ3MiLCJSZWdFeHAiLCJSZWdFeHBQcm90b3R5cGUiLCJGT1JDRUQiLCJJTkRJQ0VTX1NVUFBPUlQiLCJjYWxscyIsImV4cGVjdGVkIiwiYWRkR2V0dGVyIiwiY2hyIiwicGFpcnMiLCJyZXBsYWNlbWVudHMiLCJBU0NJSVB1bmN0dWF0aW9uIiwiTm90VHJpZ2dlckNoYXIiLCJTY2hlbWUiLCJFbWFpbCIsIkhUTUxPcGVuVGFnIiwiSFRNTENsb3NlVGFnIiwiSFRNTFRhZ05hbWUiLCJIVE1MQ29tbWVudCIsIkhUTUxQSSIsIkhUTUxEZWNsYXJhdGlvbiIsIkhUTUxDREFUQSIsIkhUTUxBdHRyaWJ1dGUiLCJIVE1MQXR0VmFsdWUiLCJLbm93blRhZyIsInB1bmN0dWF0aW9uTGVhZGluZyIsInB1bmN0dWF0aW9uVHJhaWxpbmciLCJsaW5lR3JhbW1hciIsIlRNSDEiLCJyZWdleHAiLCJyZXBsYWNlbWVudCIsIlRNSDIiLCJUTUgzIiwiVE1INCIsIlRNSDUiLCJUTUg2IiwiVE1CbG9ja3F1b3RlIiwiVE1Db2RlRmVuY2VCYWNrdGlja09wZW4iLCJUTUNvZGVGZW5jZVRpbGRlT3BlbiIsIlRNQ29kZUZlbmNlQmFja3RpY2tDbG9zZSIsIlRNQ29kZUZlbmNlVGlsZGVDbG9zZSIsIlRNQmxhbmtMaW5lIiwiVE1TZXRleHRIMU1hcmtlciIsIlRNU2V0ZXh0SDJNYXJrZXIiLCJUTUhSIiwiVE1VTCIsIlRNT0wiLCJUTUluZGVudGVkQ29kZSIsIlRNTGlua1JlZmVyZW5jZURlZmluaXRpb24iLCJsYWJlbFBsYWNlaG9sZGVyIiwiaHRtbEJsb2NrR3JhbW1hciIsInN0YXJ0IiwiZW5kIiwicGFyYUludGVycnVwdCIsImlubGluZUdyYW1tYXIiLCJlc2NhcGUiLCJhdXRvbGluayIsImh0bWwiLCJsaW5rT3BlbiIsImltYWdlT3BlbiIsImxpbmtMYWJlbCIsImRlZmF1bHQiLCJyZXBsYWNlbWVudFJlZ2V4cCIsImlubGluZVJ1bGVzIiwicnVsZSIsInJlIiwic3RyaW5nIiwiZmxhZ3MiLCJodG1sZXNjYXBlIiwicHJlIiwicG9zdCIsInVuc2V0IiwicHJlUGF0dGVybiIsInBvc3RQYXR0ZXJuIiwicGF0dGVybiIsImgzIiwiaDQiLCJoNSIsImg2IiwiRWRpdG9yIiwidGV4dGFyZWEiLCJsaW5lcyIsImxpbmVFbGVtZW50cyIsImxpbmVUeXBlcyIsImxpbmVDYXB0dXJlcyIsImxpbmVSZXBsYWNlbWVudHMiLCJsaW5rTGFiZWxzIiwibGluZURpcnR5IiwibGFzdENvbW1hbmRTdGF0ZSIsImxpc3RlbmVycyIsImNoYW5nZSIsInNlbGVjdGlvbiIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwicGFyZW50Tm9kZSIsInN0eWxlIiwiZGlzcGxheSIsImNyZWF0ZUVkaXRvckVsZW1lbnQiLCJzZXRDb250ZW50IiwiY29udGVudCIsImNvbnRlbnRFZGl0YWJsZSIsIndoaXRlU3BhY2UiLCJ3ZWJraXRVc2VyTW9kaWZ5IiwibmV4dFNpYmxpbmciLCJpbnNlcnRCZWZvcmUiLCJoYW5kbGVJbnB1dEV2ZW50IiwiaGFuZGxlU2VsZWN0aW9uQ2hhbmdlRXZlbnQiLCJoYW5kbGVQYXN0ZSIsImNoaWxkTm9kZXMiLCJmaXJzdENoaWxkIiwicmVtb3ZlQ2hpbGQiLCJsaW5lTnVtIiwibGUiLCJBcnJheSIsInVwZGF0ZUZvcm1hdHRpbmciLCJmaXJlQ2hhbmdlIiwiZ2V0Q29udGVudCIsInVwZGF0ZUxpbmVUeXBlcyIsInVwZGF0ZUxpbmtMYWJlbHMiLCJhcHBseUxpbmVUeXBlcyIsImwiLCJjYXB0dXJlIiwic3RyIiwicDEiLCJwMiIsInByb2Nlc3NJbmxpbmVTdHlsZXMiLCJjb250ZW50SFRNTCIsInJlbW92ZUF0dHJpYnV0ZSIsImRhdGFzZXQiLCJjb2RlQmxvY2tUeXBlIiwiY29kZUJsb2NrU2VxTGVuZ3RoIiwiaHRtbEJsb2NrIiwibGluZVR5cGUiLCJsaW5lQ2FwdHVyZSIsImxpbmVSZXBsYWNlbWVudCIsImdyb3VwcyIsImh0bWxCbG9ja1R5cGUiLCJoZWFkaW5nTGluZSIsImhlYWRpbmdMaW5lVHlwZSIsInVwZGF0ZUxpbmVDb250ZW50c0FuZEZvcm1hdHRpbmciLCJjbGVhckRpcnR5RmxhZyIsInVwZGF0ZUxpbmVDb250ZW50cyIsInBhcnNlTGlua09ySW1hZ2UiLCJvcmlnaW5hbFN0cmluZyIsImlzSW1hZ2UiLCJ0ZXh0T2Zmc2V0Iiwib3BlbmVyIiwic3Vic3RyIiwiY3VycmVudE9mZnNldCIsImJyYWNrZXRMZXZlbCIsImxpbmtUZXh0IiwibGlua1JlZiIsImxpbmtEZXRhaWxzIiwidGV4dE91dGVyIiwiY2FwIiwibmV4dENoYXIiLCJ0cmltIiwicGFyZW50aGVzaXNMZXZlbCIsImlubGluZU91dGVyIiwidmFsaWQiLCJsYWJlbCIsIm91dHB1dCIsImNoYXJDb3VudCIsInByb2Nlc3NlZCIsInN0YWNrIiwib2Zmc2V0IiwicG90ZW50aWFsTGluayIsInBvdGVudGlhbEltYWdlIiwiZGVsaW1Db3VudCIsImRlbGltU3RyaW5nIiwiY3VycmVudERlbGltaXRlciIsInByZWNlZGluZyIsImZvbGxvd2luZyIsInB1bmN0dWF0aW9uRm9sbG93cyIsInB1bmN0dWF0aW9uUHJlY2VkZXMiLCJ3aGl0ZXNwYWNlRm9sbG93cyIsIndoaXRlc3BhY2VQcmVjZWRlcyIsImNhbk9wZW4iLCJjYW5DbG9zZSIsInN0YWNrUG9pbnRlciIsImRlbGltaXRlciIsImVudHJ5IiwicG9wIiwiY291bnQiLCJjb25zdW1lZCIsImxpbmVEZWx0YSIsImNoaWxkRWxlbWVudENvdW50IiwiZmlyc3RDaGFuZ2VkTGluZSIsInRleHRDb250ZW50IiwibGFzdENoYW5nZWRMaW5lIiwibGluZXNUb0RlbGV0ZSIsImxpbmVzVG9BZGQiLCJzcGxpY2VMaW5lcyIsImxpbmUiLCJjdCIsInByb2Nlc3NOZXdQYXJhZ3JhcGgiLCJzZWwiLCJjb250aW51YWJsZVR5cGUiLCJjaGVja0xpbmUiLCJjb2wiLCJyb3ciLCJwYXJzZUludCIsImdldFNlbGVjdGlvbiIsImdldEFuY2hvciIsInN0YXJ0Tm9kZSIsImFuY2hvck5vZGUiLCJmb2N1c05vZGUiLCJub2RlVHlwZSIsIk5vZGUiLCJURVhUX05PREUiLCJhbmNob3JPZmZzZXQiLCJmb2N1c09mZnNldCIsImNvbXB1dGVDb2x1bW4iLCJub2RlIiwicHJldmlvdXNTaWJsaW5nIiwiY29tcHV0ZU5vZGVBbmRPZmZzZXQiLCJiaW5kUmlnaHQiLCJjaGlsZHJlbkNvbXBsZXRlIiwicnYiLCJub2RlVmFsdWUiLCJzZXRTZWxlY3Rpb24iLCJyYW5nZSIsImNyZWF0ZVJhbmdlIiwic2V0U3RhcnQiLCJzZXRFbmQiLCJ3aW5kb3dTZWxlY3Rpb24iLCJyZW1vdmVBbGxSYW5nZXMiLCJhZGRSYW5nZSIsImlucHV0VHlwZSIsImNoaWxkTm9kZSIsImRpdldyYXBwZXIiLCJmaXJlU2VsZWN0aW9uIiwic3RhcnRMaW5lIiwibGluZXNUb0luc2VydCIsImFkanVzdExpbmVFbGVtZW50cyIsImluc2VydGVkQmxhbmsiLCJpbnNlcnRlZERpcnR5Iiwic3BsaWNlIiwidGV4dCIsIm9yaWdpbmFsRXZlbnQiLCJjbGlwYm9hcmREYXRhIiwiZ2V0RGF0YSIsImJlZ2lubmluZyIsImluc2VydGVkTGluZXMiLCJsaW5lQmVmb3JlIiwibGluZUVuZCIsImVuZENvbFBvcyIsImNvbXB1dGVDb21tb25BbmNlc3RvciIsIm5vZGUxIiwibm9kZTIiLCJhbmNlc3RyeSIsInVuc2hpZnQiLCJhbmNlc3RyeTEiLCJhbmNlc3RyeTIiLCJjb21wdXRlRW5jbG9zaW5nTWFya3VwTm9kZSIsImluY2x1ZGVzIiwiZ2V0Q29tbWFuZFN0YXRlIiwiY21kIiwibWFya3VwTm9kZSIsInN0YXJ0Q29sIiwibGVuIiwibGVmdCIsIm1pZCIsInJpZ2h0IiwiZW5kQ29sIiwibGVhZGluZyIsInRyYWlsaW5nIiwiaXNDb2xsYXBzZWQiLCJhbmNlc3RvciIsInRvZ2dsZUNvbW1hbmRTdGF0ZSIsImxpc3RlbmVyIiwibGluZXNEaXJ0eSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0VBQUEsTUFBTUEsR0FBRyxHQUFHO0VBQ1ZDLEVBQUFBLFVBQVUsRUFBRyxDQUEwUix5UkFBQSxDQUFBO0VBQ3ZTQyxFQUFBQSxJQUFJLEVBQUcsQ0FBeVksd1lBQUEsQ0FBQTtFQUNoWkMsRUFBQUEsZ0JBQWdCLEVBQUcsQ0FBMFgseVhBQUEsQ0FBQTtFQUM3WUMsRUFBQUEsSUFBSSxFQUFHLENBQThVLDZVQUFBLENBQUE7RUFDclZDLEVBQUFBLEVBQUUsRUFBRyxDQUErSiw4SkFBQSxDQUFBO0VBQ3BLQyxFQUFBQSxFQUFFLEVBQUcsQ0FBaUssZ0tBQUEsQ0FBQTtFQUN0S0MsRUFBQUEsRUFBRSxFQUFHLENBQWdJLCtIQUFBLENBQUE7RUFDcklDLEVBQUFBLEtBQUssRUFBRyxDQUE4SCw2SEFBQSxDQUFBO0VBQ3RJQyxFQUFBQSxNQUFNLEVBQUcsQ0FBZ0gsK0dBQUEsQ0FBQTtFQUN6SEMsRUFBQUEsSUFBSSxFQUFHLENBQTB1Qyx5dUNBQUEsQ0FBQTtFQUNqdkNDLEVBQUFBLEVBQUUsRUFBRyxDQUFvdEIsbXRCQUFBLENBQUE7RUFDenRCQyxFQUFBQSxhQUFhLEVBQUcsQ0FBMlgsMFhBQUEsQ0FBQTtFQUMzWUMsRUFBQUEsRUFBRSxFQUFHLENBQUEsMlFBQUEsQ0FBQTtFQUNQLENBQUM7O0VDWkQsTUFBTUMsU0FBUyxHQUFHLHlCQUF5QixDQUFDQyxJQUFJLENBQUNDLFNBQVMsQ0FBQ0MsUUFBUSxDQUFDLENBQUE7RUFFcEUsTUFBTUMsZUFBZSxHQUFHO0VBQ3RCLEVBQUEsTUFBTSxFQUFFO0VBQ05DLElBQUFBLElBQUksRUFBRSxNQUFNO0VBQ1pDLElBQUFBLE1BQU0sRUFBRSxNQUFNO01BQ2RDLFNBQVMsRUFBRXJCLEdBQUcsQ0FBQ0UsSUFBSTtFQUNuQm9CLElBQUFBLEtBQUssRUFBRSxNQUFNO0VBQ2JDLElBQUFBLE1BQU0sRUFBRSxPQUFBO0tBQ1Q7RUFDRCxFQUFBLFFBQVEsRUFBRTtFQUNSSixJQUFBQSxJQUFJLEVBQUUsUUFBUTtFQUNkQyxJQUFBQSxNQUFNLEVBQUUsUUFBUTtNQUNoQkMsU0FBUyxFQUFFckIsR0FBRyxDQUFDUyxNQUFNO0VBQ3JCYSxJQUFBQSxLQUFLLEVBQUUsUUFBUTtFQUNmQyxJQUFBQSxNQUFNLEVBQUUsT0FBQTtLQUNUO0VBQ0QsRUFBQSxlQUFlLEVBQUU7RUFDZkosSUFBQUEsSUFBSSxFQUFFLGVBQWU7RUFDckJDLElBQUFBLE1BQU0sRUFBRSxlQUFlO01BQ3ZCQyxTQUFTLEVBQUVyQixHQUFHLENBQUNZLGFBQWE7RUFDNUJVLElBQUFBLEtBQUssRUFBRSxlQUFlO0VBQ3RCQyxJQUFBQSxNQUFNLEVBQUUsY0FBQTtLQUNUO0VBQ0QsRUFBQSxNQUFNLEVBQUU7RUFDTkosSUFBQUEsSUFBSSxFQUFFLE1BQU07RUFDWkMsSUFBQUEsTUFBTSxFQUFFLE1BQU07TUFDZEMsU0FBUyxFQUFFckIsR0FBRyxDQUFDSSxJQUFJO0VBQ25Ca0IsSUFBQUEsS0FBSyxFQUFFLGdCQUFBO0tBQ1I7RUFDRCxFQUFBLElBQUksRUFBRTtFQUNKSCxJQUFBQSxJQUFJLEVBQUUsSUFBSTtFQUNWQyxJQUFBQSxNQUFNLEVBQUUsSUFBSTtNQUNaQyxTQUFTLEVBQUVyQixHQUFHLENBQUNLLEVBQUU7RUFDakJpQixJQUFBQSxLQUFLLEVBQUUsaUJBQWlCO0VBQ3hCQyxJQUFBQSxNQUFNLEVBQUUsYUFBQTtLQUNUO0VBQ0QsRUFBQSxJQUFJLEVBQUU7RUFDSkosSUFBQUEsSUFBSSxFQUFFLElBQUk7RUFDVkMsSUFBQUEsTUFBTSxFQUFFLElBQUk7TUFDWkMsU0FBUyxFQUFFckIsR0FBRyxDQUFDTSxFQUFFO0VBQ2pCZ0IsSUFBQUEsS0FBSyxFQUFFLGlCQUFpQjtFQUN4QkMsSUFBQUEsTUFBTSxFQUFFLGFBQUE7S0FDVDtFQUNELEVBQUEsSUFBSSxFQUFFO0VBQ0pKLElBQUFBLElBQUksRUFBRSxJQUFJO0VBQ1ZDLElBQUFBLE1BQU0sRUFBRSxJQUFJO01BQ1pDLFNBQVMsRUFBRXJCLEdBQUcsQ0FBQ2EsRUFBRTtFQUNqQlMsSUFBQUEsS0FBSyxFQUFFLGVBQUE7S0FDUjtFQUNELEVBQUEsSUFBSSxFQUFFO0VBQ0pILElBQUFBLElBQUksRUFBRSxJQUFJO0VBQ1ZDLElBQUFBLE1BQU0sRUFBRSxJQUFJO01BQ1pDLFNBQVMsRUFBRXJCLEdBQUcsQ0FBQ1csRUFBRTtFQUNqQlcsSUFBQUEsS0FBSyxFQUFFLGVBQUE7S0FDUjtFQUNELEVBQUEsWUFBWSxFQUFFO0VBQ1pILElBQUFBLElBQUksRUFBRSxZQUFZO0VBQ2xCQyxJQUFBQSxNQUFNLEVBQUUsWUFBWTtNQUNwQkMsU0FBUyxFQUFFckIsR0FBRyxDQUFDQyxVQUFVO0VBQ3pCcUIsSUFBQUEsS0FBSyxFQUFFLE9BQU87RUFDZEMsSUFBQUEsTUFBTSxFQUFFLGNBQUE7S0FDVDtFQUNELEVBQUEsWUFBWSxFQUFFO0VBQ1pKLElBQUFBLElBQUksRUFBRSxZQUFZO01BQ2xCQyxNQUFNLEVBQUdJLE1BQU0sSUFBSztFQUFDLE1BQUEsSUFBSUEsTUFBTSxDQUFDQyx5QkFBeUIsRUFBRSxFQUFFRCxNQUFNLENBQUNFLGFBQWEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUE7T0FBQztFQUM5RkMsSUFBQUEsT0FBTyxFQUFFQSxDQUFDSCxNQUFNLEVBQUVJLEtBQUssRUFBRUMsTUFBTSxLQUFLTCxNQUFNLENBQUNDLHlCQUF5QixDQUFDRyxLQUFLLEVBQUVDLE1BQU0sQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJO01BQ2xHUixTQUFTLEVBQUVyQixHQUFHLENBQUNVLElBQUk7RUFDbkJZLElBQUFBLEtBQUssRUFBRSxhQUFhO0VBQ3BCQyxJQUFBQSxNQUFNLEVBQUUsT0FBQTtLQUNUO0VBQ0QsRUFBQSxhQUFhLEVBQUU7RUFDYkosSUFBQUEsSUFBSSxFQUFFLGFBQWE7TUFDbkJDLE1BQU0sRUFBR0ksTUFBTSxJQUFLO0VBQUMsTUFBQSxJQUFJQSxNQUFNLENBQUNDLHlCQUF5QixFQUFFLEVBQUVELE1BQU0sQ0FBQ0UsYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtPQUFDO0VBQy9GQyxJQUFBQSxPQUFPLEVBQUVBLENBQUNILE1BQU0sRUFBRUksS0FBSyxFQUFFQyxNQUFNLEtBQUtMLE1BQU0sQ0FBQ0MseUJBQXlCLENBQUNHLEtBQUssRUFBRUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUk7TUFDbEdSLFNBQVMsRUFBRXJCLEdBQUcsQ0FBQ1EsS0FBSztFQUNwQmMsSUFBQUEsS0FBSyxFQUFFLGNBQWM7RUFDckJDLElBQUFBLE1BQU0sRUFBRSxjQUFBO0tBQ1Q7RUFDRCxFQUFBLElBQUksRUFBRTtFQUNKSixJQUFBQSxJQUFJLEVBQUUsSUFBSTtNQUNWQyxNQUFNLEVBQUdJLE1BQU0sSUFBS0EsTUFBTSxDQUFDTSxLQUFLLENBQUMsU0FBUyxDQUFDO01BQzNDSCxPQUFPLEVBQUVBLE1BQU0sS0FBSztNQUNwQk4sU0FBUyxFQUFFckIsR0FBRyxDQUFDTyxFQUFFO0VBQ2pCZSxJQUFBQSxLQUFLLEVBQUUsd0JBQXdCO0VBQy9CQyxJQUFBQSxNQUFNLEVBQUUsY0FBQTtFQUNWLEdBQUE7RUFDRixDQUFDLENBQUE7RUFHRCxNQUFNUSxVQUFVLENBQUM7SUFDZkMsV0FBV0EsQ0FBQ0MsS0FBSyxFQUFFO01BQ2pCLElBQUksQ0FBQ0MsQ0FBQyxHQUFHLElBQUksQ0FBQTtNQUNiLElBQUksQ0FBQ1YsTUFBTSxHQUFHLElBQUksQ0FBQTtNQUNsQixJQUFJLENBQUNXLFFBQVEsR0FBRyxFQUFFLENBQUE7RUFDbEIsSUFBQSxJQUFJLENBQUNDLE9BQU8sR0FBRyxFQUFFLENBQUE7RUFDakIsSUFBQSxJQUFJLENBQUNDLEtBQUssR0FBRyxFQUFFLENBQUE7TUFDZixJQUFJLENBQUNDLE9BQU8sR0FBRyxFQUFFLENBQUE7RUFFakIsSUFBQSxJQUFJQyxPQUFPLEdBQUdOLEtBQUssQ0FBQ00sT0FBTyxDQUFBO0VBQzNCLElBQUEsSUFBSUEsT0FBTyxJQUFJLENBQUNBLE9BQU8sQ0FBQ0MsT0FBTyxFQUFFO1FBQy9CRCxPQUFPLEdBQUdFLFFBQVEsQ0FBQ0MsY0FBYyxDQUFDVCxLQUFLLENBQUNNLE9BQU8sQ0FBQyxDQUFBO0VBQ2xELEtBQUE7TUFDQSxJQUFJLENBQUNBLE9BQU8sRUFBRTtRQUNaQSxPQUFPLEdBQUdFLFFBQVEsQ0FBQ0UsSUFBSSxDQUFBO0VBQ3pCLEtBQUE7TUFDQSxJQUFJLENBQUNDLHVCQUF1QixDQUFDTCxPQUFPLEVBQUVOLEtBQUssQ0FBQ0UsUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUE7RUFDdE1NLElBQUFBLFFBQVEsQ0FBQ0ksZ0JBQWdCLENBQUMsU0FBUyxFQUFHWCxDQUFDLElBQUssSUFBSSxDQUFDWSxhQUFhLENBQUNaLENBQUMsQ0FBQyxDQUFDLENBQUE7TUFDbEUsSUFBSUQsS0FBSyxDQUFDVCxNQUFNLEVBQUUsSUFBSSxDQUFDdUIsU0FBUyxDQUFDZCxLQUFLLENBQUNULE1BQU0sQ0FBQyxDQUFBO0VBQ2hELEdBQUE7RUFFQW9CLEVBQUFBLHVCQUF1QkEsQ0FBQ0ksYUFBYSxFQUFFYixRQUFRLEVBQUU7TUFDL0MsSUFBSSxDQUFDRCxDQUFDLEdBQUdPLFFBQVEsQ0FBQ1EsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFBO0VBQ3RDLElBQUEsSUFBSSxDQUFDZixDQUFDLENBQUNnQixTQUFTLEdBQUcsY0FBYyxDQUFBO0VBRWpDLElBQUEsS0FBSyxJQUFJQyxPQUFPLElBQUloQixRQUFRLEVBQUU7UUFDNUIsSUFBSWdCLE9BQU8sSUFBSSxHQUFHLEVBQUU7RUFDbEIsUUFBQSxJQUFJQyxFQUFFLEdBQUdYLFFBQVEsQ0FBQ1EsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFBO1VBQ3RDRyxFQUFFLENBQUNGLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQTtFQUNqQyxRQUFBLElBQUksQ0FBQ2hCLENBQUMsQ0FBQ21CLFdBQVcsQ0FBQ0QsRUFBRSxDQUFDLENBQUE7RUFDeEIsT0FBQyxNQUFNO0VBQ0wsUUFBQSxJQUFJRSxXQUFXLENBQUE7RUFDZixRQUFBLElBQUksT0FBT0gsT0FBTyxJQUFJLFFBQVEsRUFBRTtFQUM5Qjs7RUFFQSxVQUFBLElBQUlqQyxlQUFlLENBQUNpQyxPQUFPLENBQUMsRUFBRTtFQUM1QkcsWUFBQUEsV0FBVyxHQUFHSCxPQUFPLENBQUE7Y0FDckIsSUFBSSxDQUFDaEIsUUFBUSxDQUFDbUIsV0FBVyxDQUFDLEdBQUdwQyxlQUFlLENBQUNvQyxXQUFXLENBQUMsQ0FBQTtFQUczRCxXQUFDLE1BQU07RUFDTCxZQUFBLFNBQUE7RUFDRixXQUFBO1dBRUQsTUFBTSxJQUFJLE9BQU9ILE9BQU8sSUFBSSxRQUFRLElBQUlBLE9BQU8sQ0FBQ2hDLElBQUksRUFBRTtZQUNyRG1DLFdBQVcsR0FBR0gsT0FBTyxDQUFDaEMsSUFBSSxDQUFBO0VBQzFCLFVBQUEsSUFBSSxDQUFDZ0IsUUFBUSxDQUFDbUIsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFBO1lBQy9CLElBQUlwQyxlQUFlLENBQUNvQyxXQUFXLENBQUMsRUFBRUMsTUFBTSxDQUFDQyxNQUFNLENBQUMsSUFBSSxDQUFDckIsUUFBUSxDQUFDbUIsV0FBVyxDQUFDLEVBQUVwQyxlQUFlLENBQUNvQyxXQUFXLENBQUMsQ0FBQyxDQUFBO1lBQ3pHQyxNQUFNLENBQUNDLE1BQU0sQ0FBQyxJQUFJLENBQUNyQixRQUFRLENBQUNtQixXQUFXLENBQUMsRUFBRUgsT0FBTyxDQUFDLENBQUE7RUFHcEQsU0FBQyxNQUFNO0VBQ0wsVUFBQSxTQUFBO0VBQ0YsU0FBQTtVQUVBLElBQUk3QixLQUFLLEdBQUcsSUFBSSxDQUFDYSxRQUFRLENBQUNtQixXQUFXLENBQUMsQ0FBQ2hDLEtBQUssSUFBSWdDLFdBQVcsQ0FBQTtVQUUzRCxJQUFJLElBQUksQ0FBQ25CLFFBQVEsQ0FBQ21CLFdBQVcsQ0FBQyxDQUFDL0IsTUFBTSxFQUFFO0VBQ3JDLFVBQUEsTUFBTWtDLElBQUksR0FBRyxJQUFJLENBQUN0QixRQUFRLENBQUNtQixXQUFXLENBQUMsQ0FBQy9CLE1BQU0sQ0FBQ21DLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtFQUN6RDtZQUNBLElBQUlDLFNBQVMsR0FBRyxFQUFFLENBQUE7WUFDbEIsSUFBSUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFBO0VBQzVCLFVBQUEsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdKLElBQUksQ0FBQ0ssTUFBTSxHQUFHLENBQUMsRUFBRUQsQ0FBQyxFQUFFLEVBQUU7Y0FDeEMsUUFBUUosSUFBSSxDQUFDSSxDQUFDLENBQUM7RUFDYixjQUFBLEtBQUssTUFBTTtFQUFFRixnQkFBQUEsU0FBUyxDQUFDSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7RUFBRUgsZ0JBQUFBLG1CQUFtQixDQUFDRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7RUFBRSxnQkFBQSxNQUFBO0VBQzFFLGNBQUEsS0FBSyxLQUFLO0VBQUVKLGdCQUFBQSxTQUFTLENBQUNJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtFQUFFSCxnQkFBQUEsbUJBQW1CLENBQUNHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtFQUFFLGdCQUFBLE1BQUE7RUFDdEUsY0FBQSxLQUFLLEtBQUs7RUFBRUosZ0JBQUFBLFNBQVMsQ0FBQ0ksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0VBQUVILGdCQUFBQSxtQkFBbUIsQ0FBQ0csSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0VBQUUsZ0JBQUEsTUFBQTtFQUN2RSxjQUFBLEtBQUssUUFBUTtFQUFFSixnQkFBQUEsU0FBUyxDQUFDSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7RUFBRUgsZ0JBQUFBLG1CQUFtQixDQUFDRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7RUFBRSxnQkFBQSxNQUFBO0VBQ3hFLGNBQUEsS0FBSyxLQUFLO0VBQUVKLGdCQUFBQSxTQUFTLENBQUNJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtFQUFFSCxnQkFBQUEsbUJBQW1CLENBQUNHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtFQUFFLGdCQUFBLE1BQUE7RUFFMUUsY0FBQSxLQUFLLE9BQU87RUFBR0osZ0JBQUFBLFNBQVMsQ0FBQ0ksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0VBQUVILGdCQUFBQSxtQkFBbUIsQ0FBQ0csSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0VBQUUsZ0JBQUEsTUFBQTtFQUUxRSxjQUFBLEtBQUssS0FBSztFQUFFO0VBQ1YsZ0JBQUEsSUFBSWpELFNBQVMsRUFBRTtFQUFDNkMsa0JBQUFBLFNBQVMsQ0FBQ0ksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0VBQUVILGtCQUFBQSxtQkFBbUIsQ0FBQ0csSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0VBQUMsaUJBQUMsTUFDckU7RUFBQ0osa0JBQUFBLFNBQVMsQ0FBQ0ksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0VBQUVILGtCQUFBQSxtQkFBbUIsQ0FBQ0csSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0VBQUMsaUJBQUE7RUFDbEUsZ0JBQUEsTUFBQTtFQUNGLGNBQUEsS0FBSyxNQUFNO0VBQ1RKLGdCQUFBQSxTQUFTLENBQUNJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtFQUN4QixnQkFBQSxJQUFJakQsU0FBUyxFQUFFOEMsbUJBQW1CLENBQUNHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUN4Q0gsbUJBQW1CLENBQUNHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtFQUNwQyxnQkFBQSxNQUFBO0VBQU87RUFDWCxhQUFBO0VBQ0YsV0FBQTs7WUFDQUgsbUJBQW1CLENBQUNHLElBQUksQ0FBQ04sSUFBSSxDQUFDQSxJQUFJLENBQUNLLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO0VBQy9DLFVBQUEsSUFBSXZDLE1BQU0sR0FBRztFQUVYb0MsWUFBQUEsU0FBUyxFQUFFQSxTQUFTO0VBQ3BCUixZQUFBQSxPQUFPLEVBQUVHLFdBQUFBO2FBQ1YsQ0FBQTtFQUNEO0VBQ0EsVUFBQSxJQUFJRyxJQUFJLENBQUNBLElBQUksQ0FBQ0ssTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDRSxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUU7RUFDMUN6QyxZQUFBQSxNQUFNLENBQUNuQixJQUFJLEdBQUksQ0FBQSxLQUFBLEVBQU9xRCxJQUFJLENBQUNBLElBQUksQ0FBQ0ssTUFBTSxHQUFHLENBQUMsQ0FBRSxDQUFDLENBQUEsQ0FBQTtFQUMvQyxXQUFDLE1BQU07RUFDTHZDLFlBQUFBLE1BQU0sQ0FBQzBDLEdBQUcsR0FBR1IsSUFBSSxDQUFDQSxJQUFJLENBQUNLLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQ0ksV0FBVyxFQUFFLENBQUE7RUFDbEQsV0FBQTtFQUNBLFVBQUEsSUFBSSxDQUFDNUIsT0FBTyxDQUFDeUIsSUFBSSxDQUFDeEMsTUFBTSxDQUFDLENBQUE7RUFDekJELFVBQUFBLEtBQUssR0FBR0EsS0FBSyxDQUFDNkMsTUFBTSxDQUFFLENBQUEsRUFBQSxFQUFJUCxtQkFBbUIsQ0FBQ1EsSUFBSSxDQUFDLEdBQUcsQ0FBRSxHQUFFLENBQUMsQ0FBQTtFQUM3RCxTQUFBO1VBRUEsSUFBSSxDQUFDaEMsT0FBTyxDQUFDa0IsV0FBVyxDQUFDLEdBQUdiLFFBQVEsQ0FBQ1EsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFBO1VBQ3pELElBQUksQ0FBQ2IsT0FBTyxDQUFDa0IsV0FBVyxDQUFDLENBQUNKLFNBQVMsR0FBRywwQ0FBMEMsQ0FBQTtVQUNoRixJQUFJLENBQUNkLE9BQU8sQ0FBQ2tCLFdBQVcsQ0FBQyxDQUFDaEMsS0FBSyxHQUFHQSxLQUFLLENBQUE7RUFDdkMsUUFBQSxJQUFJLENBQUNjLE9BQU8sQ0FBQ2tCLFdBQVcsQ0FBQyxDQUFDakMsU0FBUyxHQUFHLElBQUksQ0FBQ2MsUUFBUSxDQUFDbUIsV0FBVyxDQUFDLENBQUNqQyxTQUFTLENBQUE7VUFFMUUsSUFBSSxDQUFDZSxPQUFPLENBQUNrQixXQUFXLENBQUMsQ0FBQ1QsZ0JBQWdCLENBQUMsV0FBVyxFQUFHWCxDQUFDLElBQUssSUFBSSxDQUFDbUMsV0FBVyxDQUFDZixXQUFXLEVBQUVwQixDQUFDLENBQUMsQ0FBQyxDQUFBO1VBQ2hHLElBQUksQ0FBQ0EsQ0FBQyxDQUFDbUIsV0FBVyxDQUFDLElBQUksQ0FBQ2pCLE9BQU8sQ0FBQ2tCLFdBQVcsQ0FBQyxDQUFDLENBQUE7RUFDL0MsT0FBQTtFQUNGLEtBQUE7RUFDQU4sSUFBQUEsYUFBYSxDQUFDSyxXQUFXLENBQUMsSUFBSSxDQUFDbkIsQ0FBQyxDQUFDLENBQUE7RUFDbkMsR0FBQTtFQUVBbUMsRUFBQUEsV0FBV0EsQ0FBQ2YsV0FBVyxFQUFFZ0IsS0FBSyxFQUFFO0VBQzlCLElBQUEsSUFBSSxDQUFDLElBQUksQ0FBQzlDLE1BQU0sRUFBRSxPQUFBO01BQ2xCOEMsS0FBSyxDQUFDQyxjQUFjLEVBQUUsQ0FBQTtNQUN0QixJQUFJLE9BQU8sSUFBSSxDQUFDcEMsUUFBUSxDQUFDbUIsV0FBVyxDQUFDLENBQUNsQyxNQUFNLElBQUksUUFBUSxFQUFFO0VBQ3hELE1BQUEsSUFBSSxJQUFJLENBQUNpQixLQUFLLENBQUNpQixXQUFXLENBQUMsS0FBSyxLQUFLLEVBQUUsSUFBSSxDQUFDOUIsTUFBTSxDQUFDZ0QsZUFBZSxDQUFDbEIsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQ2pGLElBQUksQ0FBQzlCLE1BQU0sQ0FBQ2dELGVBQWUsQ0FBQ2xCLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQTtFQUN0RCxLQUFDLE1BQU0sSUFBSSxPQUFPLElBQUksQ0FBQ25CLFFBQVEsQ0FBQ21CLFdBQVcsQ0FBQyxDQUFDbEMsTUFBTSxJQUFJLFVBQVUsRUFBRTtRQUNqRSxJQUFJLENBQUNlLFFBQVEsQ0FBQ21CLFdBQVcsQ0FBQyxDQUFDbEMsTUFBTSxDQUFDLElBQUksQ0FBQ0ksTUFBTSxDQUFDLENBQUE7RUFDaEQsS0FBQTtFQUNGLEdBQUE7SUFFQXVCLFNBQVNBLENBQUN2QixNQUFNLEVBQUU7TUFDaEIsSUFBSSxDQUFDQSxNQUFNLEdBQUdBLE1BQU0sQ0FBQTtFQUNwQkEsSUFBQUEsTUFBTSxDQUFDcUIsZ0JBQWdCLENBQUMsV0FBVyxFQUFHWCxDQUFDLElBQUssSUFBSSxDQUFDdUMsZUFBZSxDQUFDdkMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUN0RSxHQUFBO0lBRUF1QyxlQUFlQSxDQUFDSCxLQUFLLEVBQUU7TUFDckIsSUFBSUEsS0FBSyxDQUFDSSxZQUFZLEVBQUU7RUFDdEIsTUFBQSxLQUFLLElBQUl2QixPQUFPLElBQUksSUFBSSxDQUFDaEIsUUFBUSxFQUFFO1VBQ2pDLElBQUltQyxLQUFLLENBQUNJLFlBQVksQ0FBQ3ZCLE9BQU8sQ0FBQyxLQUFLd0IsU0FBUyxFQUFFO1lBQzdDLElBQUksSUFBSSxDQUFDeEMsUUFBUSxDQUFDZ0IsT0FBTyxDQUFDLENBQUN4QixPQUFPLEVBQUUsSUFBSSxDQUFDVSxLQUFLLENBQUNjLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQ2hCLFFBQVEsQ0FBQ2dCLE9BQU8sQ0FBQyxDQUFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQ0gsTUFBTSxFQUFFOEMsS0FBSyxDQUFDMUMsS0FBSyxFQUFFMEMsS0FBSyxDQUFDekMsTUFBTSxDQUFDLENBQUMsS0FDNUgsSUFBSSxDQUFDUSxLQUFLLENBQUNjLE9BQU8sQ0FBQyxHQUFHbUIsS0FBSyxDQUFDMUMsS0FBSyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUE7RUFDdkQsU0FBQyxNQUFNO1lBQ0wsSUFBSSxDQUFDUyxLQUFLLENBQUNjLE9BQU8sQ0FBQyxHQUFHbUIsS0FBSyxDQUFDSSxZQUFZLENBQUN2QixPQUFPLENBQUMsQ0FBQTtFQUNuRCxTQUFBO1VBRUEsSUFBSSxJQUFJLENBQUNkLEtBQUssQ0FBQ2MsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ2hDLElBQUksQ0FBQ2YsT0FBTyxDQUFDZSxPQUFPLENBQUMsQ0FBQ0QsU0FBUyxHQUFHLHdDQUF3QyxDQUFBO1dBQzNFLE1BQU0sSUFBSSxJQUFJLENBQUNiLEtBQUssQ0FBQ2MsT0FBTyxDQUFDLEtBQUssS0FBSyxFQUFFO1lBQ3hDLElBQUksQ0FBQ2YsT0FBTyxDQUFDZSxPQUFPLENBQUMsQ0FBQ0QsU0FBUyxHQUFHLDBDQUEwQyxDQUFBO0VBQzlFLFNBQUMsTUFBTTtZQUNMLElBQUksQ0FBQ2QsT0FBTyxDQUFDZSxPQUFPLENBQUMsQ0FBQ0QsU0FBUyxHQUFJLDBDQUEwQyxDQUFBO0VBQy9FLFNBQUE7RUFDRixPQUFBO0VBQ0YsS0FBQTtFQUNGLEdBQUE7SUFFQUosYUFBYUEsQ0FBQ3dCLEtBQUssRUFBRTtNQUNuQk0sS0FBSyxFQUFFLEtBQUssSUFBSXJELE1BQU0sSUFBSSxJQUFJLENBQUNlLE9BQU8sRUFBRTtRQUN0QyxJQUFLZixNQUFNLENBQUMwQyxHQUFHLElBQUlLLEtBQUssQ0FBQ0wsR0FBRyxDQUFDQyxXQUFXLEVBQUUsSUFBSTNDLE1BQU0sQ0FBQzBDLEdBQUcsSUFBTTFDLE1BQU0sQ0FBQ25CLElBQUksSUFBSWtFLEtBQUssQ0FBQ2xFLElBQUksSUFBSW1CLE1BQU0sQ0FBQ25CLElBQUssRUFBRTtFQUN2RztFQUNBLFFBQUEsS0FBSyxJQUFJeUUsUUFBUSxJQUFJdEQsTUFBTSxDQUFDb0MsU0FBUyxFQUFFO0VBQ3JDLFVBQUEsSUFBSSxDQUFDVyxLQUFLLENBQUNPLFFBQVEsQ0FBQyxFQUFFLFNBQVNELEtBQUssQ0FBQTtFQUN0QyxTQUFBO0VBQ0E7VUFDQSxJQUFJLENBQUNQLFdBQVcsQ0FBQzlDLE1BQU0sQ0FBQzRCLE9BQU8sRUFBRW1CLEtBQUssQ0FBQyxDQUFBO0VBQ3ZDLFFBQUEsT0FBQTtFQUNGLE9BQUE7RUFDRixLQUFBO0VBQ0YsR0FBQTtFQUNGOzs7O0VDNVBBLElBQUlRLEtBQUssR0FBRyxVQUFVQyxFQUFFLEVBQUU7SUFDeEIsT0FBT0EsRUFBRSxJQUFJQSxFQUFFLENBQUNDLElBQUksS0FBS0EsSUFBSSxJQUFJRCxFQUFFLENBQUE7RUFDckMsQ0FBQyxDQUFBOztFQUVEO01BQ0FFLFFBQWM7RUFDWjtFQUNBSCxLQUFLLENBQUMsT0FBT0ksVUFBVSxJQUFJLFFBQVEsSUFBSUEsVUFBVSxDQUFDLElBQ2xESixLQUFLLENBQUMsT0FBT0ssTUFBTSxJQUFJLFFBQVEsSUFBSUEsTUFBTSxDQUFDO0VBQzFDO0VBQ0FMLEtBQUssQ0FBQyxPQUFPTSxJQUFJLElBQUksUUFBUSxJQUFJQSxJQUFJLENBQUMsSUFDdENOLEtBQUssQ0FBQyxPQUFPTyxjQUFNLElBQUksUUFBUSxJQUFJQSxjQUFNLENBQUM7RUFDMUM7RUFDQyxZQUFZO0VBQUUsRUFBQSxPQUFPLElBQUksQ0FBQTtFQUFFLENBQUMsRUFBRyxJQUFJQyxjQUFJLElBQUlDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRTs7TUNidkVOLE9BQWMsR0FBRyxVQUFVTyxJQUFJLEVBQUU7SUFDL0IsSUFBSTtFQUNGLElBQUEsT0FBTyxDQUFDLENBQUNBLElBQUksRUFBRSxDQUFBO0tBQ2hCLENBQUMsT0FBT0MsS0FBSyxFQUFFO0VBQ2QsSUFBQSxPQUFPLElBQUksQ0FBQTtFQUNiLEdBQUE7RUFDRixDQUFDOztFQ05ELElBQUlDLE9BQUssR0FBR0MsT0FBNkIsQ0FBQTs7RUFFekM7RUFDQVYsSUFBQUEsV0FBYyxHQUFHLENBQUNTLE9BQUssQ0FBQyxZQUFZO0VBQ2xDO0lBQ0EsT0FBT25DLE1BQU0sQ0FBQ3FDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO01BQUVDLEdBQUcsRUFBRSxZQUFZO0VBQUUsTUFBQSxPQUFPLENBQUMsQ0FBQTtFQUFFLEtBQUE7RUFBRSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUE7RUFDbEYsQ0FBQyxDQUFDOzs7Ozs7OztFQ05GLElBQUlILE9BQUssR0FBR0MsT0FBNkIsQ0FBQTtFQUV6Q1YsSUFBQUEsa0JBQWMsR0FBRyxDQUFDUyxPQUFLLENBQUMsWUFBWTtFQUNsQztJQUNBLElBQUkzRSxJQUFJLEdBQUksWUFBWSxhQUFlLENBQUUrRSxJQUFJLEVBQUUsQ0FBQTtFQUMvQztJQUNBLE9BQU8sT0FBTy9FLElBQUksSUFBSSxVQUFVLElBQUlBLElBQUksQ0FBQ2dGLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQTtFQUN0RSxDQUFDLENBQUM7O0VDUEYsSUFBSUMsYUFBVyxHQUFHTCxrQkFBNEMsQ0FBQTtFQUU5RCxJQUFJTSxtQkFBaUIsR0FBR1YsUUFBUSxDQUFDVyxTQUFTLENBQUE7RUFDMUMsSUFBSUMsTUFBSSxHQUFHRixtQkFBaUIsQ0FBQ0UsSUFBSSxDQUFBO0VBQ2pDLElBQUlDLG1CQUFtQixHQUFHSixhQUFXLElBQUlDLG1CQUFpQixDQUFDSCxJQUFJLENBQUNBLElBQUksQ0FBQ0ssTUFBSSxFQUFFQSxNQUFJLENBQUMsQ0FBQTtFQUVoRmxCLElBQUFBLG1CQUFjLEdBQUdlLGFBQVcsR0FBR0ksbUJBQW1CLEdBQUcsVUFBVUMsRUFBRSxFQUFFO0VBQ2pFLEVBQUEsT0FBTyxZQUFZO0VBQ2pCLElBQUEsT0FBT0YsTUFBSSxDQUFDRyxLQUFLLENBQUNELEVBQUUsRUFBRUUsU0FBUyxDQUFDLENBQUE7S0FDakMsQ0FBQTtFQUNILENBQUM7O0VDVkQsSUFBSUMsYUFBVyxHQUFHLE9BQU8vRCxRQUFRLElBQUksUUFBUSxJQUFJQSxRQUFRLENBQUNnRSxHQUFHLENBQUE7O0VBRTdEO0VBQ0E7RUFDQSxJQUFJQyxVQUFVLEdBQUcsT0FBT0YsYUFBVyxJQUFJLFdBQVcsSUFBSUEsYUFBVyxLQUFLN0IsU0FBUyxDQUFBO0VBRS9FTSxJQUFBQSxhQUFjLEdBQUc7RUFDZndCLEVBQUFBLEdBQUcsRUFBRUQsYUFBVztFQUNoQkUsRUFBQUEsVUFBVSxFQUFFQSxVQUFBQTtFQUNkLENBQUM7O0VDVEQsSUFBSUMsY0FBWSxHQUFHaEIsYUFBb0MsQ0FBQTtFQUV2RCxJQUFJYSxhQUFXLEdBQUdHLGNBQVksQ0FBQ0YsR0FBRyxDQUFBOztFQUVsQztFQUNBO0VBQ0F4QixJQUFBQSxZQUFjLEdBQUcwQixjQUFZLENBQUNELFVBQVUsR0FBRyxVQUFVRSxRQUFRLEVBQUU7RUFDN0QsRUFBQSxPQUFPLE9BQU9BLFFBQVEsSUFBSSxVQUFVLElBQUlBLFFBQVEsS0FBS0osYUFBVyxDQUFBO0VBQ2xFLENBQUMsR0FBRyxVQUFVSSxRQUFRLEVBQUU7SUFDdEIsT0FBTyxPQUFPQSxRQUFRLElBQUksVUFBVSxDQUFBO0VBQ3RDLENBQUM7O0VDVkQ7RUFDQTtNQUNBM0IsbUJBQWMsR0FBRyxVQUFVRixFQUFFLEVBQUU7RUFDN0IsRUFBQSxPQUFPQSxFQUFFLEtBQUssSUFBSSxJQUFJQSxFQUFFLEtBQUtKLFNBQVMsQ0FBQTtFQUN4QyxDQUFDOztFQ0pELElBQUlrQyxtQkFBaUIsR0FBR2xCLG1CQUE0QyxDQUFBO0VBRXBFLElBQUltQixZQUFVLEdBQUdDLFNBQVMsQ0FBQTs7RUFFMUI7RUFDQTtNQUNBOUIsd0JBQWMsR0FBRyxVQUFVRixFQUFFLEVBQUU7RUFDN0IsRUFBQSxJQUFJOEIsbUJBQWlCLENBQUM5QixFQUFFLENBQUMsRUFBRSxNQUFNLElBQUkrQixZQUFVLENBQUMsdUJBQXVCLEdBQUcvQixFQUFFLENBQUMsQ0FBQTtFQUM3RSxFQUFBLE9BQU9BLEVBQUUsQ0FBQTtFQUNYLENBQUM7O0VDVEQsSUFBSWlDLHNCQUFzQixHQUFHckIsd0JBQWdELENBQUE7RUFFN0UsSUFBSXNCLFNBQU8sR0FBRzFELE1BQU0sQ0FBQTs7RUFFcEI7RUFDQTtNQUNBMEIsVUFBYyxHQUFHLFVBQVUyQixRQUFRLEVBQUU7RUFDbkMsRUFBQSxPQUFPSyxTQUFPLENBQUNELHNCQUFzQixDQUFDSixRQUFRLENBQUMsQ0FBQyxDQUFBO0VBQ2xELENBQUM7O0VDUkQsSUFBSU0sYUFBVyxHQUFHdkIsbUJBQTZDLENBQUE7RUFDL0QsSUFBSXdCLFFBQVEsR0FBR3hCLFVBQWlDLENBQUE7RUFFaEQsSUFBSUksY0FBYyxHQUFHbUIsYUFBVyxDQUFDLEVBQUUsQ0FBQ25CLGNBQWMsQ0FBQyxDQUFBOztFQUVuRDtFQUNBO0VBQ0E7TUFDQWQsZ0JBQWMsR0FBRzFCLE1BQU0sQ0FBQzZELE1BQU0sSUFBSSxTQUFTQSxNQUFNQSxDQUFDckMsRUFBRSxFQUFFZCxHQUFHLEVBQUU7SUFDekQsT0FBTzhCLGNBQWMsQ0FBQ29CLFFBQVEsQ0FBQ3BDLEVBQUUsQ0FBQyxFQUFFZCxHQUFHLENBQUMsQ0FBQTtFQUMxQyxDQUFDOztFQ1ZELElBQUlvRCxhQUFXLEdBQUcxQixXQUFtQyxDQUFBO0VBQ3JELElBQUl5QixRQUFNLEdBQUd6QixnQkFBd0MsQ0FBQTtFQUVyRCxJQUFJTSxpQkFBaUIsR0FBR1YsUUFBUSxDQUFDVyxTQUFTLENBQUE7RUFDMUM7RUFDQSxJQUFJb0IsYUFBYSxHQUFHRCxhQUFXLElBQUk5RCxNQUFNLENBQUNnRSx3QkFBd0IsQ0FBQTtFQUVsRSxJQUFJQyxRQUFNLEdBQUdKLFFBQU0sQ0FBQ25CLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxDQUFBO0VBQzlDO0VBQ0EsSUFBSXdCLE1BQU0sR0FBR0QsUUFBTSxJQUFLLFNBQVNFLFNBQVNBLEdBQUcsYUFBZSxDQUFFdkcsSUFBSSxLQUFLLFdBQVcsQ0FBQTtFQUNsRixJQUFJd0csY0FBWSxHQUFHSCxRQUFNLEtBQUssQ0FBQ0gsYUFBVyxJQUFLQSxhQUFXLElBQUlDLGFBQWEsQ0FBQ3JCLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxDQUFDMkIsWUFBYSxDQUFDLENBQUE7RUFFckgzQyxJQUFBQSxZQUFjLEdBQUc7RUFDZnVDLEVBQUFBLE1BQU0sRUFBRUEsUUFBTTtFQUNkQyxFQUFBQSxNQUFNLEVBQUVBLE1BQU07RUFDZEUsRUFBQUEsWUFBWSxFQUFFQSxjQUFBQTtFQUNoQixDQUFDOztFQ2hCRCxJQUFJdEMsUUFBTSxHQUFHTSxRQUE4QixDQUFBOztFQUUzQztFQUNBLElBQUlDLGdCQUFjLEdBQUdyQyxNQUFNLENBQUNxQyxjQUFjLENBQUE7RUFFMUNYLElBQUFBLHNCQUFjLEdBQUcsVUFBVWhCLEdBQUcsRUFBRTRELEtBQUssRUFBRTtJQUNyQyxJQUFJO0VBQ0ZqQyxJQUFBQSxnQkFBYyxDQUFDUCxRQUFNLEVBQUVwQixHQUFHLEVBQUU7RUFBRTRELE1BQUFBLEtBQUssRUFBRUEsS0FBSztFQUFFRCxNQUFBQSxZQUFZLEVBQUUsSUFBSTtFQUFFRSxNQUFBQSxRQUFRLEVBQUUsSUFBQTtFQUFLLEtBQUMsQ0FBQyxDQUFBO0tBQ2xGLENBQUMsT0FBT3JDLEtBQUssRUFBRTtFQUNkSixJQUFBQSxRQUFNLENBQUNwQixHQUFHLENBQUMsR0FBRzRELEtBQUssQ0FBQTtFQUNyQixHQUFBO0VBQUUsRUFBQSxPQUFPQSxLQUFLLENBQUE7RUFDaEIsQ0FBQzs7RUNYRCxJQUFJeEMsUUFBTSxHQUFHTSxRQUE4QixDQUFBO0VBQzNDLElBQUlvQyxvQkFBb0IsR0FBR3BDLHNCQUE4QyxDQUFBO0VBRXpFLElBQUlxQyxNQUFNLEdBQUcsb0JBQW9CLENBQUE7RUFDakMsSUFBSUMsT0FBSyxHQUFHNUMsUUFBTSxDQUFDMkMsTUFBTSxDQUFDLElBQUlELG9CQUFvQixDQUFDQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUE7RUFFOUQvQyxJQUFBQSxXQUFjLEdBQUdnRCxPQUFLOztFQ050QixJQUFJZixhQUFXLEdBQUd2QixtQkFBNkMsQ0FBQTtFQUMvRCxJQUFJdUMsWUFBVSxHQUFHdkMsWUFBbUMsQ0FBQTtFQUNwRCxJQUFJc0MsT0FBSyxHQUFHdEMsV0FBb0MsQ0FBQTtFQUVoRCxJQUFJd0MsZ0JBQWdCLEdBQUdqQixhQUFXLENBQUMzQixRQUFRLENBQUM2QyxRQUFRLENBQUMsQ0FBQTs7RUFFckQ7RUFDQSxJQUFJLENBQUNGLFlBQVUsQ0FBQ0QsT0FBSyxDQUFDSSxhQUFhLENBQUMsRUFBRTtFQUNwQ0osRUFBQUEsT0FBSyxDQUFDSSxhQUFhLEdBQUcsVUFBVXRELEVBQUUsRUFBRTtNQUNsQyxPQUFPb0QsZ0JBQWdCLENBQUNwRCxFQUFFLENBQUMsQ0FBQTtLQUM1QixDQUFBO0VBQ0gsQ0FBQTtNQUVBRSxlQUFjLEdBQUdnRCxPQUFLLENBQUNJLGFBQWE7O0VDYnBDLElBQUloRCxRQUFNLEdBQUdNLFFBQThCLENBQUE7RUFDM0MsSUFBSXVDLFlBQVUsR0FBR3ZDLFlBQW1DLENBQUE7RUFFcEQsSUFBSTJDLFNBQU8sR0FBR2pELFFBQU0sQ0FBQ2lELE9BQU8sQ0FBQTtFQUU1QnJELElBQUFBLHFCQUFjLEdBQUdpRCxZQUFVLENBQUNJLFNBQU8sQ0FBQyxJQUFJLGFBQWEsQ0FBQ3ZILElBQUksQ0FBQ3dILE1BQU0sQ0FBQ0QsU0FBTyxDQUFDLENBQUM7O0VDTDNFLElBQUlKLFlBQVUsR0FBR3ZDLFlBQW1DLENBQUE7RUFDcEQsSUFBSWdCLFlBQVksR0FBR2hCLGFBQW9DLENBQUE7RUFFdkQsSUFBSWEsV0FBVyxHQUFHRyxZQUFZLENBQUNGLEdBQUcsQ0FBQTtFQUVsQ3hCLElBQUFBLFVBQWMsR0FBRzBCLFlBQVksQ0FBQ0QsVUFBVSxHQUFHLFVBQVUzQixFQUFFLEVBQUU7RUFDdkQsRUFBQSxPQUFPLE9BQU9BLEVBQUUsSUFBSSxRQUFRLEdBQUdBLEVBQUUsS0FBSyxJQUFJLEdBQUdtRCxZQUFVLENBQUNuRCxFQUFFLENBQUMsSUFBSUEsRUFBRSxLQUFLeUIsV0FBVyxDQUFBO0VBQ25GLENBQUMsR0FBRyxVQUFVekIsRUFBRSxFQUFFO0VBQ2hCLEVBQUEsT0FBTyxPQUFPQSxFQUFFLElBQUksUUFBUSxHQUFHQSxFQUFFLEtBQUssSUFBSSxHQUFHbUQsWUFBVSxDQUFDbkQsRUFBRSxDQUFDLENBQUE7RUFDN0QsQ0FBQzs7OztFQ1RELElBQUlNLFFBQU0sR0FBR00sUUFBOEIsQ0FBQTtFQUMzQyxJQUFJNkMsVUFBUSxHQUFHN0MsVUFBaUMsQ0FBQTtFQUVoRCxJQUFJbEQsVUFBUSxHQUFHNEMsUUFBTSxDQUFDNUMsUUFBUSxDQUFBO0VBQzlCO0VBQ0EsSUFBSStFLE1BQU0sR0FBR2dCLFVBQVEsQ0FBQy9GLFVBQVEsQ0FBQyxJQUFJK0YsVUFBUSxDQUFDL0YsVUFBUSxDQUFDUSxhQUFhLENBQUMsQ0FBQTtNQUVuRWdDLHFCQUFjLEdBQUcsVUFBVUYsRUFBRSxFQUFFO0lBQzdCLE9BQU95QyxNQUFNLEdBQUcvRSxVQUFRLENBQUNRLGFBQWEsQ0FBQzhCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtFQUNqRCxDQUFDOztFQ1RELElBQUlzQyxhQUFXLEdBQUcxQixXQUFtQyxDQUFBO0VBQ3JELElBQUlELE9BQUssR0FBR0MsT0FBNkIsQ0FBQTtFQUN6QyxJQUFJMUMsYUFBYSxHQUFHMEMscUJBQStDLENBQUE7O0VBRW5FO0VBQ0FWLElBQUFBLFlBQWMsR0FBRyxDQUFDb0MsYUFBVyxJQUFJLENBQUMzQixPQUFLLENBQUMsWUFBWTtFQUNsRDtJQUNBLE9BQU9uQyxNQUFNLENBQUNxQyxjQUFjLENBQUMzQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFO01BQ3RENEMsR0FBRyxFQUFFLFlBQVk7RUFBRSxNQUFBLE9BQU8sQ0FBQyxDQUFBO0VBQUUsS0FBQTtFQUMvQixHQUFDLENBQUMsQ0FBQzRDLENBQUMsS0FBSyxDQUFDLENBQUE7RUFDWixDQUFDLENBQUM7O0VDVkYsSUFBSXBCLGFBQVcsR0FBRzFCLFdBQW1DLENBQUE7RUFDckQsSUFBSUQsT0FBSyxHQUFHQyxPQUE2QixDQUFBOztFQUV6QztFQUNBO0VBQ0FWLElBQUFBLG9CQUFjLEdBQUdvQyxhQUFXLElBQUkzQixPQUFLLENBQUMsWUFBWTtFQUNoRDtJQUNBLE9BQU9uQyxNQUFNLENBQUNxQyxjQUFjLENBQUMsWUFBWSxhQUFlLEVBQUUsV0FBVyxFQUFFO0VBQ3JFaUMsSUFBQUEsS0FBSyxFQUFFLEVBQUU7RUFDVEMsSUFBQUEsUUFBUSxFQUFFLEtBQUE7RUFDWixHQUFDLENBQUMsQ0FBQzVCLFNBQVMsS0FBSyxFQUFFLENBQUE7RUFDckIsQ0FBQyxDQUFDOztFQ1hGLElBQUlzQyxVQUFRLEdBQUc3QyxVQUFpQyxDQUFBO0VBRWhELElBQUkrQyxTQUFPLEdBQUdILE1BQU0sQ0FBQTtFQUNwQixJQUFJekIsWUFBVSxHQUFHQyxTQUFTLENBQUE7O0VBRTFCO01BQ0E5QixVQUFjLEdBQUcsVUFBVTJCLFFBQVEsRUFBRTtFQUNuQyxFQUFBLElBQUk0QixVQUFRLENBQUM1QixRQUFRLENBQUMsRUFBRSxPQUFPQSxRQUFRLENBQUE7SUFDdkMsTUFBTSxJQUFJRSxZQUFVLENBQUM0QixTQUFPLENBQUM5QixRQUFRLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxDQUFBO0VBQy9ELENBQUM7O0VDVEQsSUFBSVosV0FBVyxHQUFHTCxrQkFBNEMsQ0FBQTtFQUU5RCxJQUFJUSxNQUFJLEdBQUdaLFFBQVEsQ0FBQ1csU0FBUyxDQUFDQyxJQUFJLENBQUE7TUFFbENsQixZQUFjLEdBQUdlLFdBQVcsR0FBR0csTUFBSSxDQUFDTCxJQUFJLENBQUNLLE1BQUksQ0FBQyxHQUFHLFlBQVk7RUFDM0QsRUFBQSxPQUFPQSxNQUFJLENBQUNHLEtBQUssQ0FBQ0gsTUFBSSxFQUFFSSxTQUFTLENBQUMsQ0FBQTtFQUNwQyxDQUFDOztFQ05ELElBQUlsQixRQUFNLEdBQUdNLFFBQThCLENBQUE7RUFDM0MsSUFBSXVDLFlBQVUsR0FBR3ZDLFlBQW1DLENBQUE7RUFFcEQsSUFBSWdELFNBQVMsR0FBRyxVQUFVL0IsUUFBUSxFQUFFO0VBQ2xDLEVBQUEsT0FBT3NCLFlBQVUsQ0FBQ3RCLFFBQVEsQ0FBQyxHQUFHQSxRQUFRLEdBQUdqQyxTQUFTLENBQUE7RUFDcEQsQ0FBQyxDQUFBO0VBRURNLElBQUFBLFlBQWMsR0FBRyxVQUFVMkQsU0FBUyxFQUFFQyxNQUFNLEVBQUU7SUFDNUMsT0FBT3RDLFNBQVMsQ0FBQ3pDLE1BQU0sR0FBRyxDQUFDLEdBQUc2RSxTQUFTLENBQUN0RCxRQUFNLENBQUN1RCxTQUFTLENBQUMsQ0FBQyxHQUFHdkQsUUFBTSxDQUFDdUQsU0FBUyxDQUFDLElBQUl2RCxRQUFNLENBQUN1RCxTQUFTLENBQUMsQ0FBQ0MsTUFBTSxDQUFDLENBQUE7RUFDN0csQ0FBQzs7RUNURCxJQUFJM0IsYUFBVyxHQUFHdkIsbUJBQTZDLENBQUE7RUFFL0RWLElBQUFBLG1CQUFjLEdBQUdpQyxhQUFXLENBQUMsRUFBRSxDQUFDNEIsYUFBYSxDQUFDOztFQ0Y5QzdELElBQUFBLGVBQWMsR0FBRyxPQUFPakUsU0FBUyxJQUFJLFdBQVcsSUFBSXVILE1BQU0sQ0FBQ3ZILFNBQVMsQ0FBQytILFNBQVMsQ0FBQyxJQUFJLEVBQUU7O0VDQXJGLElBQUkxRCxRQUFNLEdBQUdNLFFBQThCLENBQUE7RUFDM0MsSUFBSW9ELFNBQVMsR0FBR3BELGVBQXlDLENBQUE7RUFFekQsSUFBSXFELE9BQU8sR0FBRzNELFFBQU0sQ0FBQzJELE9BQU8sQ0FBQTtFQUM1QixJQUFJQyxJQUFJLEdBQUc1RCxRQUFNLENBQUM0RCxJQUFJLENBQUE7RUFDdEIsSUFBSUMsUUFBUSxHQUFHRixPQUFPLElBQUlBLE9BQU8sQ0FBQ0UsUUFBUSxJQUFJRCxJQUFJLElBQUlBLElBQUksQ0FBQ0UsT0FBTyxDQUFBO0VBQ2xFLElBQUlDLEVBQUUsR0FBR0YsUUFBUSxJQUFJQSxRQUFRLENBQUNFLEVBQUUsQ0FBQTtFQUNoQyxJQUFJcEYsS0FBSyxFQUFFbUYsT0FBTyxDQUFBO0VBRWxCLElBQUlDLEVBQUUsRUFBRTtFQUNOcEYsRUFBQUEsS0FBSyxHQUFHb0YsRUFBRSxDQUFDMUYsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0VBQ3JCO0VBQ0E7SUFDQXlGLE9BQU8sR0FBR25GLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUlBLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUVBLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBR0EsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7RUFDckUsQ0FBQTs7RUFFQTtFQUNBO0VBQ0EsSUFBSSxDQUFDbUYsT0FBTyxJQUFJSixTQUFTLEVBQUU7RUFDekIvRSxFQUFBQSxLQUFLLEdBQUcrRSxTQUFTLENBQUMvRSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDdEMsSUFBSSxDQUFDQSxLQUFLLElBQUlBLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7RUFDNUJBLElBQUFBLEtBQUssR0FBRytFLFNBQVMsQ0FBQy9FLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQTtNQUN4QyxJQUFJQSxLQUFLLEVBQUVtRixPQUFPLEdBQUcsQ0FBQ25GLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUNoQyxHQUFBO0VBQ0YsQ0FBQTtFQUVBaUIsSUFBQUEsZUFBYyxHQUFHa0UsT0FBTzs7RUMxQnhCO0VBQ0EsSUFBSUUsVUFBVSxHQUFHMUQsZUFBeUMsQ0FBQTtFQUMxRCxJQUFJRCxPQUFLLEdBQUdDLE9BQTZCLENBQUE7RUFDekMsSUFBSU4sUUFBTSxHQUFHTSxRQUE4QixDQUFBO0VBRTNDLElBQUkrQyxTQUFPLEdBQUdyRCxRQUFNLENBQUNrRCxNQUFNLENBQUE7O0VBRTNCO01BQ0F0RCwwQkFBYyxHQUFHLENBQUMsQ0FBQzFCLE1BQU0sQ0FBQytGLHFCQUFxQixJQUFJLENBQUM1RCxPQUFLLENBQUMsWUFBWTtFQUNwRSxFQUFBLElBQUk2RCxNQUFNLEdBQUdDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO0VBQ3ZDO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsRUFBQSxPQUFPLENBQUNkLFNBQU8sQ0FBQ2EsTUFBTSxDQUFDLElBQUksRUFBRWhHLE1BQU0sQ0FBQ2dHLE1BQU0sQ0FBQyxZQUFZQyxNQUFNLENBQUM7RUFDNUQ7SUFDQSxDQUFDQSxNQUFNLENBQUNDLElBQUksSUFBSUosVUFBVSxJQUFJQSxVQUFVLEdBQUcsRUFBRSxDQUFBO0VBQ2pELENBQUMsQ0FBQzs7RUNqQkY7RUFDQSxJQUFJSyxlQUFhLEdBQUcvRCwwQkFBb0QsQ0FBQTtFQUV4RVYsSUFBQUEsY0FBYyxHQUFHeUUsZUFBYSxJQUN6QixDQUFDRixNQUFNLENBQUNDLElBQUksSUFDWixPQUFPRCxNQUFNLENBQUNHLFFBQVEsSUFBSSxRQUFROztFQ0x2QyxJQUFJQyxVQUFVLEdBQUdqRSxZQUFvQyxDQUFBO0VBQ3JELElBQUl1QyxZQUFVLEdBQUd2QyxZQUFtQyxDQUFBO0VBQ3BELElBQUltRCxhQUFhLEdBQUduRCxtQkFBOEMsQ0FBQTtFQUNsRSxJQUFJa0UsbUJBQWlCLEdBQUdsRSxjQUF5QyxDQUFBO0VBRWpFLElBQUlzQixPQUFPLEdBQUcxRCxNQUFNLENBQUE7RUFFcEIwQixJQUFBQSxVQUFjLEdBQUc0RSxtQkFBaUIsR0FBRyxVQUFVOUUsRUFBRSxFQUFFO0lBQ2pELE9BQU8sT0FBT0EsRUFBRSxJQUFJLFFBQVEsQ0FBQTtFQUM5QixDQUFDLEdBQUcsVUFBVUEsRUFBRSxFQUFFO0VBQ2hCLEVBQUEsSUFBSStFLE9BQU8sR0FBR0YsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0VBQ2xDLEVBQUEsT0FBTzFCLFlBQVUsQ0FBQzRCLE9BQU8sQ0FBQyxJQUFJaEIsYUFBYSxDQUFDZ0IsT0FBTyxDQUFDNUQsU0FBUyxFQUFFZSxPQUFPLENBQUNsQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0VBQzdFLENBQUM7O0VDWkQsSUFBSTJELFNBQU8sR0FBR0gsTUFBTSxDQUFBO01BRXBCdEQsYUFBYyxHQUFHLFVBQVUyQixRQUFRLEVBQUU7SUFDbkMsSUFBSTtNQUNGLE9BQU84QixTQUFPLENBQUM5QixRQUFRLENBQUMsQ0FBQTtLQUN6QixDQUFDLE9BQU9uQixLQUFLLEVBQUU7RUFDZCxJQUFBLE9BQU8sUUFBUSxDQUFBO0VBQ2pCLEdBQUE7RUFDRixDQUFDOztFQ1JELElBQUl5QyxZQUFVLEdBQUd2QyxZQUFtQyxDQUFBO0VBQ3BELElBQUlvRSxXQUFXLEdBQUdwRSxhQUFxQyxDQUFBO0VBRXZELElBQUltQixZQUFVLEdBQUdDLFNBQVMsQ0FBQTs7RUFFMUI7TUFDQTlCLFdBQWMsR0FBRyxVQUFVMkIsUUFBUSxFQUFFO0VBQ25DLEVBQUEsSUFBSXNCLFlBQVUsQ0FBQ3RCLFFBQVEsQ0FBQyxFQUFFLE9BQU9BLFFBQVEsQ0FBQTtJQUN6QyxNQUFNLElBQUlFLFlBQVUsQ0FBQ2lELFdBQVcsQ0FBQ25ELFFBQVEsQ0FBQyxHQUFHLG9CQUFvQixDQUFDLENBQUE7RUFDcEUsQ0FBQzs7RUNURCxJQUFJb0QsU0FBUyxHQUFHckUsV0FBa0MsQ0FBQTtFQUNsRCxJQUFJa0IsaUJBQWlCLEdBQUdsQixtQkFBNEMsQ0FBQTs7RUFFcEU7RUFDQTtFQUNBVixJQUFBQSxXQUFjLEdBQUcsVUFBVWdGLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQy9CLEVBQUEsSUFBSUMsSUFBSSxHQUFHRixDQUFDLENBQUNDLENBQUMsQ0FBQyxDQUFBO0lBQ2YsT0FBT3JELGlCQUFpQixDQUFDc0QsSUFBSSxDQUFDLEdBQUd4RixTQUFTLEdBQUdxRixTQUFTLENBQUNHLElBQUksQ0FBQyxDQUFBO0VBQzlELENBQUM7O0VDUkQsSUFBSWhFLE1BQUksR0FBR1IsWUFBcUMsQ0FBQTtFQUNoRCxJQUFJdUMsWUFBVSxHQUFHdkMsWUFBbUMsQ0FBQTtFQUNwRCxJQUFJNkMsVUFBUSxHQUFHN0MsVUFBaUMsQ0FBQTtFQUVoRCxJQUFJbUIsWUFBVSxHQUFHQyxTQUFTLENBQUE7O0VBRTFCO0VBQ0E7RUFDQTlCLElBQUFBLHFCQUFjLEdBQUcsVUFBVW1GLEtBQUssRUFBRUMsSUFBSSxFQUFFO0lBQ3RDLElBQUloRSxFQUFFLEVBQUVpRSxHQUFHLENBQUE7SUFDWCxJQUFJRCxJQUFJLEtBQUssUUFBUSxJQUFJbkMsWUFBVSxDQUFDN0IsRUFBRSxHQUFHK0QsS0FBSyxDQUFDaEMsUUFBUSxDQUFDLElBQUksQ0FBQ0ksVUFBUSxDQUFDOEIsR0FBRyxHQUFHbkUsTUFBSSxDQUFDRSxFQUFFLEVBQUUrRCxLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU9FLEdBQUcsQ0FBQTtJQUN4RyxJQUFJcEMsWUFBVSxDQUFDN0IsRUFBRSxHQUFHK0QsS0FBSyxDQUFDRyxPQUFPLENBQUMsSUFBSSxDQUFDL0IsVUFBUSxDQUFDOEIsR0FBRyxHQUFHbkUsTUFBSSxDQUFDRSxFQUFFLEVBQUUrRCxLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU9FLEdBQUcsQ0FBQTtJQUNsRixJQUFJRCxJQUFJLEtBQUssUUFBUSxJQUFJbkMsWUFBVSxDQUFDN0IsRUFBRSxHQUFHK0QsS0FBSyxDQUFDaEMsUUFBUSxDQUFDLElBQUksQ0FBQ0ksVUFBUSxDQUFDOEIsR0FBRyxHQUFHbkUsTUFBSSxDQUFDRSxFQUFFLEVBQUUrRCxLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU9FLEdBQUcsQ0FBQTtFQUN4RyxFQUFBLE1BQU0sSUFBSXhELFlBQVUsQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFBO0VBQ2pFLENBQUM7Ozs7Ozs7O0VDYkQsSUFBSW1CLE9BQUssR0FBR3RDLFdBQW9DLENBQUE7RUFFaEQsQ0FBQ1YsZ0JBQWMsR0FBRyxVQUFVaEIsR0FBRyxFQUFFNEQsS0FBSyxFQUFFO0VBQ3RDLEVBQUEsT0FBT0ksT0FBSyxDQUFDaEUsR0FBRyxDQUFDLEtBQUtnRSxPQUFLLENBQUNoRSxHQUFHLENBQUMsR0FBRzRELEtBQUssS0FBS2xELFNBQVMsR0FBR2tELEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQTtFQUN0RSxDQUFDLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDOUQsSUFBSSxDQUFDO0VBQ3RCb0YsRUFBQUEsT0FBTyxFQUFFLFFBQVE7RUFDakJxQixFQUFBQSxJQUFJLEVBQXFCLFFBQVE7RUFDakNDLEVBQUFBLFNBQVMsRUFBRSwyQ0FBMkM7RUFDdERDLEVBQUFBLE9BQU8sRUFBRSwwREFBMEQ7RUFDbkVDLEVBQUFBLE1BQU0sRUFBRSxxQ0FBQTtFQUNWLENBQUMsQ0FBQzs7RUNYRixJQUFJekQsYUFBVyxHQUFHdkIsbUJBQTZDLENBQUE7RUFFL0QsSUFBSWlGLEVBQUUsR0FBRyxDQUFDLENBQUE7RUFDVixJQUFJQyxPQUFPLEdBQUc3RixJQUFJLENBQUM4RixNQUFNLEVBQUUsQ0FBQTtFQUMzQixJQUFJMUMsUUFBUSxHQUFHbEIsYUFBVyxDQUFDLEdBQUcsQ0FBQ2tCLFFBQVEsQ0FBQyxDQUFBO01BRXhDbkQsS0FBYyxHQUFHLFVBQVVoQixHQUFHLEVBQUU7SUFDOUIsT0FBTyxTQUFTLElBQUlBLEdBQUcsS0FBS1UsU0FBUyxHQUFHLEVBQUUsR0FBR1YsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHbUUsUUFBUSxDQUFDLEVBQUV3QyxFQUFFLEdBQUdDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtFQUN6RixDQUFDOztFQ1JELElBQUl4RixRQUFNLEdBQUdNLFFBQThCLENBQUE7RUFDM0MsSUFBSW9GLFFBQU0sR0FBR3BGLGFBQThCLENBQUE7RUFDM0MsSUFBSXlCLFFBQU0sR0FBR3pCLGdCQUF3QyxDQUFBO0VBQ3JELElBQUlxRixLQUFHLEdBQUdyRixLQUEyQixDQUFBO0VBQ3JDLElBQUkrRCxhQUFhLEdBQUcvRCwwQkFBb0QsQ0FBQTtFQUN4RSxJQUFJa0UsaUJBQWlCLEdBQUdsRSxjQUF5QyxDQUFBO0VBRWpFLElBQUk2RCxRQUFNLEdBQUduRSxRQUFNLENBQUNtRSxNQUFNLENBQUE7RUFDMUIsSUFBSXlCLHFCQUFxQixHQUFHRixRQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7RUFDekMsSUFBSUcscUJBQXFCLEdBQUdyQixpQkFBaUIsR0FBR0wsUUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJQSxRQUFNLEdBQUdBLFFBQU0sSUFBSUEsUUFBTSxDQUFDMkIsYUFBYSxJQUFJSCxLQUFHLENBQUE7TUFFL0cvRixpQkFBYyxHQUFHLFVBQVU5RCxJQUFJLEVBQUU7RUFDL0IsRUFBQSxJQUFJLENBQUNpRyxRQUFNLENBQUM2RCxxQkFBcUIsRUFBRTlKLElBQUksQ0FBQyxFQUFFO01BQ3hDOEoscUJBQXFCLENBQUM5SixJQUFJLENBQUMsR0FBR3VJLGFBQWEsSUFBSXRDLFFBQU0sQ0FBQ29DLFFBQU0sRUFBRXJJLElBQUksQ0FBQyxHQUMvRHFJLFFBQU0sQ0FBQ3JJLElBQUksQ0FBQyxHQUNaK0oscUJBQXFCLENBQUMsU0FBUyxHQUFHL0osSUFBSSxDQUFDLENBQUE7RUFDN0MsR0FBQTtJQUFFLE9BQU84SixxQkFBcUIsQ0FBQzlKLElBQUksQ0FBQyxDQUFBO0VBQ3RDLENBQUM7O0VDakJELElBQUlnRixJQUFJLEdBQUdSLFlBQXFDLENBQUE7RUFDaEQsSUFBSTZDLFVBQVEsR0FBRzdDLFVBQWlDLENBQUE7RUFDaEQsSUFBSXlGLFVBQVEsR0FBR3pGLFVBQWlDLENBQUE7RUFDaEQsSUFBSTBGLFNBQVMsR0FBRzFGLFdBQWtDLENBQUE7RUFDbEQsSUFBSTJGLG1CQUFtQixHQUFHM0YscUJBQTZDLENBQUE7RUFDdkUsSUFBSTRGLGVBQWUsR0FBRzVGLGlCQUF5QyxDQUFBO0VBRS9ELElBQUltQixZQUFVLEdBQUdDLFNBQVMsQ0FBQTtFQUMxQixJQUFJeUUsWUFBWSxHQUFHRCxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUE7O0VBRWpEO0VBQ0E7RUFDQXRHLElBQUFBLGFBQWMsR0FBRyxVQUFVbUYsS0FBSyxFQUFFQyxJQUFJLEVBQUU7RUFDdEMsRUFBQSxJQUFJLENBQUM3QixVQUFRLENBQUM0QixLQUFLLENBQUMsSUFBSWdCLFVBQVEsQ0FBQ2hCLEtBQUssQ0FBQyxFQUFFLE9BQU9BLEtBQUssQ0FBQTtFQUNyRCxFQUFBLElBQUlxQixZQUFZLEdBQUdKLFNBQVMsQ0FBQ2pCLEtBQUssRUFBRW9CLFlBQVksQ0FBQyxDQUFBO0VBQ2pELEVBQUEsSUFBSUUsTUFBTSxDQUFBO0VBQ1YsRUFBQSxJQUFJRCxZQUFZLEVBQUU7RUFDaEIsSUFBQSxJQUFJcEIsSUFBSSxLQUFLMUYsU0FBUyxFQUFFMEYsSUFBSSxHQUFHLFNBQVMsQ0FBQTtNQUN4Q3FCLE1BQU0sR0FBR3ZGLElBQUksQ0FBQ3NGLFlBQVksRUFBRXJCLEtBQUssRUFBRUMsSUFBSSxDQUFDLENBQUE7RUFDeEMsSUFBQSxJQUFJLENBQUM3QixVQUFRLENBQUNrRCxNQUFNLENBQUMsSUFBSU4sVUFBUSxDQUFDTSxNQUFNLENBQUMsRUFBRSxPQUFPQSxNQUFNLENBQUE7RUFDeEQsSUFBQSxNQUFNLElBQUk1RSxZQUFVLENBQUMseUNBQXlDLENBQUMsQ0FBQTtFQUNqRSxHQUFBO0VBQ0EsRUFBQSxJQUFJdUQsSUFBSSxLQUFLMUYsU0FBUyxFQUFFMEYsSUFBSSxHQUFHLFFBQVEsQ0FBQTtFQUN2QyxFQUFBLE9BQU9pQixtQkFBbUIsQ0FBQ2xCLEtBQUssRUFBRUMsSUFBSSxDQUFDLENBQUE7RUFDekMsQ0FBQzs7RUN4QkQsSUFBSXNCLFdBQVcsR0FBR2hHLGFBQW9DLENBQUE7RUFDdEQsSUFBSXlGLFFBQVEsR0FBR3pGLFVBQWlDLENBQUE7O0VBRWhEO0VBQ0E7TUFDQVYsZUFBYyxHQUFHLFVBQVUyQixRQUFRLEVBQUU7RUFDbkMsRUFBQSxJQUFJM0MsR0FBRyxHQUFHMEgsV0FBVyxDQUFDL0UsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQ3pDLE9BQU93RSxRQUFRLENBQUNuSCxHQUFHLENBQUMsR0FBR0EsR0FBRyxHQUFHQSxHQUFHLEdBQUcsRUFBRSxDQUFBO0VBQ3ZDLENBQUM7O0VDUkQsSUFBSW9ELGFBQVcsR0FBRzFCLFdBQW1DLENBQUE7RUFDckQsSUFBSWlHLGNBQWMsR0FBR2pHLFlBQXNDLENBQUE7RUFDM0QsSUFBSWtHLHVCQUF1QixHQUFHbEcsb0JBQStDLENBQUE7RUFDN0UsSUFBSW1HLFVBQVEsR0FBR25HLFVBQWlDLENBQUE7RUFDaEQsSUFBSW9HLGFBQWEsR0FBR3BHLGVBQXVDLENBQUE7RUFFM0QsSUFBSW1CLFVBQVUsR0FBR0MsU0FBUyxDQUFBO0VBQzFCO0VBQ0EsSUFBSWlGLGVBQWUsR0FBR3pJLE1BQU0sQ0FBQ3FDLGNBQWMsQ0FBQTtFQUMzQztFQUNBLElBQUlxRyx5QkFBeUIsR0FBRzFJLE1BQU0sQ0FBQ2dFLHdCQUF3QixDQUFBO0VBQy9ELElBQUkyRSxVQUFVLEdBQUcsWUFBWSxDQUFBO0VBQzdCLElBQUl2RSxZQUFZLEdBQUcsY0FBYyxDQUFBO0VBQ2pDLElBQUl3RSxRQUFRLEdBQUcsVUFBVSxDQUFBOztFQUV6QjtFQUNBO0VBQ0FDLG9CQUFBQSxDQUFBQSxDQUFTLEdBQUcvRSxhQUFXLEdBQUd3RSx1QkFBdUIsR0FBRyxTQUFTakcsY0FBY0EsQ0FBQ3lHLENBQUMsRUFBRW5DLENBQUMsRUFBRW9DLFVBQVUsRUFBRTtJQUM1RlIsVUFBUSxDQUFDTyxDQUFDLENBQUMsQ0FBQTtFQUNYbkMsRUFBQUEsQ0FBQyxHQUFHNkIsYUFBYSxDQUFDN0IsQ0FBQyxDQUFDLENBQUE7SUFDcEI0QixVQUFRLENBQUNRLFVBQVUsQ0FBQyxDQUFBO0lBQ3BCLElBQUksT0FBT0QsQ0FBQyxLQUFLLFVBQVUsSUFBSW5DLENBQUMsS0FBSyxXQUFXLElBQUksT0FBTyxJQUFJb0MsVUFBVSxJQUFJSCxRQUFRLElBQUlHLFVBQVUsSUFBSSxDQUFDQSxVQUFVLENBQUNILFFBQVEsQ0FBQyxFQUFFO0VBQzVILElBQUEsSUFBSUksT0FBTyxHQUFHTix5QkFBeUIsQ0FBQ0ksQ0FBQyxFQUFFbkMsQ0FBQyxDQUFDLENBQUE7RUFDN0MsSUFBQSxJQUFJcUMsT0FBTyxJQUFJQSxPQUFPLENBQUNKLFFBQVEsQ0FBQyxFQUFFO0VBQ2hDRSxNQUFBQSxDQUFDLENBQUNuQyxDQUFDLENBQUMsR0FBR29DLFVBQVUsQ0FBQ3pFLEtBQUssQ0FBQTtFQUN2QnlFLE1BQUFBLFVBQVUsR0FBRztFQUNYMUUsUUFBQUEsWUFBWSxFQUFFRCxZQUFZLElBQUkyRSxVQUFVLEdBQUdBLFVBQVUsQ0FBQzNFLFlBQVksQ0FBQyxHQUFHNEUsT0FBTyxDQUFDNUUsWUFBWSxDQUFDO0VBQzNGNkUsUUFBQUEsVUFBVSxFQUFFTixVQUFVLElBQUlJLFVBQVUsR0FBR0EsVUFBVSxDQUFDSixVQUFVLENBQUMsR0FBR0ssT0FBTyxDQUFDTCxVQUFVLENBQUM7RUFDbkZwRSxRQUFBQSxRQUFRLEVBQUUsS0FBQTtTQUNYLENBQUE7RUFDSCxLQUFBO0VBQ0YsR0FBQTtFQUFFLEVBQUEsT0FBT2tFLGVBQWUsQ0FBQ0ssQ0FBQyxFQUFFbkMsQ0FBQyxFQUFFb0MsVUFBVSxDQUFDLENBQUE7RUFDNUMsQ0FBQyxHQUFHTixlQUFlLEdBQUcsU0FBU3BHLGNBQWNBLENBQUN5RyxDQUFDLEVBQUVuQyxDQUFDLEVBQUVvQyxVQUFVLEVBQUU7SUFDOURSLFVBQVEsQ0FBQ08sQ0FBQyxDQUFDLENBQUE7RUFDWG5DLEVBQUFBLENBQUMsR0FBRzZCLGFBQWEsQ0FBQzdCLENBQUMsQ0FBQyxDQUFBO0lBQ3BCNEIsVUFBUSxDQUFDUSxVQUFVLENBQUMsQ0FBQTtJQUNwQixJQUFJVixjQUFjLEVBQUUsSUFBSTtFQUN0QixJQUFBLE9BQU9JLGVBQWUsQ0FBQ0ssQ0FBQyxFQUFFbkMsQ0FBQyxFQUFFb0MsVUFBVSxDQUFDLENBQUE7RUFDMUMsR0FBQyxDQUFDLE9BQU83RyxLQUFLLEVBQUUsYUFBRTtFQUNsQixFQUFBLElBQUksS0FBSyxJQUFJNkcsVUFBVSxJQUFJLEtBQUssSUFBSUEsVUFBVSxFQUFFLE1BQU0sSUFBSXhGLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO0lBQy9GLElBQUksT0FBTyxJQUFJd0YsVUFBVSxFQUFFRCxDQUFDLENBQUNuQyxDQUFDLENBQUMsR0FBR29DLFVBQVUsQ0FBQ3pFLEtBQUssQ0FBQTtFQUNsRCxFQUFBLE9BQU93RSxDQUFDLENBQUE7RUFDVjs7RUMxQ0FwSCxJQUFBQSwwQkFBYyxHQUFHLFVBQVV3SCxNQUFNLEVBQUU1RSxLQUFLLEVBQUU7SUFDeEMsT0FBTztFQUNMMkUsSUFBQUEsVUFBVSxFQUFFLEVBQUVDLE1BQU0sR0FBRyxDQUFDLENBQUM7RUFDekI3RSxJQUFBQSxZQUFZLEVBQUUsRUFBRTZFLE1BQU0sR0FBRyxDQUFDLENBQUM7RUFDM0IzRSxJQUFBQSxRQUFRLEVBQUUsRUFBRTJFLE1BQU0sR0FBRyxDQUFDLENBQUM7RUFDdkI1RSxJQUFBQSxLQUFLLEVBQUVBLEtBQUFBO0tBQ1IsQ0FBQTtFQUNILENBQUM7O0VDUEQsSUFBSVIsYUFBVyxHQUFHMUIsV0FBbUMsQ0FBQTtFQUNyRCxJQUFJK0csb0JBQW9CLEdBQUcvRyxvQkFBOEMsQ0FBQTtFQUN6RSxJQUFJZ0gsd0JBQXdCLEdBQUdoSCwwQkFBa0QsQ0FBQTtNQUVqRlYsNkJBQWMsR0FBR29DLGFBQVcsR0FBRyxVQUFVdUYsTUFBTSxFQUFFM0ksR0FBRyxFQUFFNEQsS0FBSyxFQUFFO0VBQzNELEVBQUEsT0FBTzZFLG9CQUFvQixDQUFDRyxDQUFDLENBQUNELE1BQU0sRUFBRTNJLEdBQUcsRUFBRTBJLHdCQUF3QixDQUFDLENBQUMsRUFBRTlFLEtBQUssQ0FBQyxDQUFDLENBQUE7RUFDaEYsQ0FBQyxHQUFHLFVBQVUrRSxNQUFNLEVBQUUzSSxHQUFHLEVBQUU0RCxLQUFLLEVBQUU7RUFDaEMrRSxFQUFBQSxNQUFNLENBQUMzSSxHQUFHLENBQUMsR0FBRzRELEtBQUssQ0FBQTtFQUNuQixFQUFBLE9BQU8rRSxNQUFNLENBQUE7RUFDZixDQUFDOztFQ1RELElBQUk3QixRQUFNLEdBQUdwRixhQUE4QixDQUFBO0VBQzNDLElBQUlxRixHQUFHLEdBQUdyRixLQUEyQixDQUFBO0VBRXJDLElBQUlsQyxJQUFJLEdBQUdzSCxRQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7TUFFekI5RixXQUFjLEdBQUcsVUFBVWhCLEdBQUcsRUFBRTtFQUM5QixFQUFBLE9BQU9SLElBQUksQ0FBQ1EsR0FBRyxDQUFDLEtBQUtSLElBQUksQ0FBQ1EsR0FBRyxDQUFDLEdBQUcrRyxHQUFHLENBQUMvRyxHQUFHLENBQUMsQ0FBQyxDQUFBO0VBQzVDLENBQUM7O0VDUEQsSUFBSTZJLGVBQWUsR0FBR25ILHFCQUFnRCxDQUFBO0VBQ3RFLElBQUlOLFFBQU0sR0FBR00sUUFBOEIsQ0FBQTtFQUMzQyxJQUFJNkMsUUFBUSxHQUFHN0MsVUFBaUMsQ0FBQTtFQUNoRCxJQUFJb0gsMkJBQTJCLEdBQUdwSCw2QkFBc0QsQ0FBQTtFQUN4RixJQUFJeUIsUUFBTSxHQUFHekIsZ0JBQXdDLENBQUE7RUFDckQsSUFBSW9GLE1BQU0sR0FBR3BGLFdBQW9DLENBQUE7RUFDakQsSUFBSXFILFNBQVMsR0FBR3JILFdBQWtDLENBQUE7RUFHbEQsSUFBSXNILDBCQUEwQixHQUFHLDRCQUE0QixDQUFBO0VBQzdELElBQUlsRyxXQUFTLEdBQUcxQixRQUFNLENBQUMwQixTQUFTLENBQUE7RUFDaEMsSUFBSXVCLE9BQU8sR0FBR2pELFFBQU0sQ0FBQ2lELE9BQU8sQ0FBQTtFQUM1QixJQUFJNEUsR0FBRyxFQUFFckgsR0FBRyxFQUFFc0gsR0FBRyxDQUFBO0VBRWpCLElBQUlDLE9BQU8sR0FBRyxVQUFVckksRUFBRSxFQUFFO0VBQzFCLEVBQUEsT0FBT29JLEdBQUcsQ0FBQ3BJLEVBQUUsQ0FBQyxHQUFHYyxHQUFHLENBQUNkLEVBQUUsQ0FBQyxHQUFHbUksR0FBRyxDQUFDbkksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0VBQ3hDLENBQUMsQ0FBQTtFQUVELElBQUlzSSxTQUFTLEdBQUcsVUFBVUMsSUFBSSxFQUFFO0lBQzlCLE9BQU8sVUFBVXZJLEVBQUUsRUFBRTtFQUNuQixJQUFBLElBQUkxQyxLQUFLLENBQUE7RUFDVCxJQUFBLElBQUksQ0FBQ21HLFFBQVEsQ0FBQ3pELEVBQUUsQ0FBQyxJQUFJLENBQUMxQyxLQUFLLEdBQUd3RCxHQUFHLENBQUNkLEVBQUUsQ0FBQyxFQUFFd0ksSUFBSSxLQUFLRCxJQUFJLEVBQUU7UUFDcEQsTUFBTSxJQUFJdkcsV0FBUyxDQUFDLHlCQUF5QixHQUFHdUcsSUFBSSxHQUFHLFdBQVcsQ0FBQyxDQUFBO0VBQ3JFLEtBQUE7RUFBRSxJQUFBLE9BQU9qTCxLQUFLLENBQUE7S0FDZixDQUFBO0VBQ0gsQ0FBQyxDQUFBO0VBRUQsSUFBSXlLLGVBQWUsSUFBSS9CLE1BQU0sQ0FBQzFJLEtBQUssRUFBRTtFQUNuQyxFQUFBLElBQUk0RixLQUFLLEdBQUc4QyxNQUFNLENBQUMxSSxLQUFLLEtBQUswSSxNQUFNLENBQUMxSSxLQUFLLEdBQUcsSUFBSWlHLE9BQU8sRUFBRSxDQUFDLENBQUE7RUFDMUQ7RUFDQUwsRUFBQUEsS0FBSyxDQUFDcEMsR0FBRyxHQUFHb0MsS0FBSyxDQUFDcEMsR0FBRyxDQUFBO0VBQ3JCb0MsRUFBQUEsS0FBSyxDQUFDa0YsR0FBRyxHQUFHbEYsS0FBSyxDQUFDa0YsR0FBRyxDQUFBO0VBQ3JCbEYsRUFBQUEsS0FBSyxDQUFDaUYsR0FBRyxHQUFHakYsS0FBSyxDQUFDaUYsR0FBRyxDQUFBO0VBQ3JCO0VBQ0FBLEVBQUFBLEdBQUcsR0FBRyxVQUFVbkksRUFBRSxFQUFFeUksUUFBUSxFQUFFO0VBQzVCLElBQUEsSUFBSXZGLEtBQUssQ0FBQ2tGLEdBQUcsQ0FBQ3BJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sSUFBSWdDLFdBQVMsQ0FBQ2tHLDBCQUEwQixDQUFDLENBQUE7TUFDbEVPLFFBQVEsQ0FBQ0MsTUFBTSxHQUFHMUksRUFBRSxDQUFBO0VBQ3BCa0QsSUFBQUEsS0FBSyxDQUFDaUYsR0FBRyxDQUFDbkksRUFBRSxFQUFFeUksUUFBUSxDQUFDLENBQUE7RUFDdkIsSUFBQSxPQUFPQSxRQUFRLENBQUE7S0FDaEIsQ0FBQTtFQUNEM0gsRUFBQUEsR0FBRyxHQUFHLFVBQVVkLEVBQUUsRUFBRTtNQUNsQixPQUFPa0QsS0FBSyxDQUFDcEMsR0FBRyxDQUFDZCxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUE7S0FDM0IsQ0FBQTtFQUNEb0ksRUFBQUEsR0FBRyxHQUFHLFVBQVVwSSxFQUFFLEVBQUU7RUFDbEIsSUFBQSxPQUFPa0QsS0FBSyxDQUFDa0YsR0FBRyxDQUFDcEksRUFBRSxDQUFDLENBQUE7S0FDckIsQ0FBQTtFQUNILENBQUMsTUFBTTtFQUNMLEVBQUEsSUFBSTJJLEtBQUssR0FBR1YsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0VBRTlCRSxFQUFBQSxHQUFHLEdBQUcsVUFBVW5JLEVBQUUsRUFBRXlJLFFBQVEsRUFBRTtFQUM1QixJQUFBLElBQUlwRyxRQUFNLENBQUNyQyxFQUFFLEVBQUUySSxLQUFLLENBQUMsRUFBRSxNQUFNLElBQUkzRyxXQUFTLENBQUNrRywwQkFBMEIsQ0FBQyxDQUFBO01BQ3RFTyxRQUFRLENBQUNDLE1BQU0sR0FBRzFJLEVBQUUsQ0FBQTtFQUNwQmdJLElBQUFBLDJCQUEyQixDQUFDaEksRUFBRSxFQUFFMkksS0FBSyxFQUFFRixRQUFRLENBQUMsQ0FBQTtFQUNoRCxJQUFBLE9BQU9BLFFBQVEsQ0FBQTtLQUNoQixDQUFBO0VBQ0QzSCxFQUFBQSxHQUFHLEdBQUcsVUFBVWQsRUFBRSxFQUFFO0VBQ2xCLElBQUEsT0FBT3FDLFFBQU0sQ0FBQ3JDLEVBQUUsRUFBRTJJLEtBQUssQ0FBQyxHQUFHM0ksRUFBRSxDQUFDMkksS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFBO0tBQzFDLENBQUE7RUFDRFAsRUFBQUEsR0FBRyxHQUFHLFVBQVVwSSxFQUFFLEVBQUU7RUFDbEIsSUFBQSxPQUFPcUMsUUFBTSxDQUFDckMsRUFBRSxFQUFFMkksS0FBSyxDQUFDLENBQUE7S0FDekIsQ0FBQTtFQUNILENBQUE7RUFFQXpJLElBQUFBLGFBQWMsR0FBRztFQUNmaUksRUFBQUEsR0FBRyxFQUFFQSxHQUFHO0VBQ1JySCxFQUFBQSxHQUFHLEVBQUVBLEdBQUc7RUFDUnNILEVBQUFBLEdBQUcsRUFBRUEsR0FBRztFQUNSQyxFQUFBQSxPQUFPLEVBQUVBLE9BQU87RUFDaEJDLEVBQUFBLFNBQVMsRUFBRUEsU0FBQUE7RUFDYixDQUFDOztFQ3JFRCxJQUFJbkcsV0FBVyxHQUFHdkIsbUJBQTZDLENBQUE7RUFDL0QsSUFBSUQsT0FBSyxHQUFHQyxPQUE2QixDQUFBO0VBQ3pDLElBQUl1QyxVQUFVLEdBQUd2QyxZQUFtQyxDQUFBO0VBQ3BELElBQUl5QixNQUFNLEdBQUd6QixnQkFBd0MsQ0FBQTtFQUNyRCxJQUFJMEIsYUFBVyxHQUFHMUIsV0FBbUMsQ0FBQTtFQUNyRCxJQUFJZ0ksMEJBQTBCLEdBQUdoSSxZQUFxQyxDQUFDZ0MsWUFBWSxDQUFBO0VBQ25GLElBQUlVLGFBQWEsR0FBRzFDLGVBQXNDLENBQUE7RUFDMUQsSUFBSWlJLG1CQUFtQixHQUFHakksYUFBc0MsQ0FBQTtFQUVoRSxJQUFJa0ksb0JBQW9CLEdBQUdELG1CQUFtQixDQUFDUixPQUFPLENBQUE7RUFDdEQsSUFBSVUsZ0JBQWdCLEdBQUdGLG1CQUFtQixDQUFDL0gsR0FBRyxDQUFBO0VBQzlDLElBQUk2QyxPQUFPLEdBQUdILE1BQU0sQ0FBQTtFQUNwQjtFQUNBLElBQUkzQyxnQkFBYyxHQUFHckMsTUFBTSxDQUFDcUMsY0FBYyxDQUFBO0VBQzFDLElBQUltSSxXQUFXLEdBQUc3RyxXQUFXLENBQUMsRUFBRSxDQUFDOEcsS0FBSyxDQUFDLENBQUE7RUFDdkMsSUFBSUMsT0FBTyxHQUFHL0csV0FBVyxDQUFDLEVBQUUsQ0FBQytHLE9BQU8sQ0FBQyxDQUFBO0VBQ3JDLElBQUk3SixJQUFJLEdBQUc4QyxXQUFXLENBQUMsRUFBRSxDQUFDOUMsSUFBSSxDQUFDLENBQUE7RUFFL0IsSUFBSThKLG1CQUFtQixHQUFHN0csYUFBVyxJQUFJLENBQUMzQixPQUFLLENBQUMsWUFBWTtFQUMxRCxFQUFBLE9BQU9FLGdCQUFjLENBQUMsWUFBWSxhQUFlLEVBQUUsUUFBUSxFQUFFO0VBQUVpQyxJQUFBQSxLQUFLLEVBQUUsQ0FBQTtFQUFFLEdBQUMsQ0FBQyxDQUFDL0QsTUFBTSxLQUFLLENBQUMsQ0FBQTtFQUN6RixDQUFDLENBQUMsQ0FBQTtFQUVGLElBQUlxSyxRQUFRLEdBQUc1RixNQUFNLENBQUNBLE1BQU0sQ0FBQyxDQUFDN0UsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0VBRTdDLElBQUkwSyxhQUFXLEdBQUduSixhQUFBQSxDQUFBQSxPQUFjLEdBQUcsVUFBVTRDLEtBQUssRUFBRTFHLElBQUksRUFBRWtOLE9BQU8sRUFBRTtFQUNqRSxFQUFBLElBQUlOLFdBQVcsQ0FBQ3JGLE9BQU8sQ0FBQ3ZILElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxTQUFTLEVBQUU7RUFDbERBLElBQUFBLElBQUksR0FBRyxHQUFHLEdBQUc4TSxPQUFPLENBQUN2RixPQUFPLENBQUN2SCxJQUFJLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUE7RUFDdkUsR0FBQTtJQUNBLElBQUlrTixPQUFPLElBQUlBLE9BQU8sQ0FBQ0MsTUFBTSxFQUFFbk4sSUFBSSxHQUFHLE1BQU0sR0FBR0EsSUFBSSxDQUFBO0lBQ25ELElBQUlrTixPQUFPLElBQUlBLE9BQU8sQ0FBQ0UsTUFBTSxFQUFFcE4sSUFBSSxHQUFHLE1BQU0sR0FBR0EsSUFBSSxDQUFBO0VBQ25ELEVBQUEsSUFBSSxDQUFDaUcsTUFBTSxDQUFDUyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUs4RiwwQkFBMEIsSUFBSTlGLEtBQUssQ0FBQzFHLElBQUksS0FBS0EsSUFBSyxFQUFFO0VBQ2pGLElBQUEsSUFBSWtHLGFBQVcsRUFBRXpCLGdCQUFjLENBQUNpQyxLQUFLLEVBQUUsTUFBTSxFQUFFO0VBQUVBLE1BQUFBLEtBQUssRUFBRTFHLElBQUk7RUFBRXlHLE1BQUFBLFlBQVksRUFBRSxJQUFBO0VBQUssS0FBQyxDQUFDLENBQUMsS0FDL0VDLEtBQUssQ0FBQzFHLElBQUksR0FBR0EsSUFBSSxDQUFBO0VBQ3hCLEdBQUE7RUFDQSxFQUFBLElBQUkrTSxtQkFBbUIsSUFBSUcsT0FBTyxJQUFJakgsTUFBTSxDQUFDaUgsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJeEcsS0FBSyxDQUFDL0QsTUFBTSxLQUFLdUssT0FBTyxDQUFDRyxLQUFLLEVBQUU7RUFDaEc1SSxJQUFBQSxnQkFBYyxDQUFDaUMsS0FBSyxFQUFFLFFBQVEsRUFBRTtRQUFFQSxLQUFLLEVBQUV3RyxPQUFPLENBQUNHLEtBQUFBO0VBQU0sS0FBQyxDQUFDLENBQUE7RUFDM0QsR0FBQTtJQUNBLElBQUk7RUFDRixJQUFBLElBQUlILE9BQU8sSUFBSWpILE1BQU0sQ0FBQ2lILE9BQU8sRUFBRSxhQUFhLENBQUMsSUFBSUEsT0FBTyxDQUFDck0sV0FBVyxFQUFFO0VBQ3BFLE1BQUEsSUFBSXFGLGFBQVcsRUFBRXpCLGdCQUFjLENBQUNpQyxLQUFLLEVBQUUsV0FBVyxFQUFFO0VBQUVDLFFBQUFBLFFBQVEsRUFBRSxLQUFBO0VBQU0sT0FBQyxDQUFDLENBQUE7RUFDMUU7T0FDQyxNQUFNLElBQUlELEtBQUssQ0FBQzNCLFNBQVMsRUFBRTJCLEtBQUssQ0FBQzNCLFNBQVMsR0FBR3ZCLFNBQVMsQ0FBQTtFQUN6RCxHQUFDLENBQUMsT0FBT2MsS0FBSyxFQUFFLGFBQUU7RUFDbEIsRUFBQSxJQUFJcEQsS0FBSyxHQUFHd0wsb0JBQW9CLENBQUNoRyxLQUFLLENBQUMsQ0FBQTtFQUN2QyxFQUFBLElBQUksQ0FBQ1QsTUFBTSxDQUFDL0UsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUFFO0VBQzVCQSxJQUFBQSxLQUFLLENBQUNzSSxNQUFNLEdBQUd2RyxJQUFJLENBQUMrSixRQUFRLEVBQUUsT0FBT2hOLElBQUksSUFBSSxRQUFRLEdBQUdBLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQTtFQUNwRSxHQUFBO0VBQUUsRUFBQSxPQUFPMEcsS0FBSyxDQUFBO0VBQ2hCLENBQUMsQ0FBQTs7RUFFRDtFQUNBO0VBQ0F0QyxRQUFRLENBQUNXLFNBQVMsQ0FBQ2tDLFFBQVEsR0FBR2dHLGFBQVcsQ0FBQyxTQUFTaEcsUUFBUUEsR0FBRztFQUM1RCxFQUFBLE9BQU9GLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSTRGLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDbkQsTUFBTSxJQUFJdEMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO0VBQ2pGLENBQUMsRUFBRSxVQUFVLENBQUM7O0VDckRkLElBQUkrRixXQUFXLEdBQUd6SSxrQkFBcUMsQ0FBQTtFQUN2RCxJQUFJQyxjQUFjLEdBQUdELG9CQUE4QyxDQUFBO0VBRW5FVixJQUFBQSx1QkFBYyxHQUFHLFVBQVV3SixNQUFNLEVBQUV0TixJQUFJLEVBQUV1TixVQUFVLEVBQUU7SUFDbkQsSUFBSUEsVUFBVSxDQUFDN0ksR0FBRyxFQUFFdUksV0FBVyxDQUFDTSxVQUFVLENBQUM3SSxHQUFHLEVBQUUxRSxJQUFJLEVBQUU7RUFBRW1OLElBQUFBLE1BQU0sRUFBRSxJQUFBO0VBQUssR0FBQyxDQUFDLENBQUE7SUFDdkUsSUFBSUksVUFBVSxDQUFDeEIsR0FBRyxFQUFFa0IsV0FBVyxDQUFDTSxVQUFVLENBQUN4QixHQUFHLEVBQUUvTCxJQUFJLEVBQUU7RUFBRW9OLElBQUFBLE1BQU0sRUFBRSxJQUFBO0VBQUssR0FBQyxDQUFDLENBQUE7SUFDdkUsT0FBTzNJLGNBQWMsQ0FBQ2lILENBQUMsQ0FBQzRCLE1BQU0sRUFBRXROLElBQUksRUFBRXVOLFVBQVUsQ0FBQyxDQUFBO0VBQ25ELENBQUM7O0VDUEQsSUFBSTVDLFFBQVEsR0FBR25HLFVBQWlDLENBQUE7O0VBRWhEO0VBQ0E7RUFDQVYsSUFBQUEsV0FBYyxHQUFHLFlBQVk7RUFDM0IsRUFBQSxJQUFJMEosSUFBSSxHQUFHN0MsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3pCLElBQUlKLE1BQU0sR0FBRyxFQUFFLENBQUE7RUFDZixFQUFBLElBQUlpRCxJQUFJLENBQUNDLFVBQVUsRUFBRWxELE1BQU0sSUFBSSxHQUFHLENBQUE7RUFDbEMsRUFBQSxJQUFJaUQsSUFBSSxDQUFDdEosTUFBTSxFQUFFcUcsTUFBTSxJQUFJLEdBQUcsQ0FBQTtFQUM5QixFQUFBLElBQUlpRCxJQUFJLENBQUNFLFVBQVUsRUFBRW5ELE1BQU0sSUFBSSxHQUFHLENBQUE7RUFDbEMsRUFBQSxJQUFJaUQsSUFBSSxDQUFDRyxTQUFTLEVBQUVwRCxNQUFNLElBQUksR0FBRyxDQUFBO0VBQ2pDLEVBQUEsSUFBSWlELElBQUksQ0FBQ0ksTUFBTSxFQUFFckQsTUFBTSxJQUFJLEdBQUcsQ0FBQTtFQUM5QixFQUFBLElBQUlpRCxJQUFJLENBQUNLLE9BQU8sRUFBRXRELE1BQU0sSUFBSSxHQUFHLENBQUE7RUFDL0IsRUFBQSxJQUFJaUQsSUFBSSxDQUFDTSxXQUFXLEVBQUV2RCxNQUFNLElBQUksR0FBRyxDQUFBO0VBQ25DLEVBQUEsSUFBSWlELElBQUksQ0FBQ08sTUFBTSxFQUFFeEQsTUFBTSxJQUFJLEdBQUcsQ0FBQTtFQUM5QixFQUFBLE9BQU9BLE1BQU0sQ0FBQTtFQUNmLENBQUM7O0VDaEJELElBQUlyRyxRQUFNLEdBQUdNLFFBQThCLENBQUE7RUFDM0MsSUFBSTBCLFdBQVcsR0FBRzFCLFdBQW1DLENBQUE7RUFDckQsSUFBSXdKLHFCQUFxQixHQUFHeEosdUJBQWdELENBQUE7RUFDNUUsSUFBSXlKLFdBQVcsR0FBR3pKLFdBQW9DLENBQUE7RUFDdEQsSUFBSUQsS0FBSyxHQUFHQyxPQUE2QixDQUFBOztFQUV6QztFQUNBLElBQUkwSixRQUFNLEdBQUdoSyxRQUFNLENBQUNnSyxNQUFNLENBQUE7RUFDMUIsSUFBSUMsZUFBZSxHQUFHRCxRQUFNLENBQUNuSixTQUFTLENBQUE7RUFFdEMsSUFBSXFKLE1BQU0sR0FBR2xJLFdBQVcsSUFBSTNCLEtBQUssQ0FBQyxZQUFZO0lBQzVDLElBQUk4SixlQUFlLEdBQUcsSUFBSSxDQUFBO0lBQzFCLElBQUk7RUFDRkgsSUFBQUEsUUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtLQUNqQixDQUFDLE9BQU81SixLQUFLLEVBQUU7RUFDZCtKLElBQUFBLGVBQWUsR0FBRyxLQUFLLENBQUE7RUFDekIsR0FBQTtJQUVBLElBQUluRCxDQUFDLEdBQUcsRUFBRSxDQUFBO0VBQ1Y7SUFDQSxJQUFJb0QsS0FBSyxHQUFHLEVBQUUsQ0FBQTtFQUNkLEVBQUEsSUFBSUMsUUFBUSxHQUFHRixlQUFlLEdBQUcsUUFBUSxHQUFHLE9BQU8sQ0FBQTtFQUVuRCxFQUFBLElBQUlHLFNBQVMsR0FBRyxVQUFVMUwsR0FBRyxFQUFFMkwsR0FBRyxFQUFFO0VBQ2xDO0VBQ0FyTSxJQUFBQSxNQUFNLENBQUNxQyxjQUFjLENBQUN5RyxDQUFDLEVBQUVwSSxHQUFHLEVBQUU7UUFBRTRCLEdBQUcsRUFBRSxZQUFZO0VBQy9DNEosUUFBQUEsS0FBSyxJQUFJRyxHQUFHLENBQUE7RUFDWixRQUFBLE9BQU8sSUFBSSxDQUFBO0VBQ2IsT0FBQTtFQUFFLEtBQUMsQ0FBQyxDQUFBO0tBQ0wsQ0FBQTtFQUVELEVBQUEsSUFBSUMsS0FBSyxHQUFHO0VBQ1ZkLElBQUFBLE1BQU0sRUFBRSxHQUFHO0VBQ1gxSixJQUFBQSxNQUFNLEVBQUUsR0FBRztFQUNYd0osSUFBQUEsVUFBVSxFQUFFLEdBQUc7RUFDZkMsSUFBQUEsU0FBUyxFQUFFLEdBQUc7RUFDZEksSUFBQUEsTUFBTSxFQUFFLEdBQUE7S0FDVCxDQUFBO0VBRUQsRUFBQSxJQUFJTSxlQUFlLEVBQUVLLEtBQUssQ0FBQ2pCLFVBQVUsR0FBRyxHQUFHLENBQUE7RUFFM0MsRUFBQSxLQUFLLElBQUkzSyxHQUFHLElBQUk0TCxLQUFLLEVBQUVGLFNBQVMsQ0FBQzFMLEdBQUcsRUFBRTRMLEtBQUssQ0FBQzVMLEdBQUcsQ0FBQyxDQUFDLENBQUE7O0VBRWpEO0VBQ0EsRUFBQSxJQUFJeUgsTUFBTSxHQUFHbkksTUFBTSxDQUFDZ0Usd0JBQXdCLENBQUMrSCxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUN6SixHQUFHLENBQUNNLElBQUksQ0FBQ2tHLENBQUMsQ0FBQyxDQUFBO0VBRWxGLEVBQUEsT0FBT1gsTUFBTSxLQUFLZ0UsUUFBUSxJQUFJRCxLQUFLLEtBQUtDLFFBQVEsQ0FBQTtFQUNsRCxDQUFDLENBQUMsQ0FBQTs7RUFFRjtFQUNBO0VBQ0EsSUFBSUgsTUFBTSxFQUFFSixxQkFBcUIsQ0FBQ0csZUFBZSxFQUFFLE9BQU8sRUFBRTtFQUMxRDFILEVBQUFBLFlBQVksRUFBRSxJQUFJO0VBQ2xCL0IsRUFBQUEsR0FBRyxFQUFFdUosV0FBQUE7RUFDUCxDQUFDLENBQUM7O0VDdkRGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0VBRUE7RUFDQSxNQUFNVSxZQUFZLEdBQUc7RUFDbkJDLEVBQUFBLGdCQUFnQixFQUFFLHVDQUF1QztFQUN6REMsRUFBQUEsY0FBYyxFQUFFLGlCQUFpQjtFQUNqQ0MsRUFBQUEsTUFBTSxFQUFFLDhCQUE4QjtFQUN0Q0MsRUFBQUEsS0FBSyxFQUFFLG9JQUFvSTtFQUFFO0VBQzdJQyxFQUFBQSxXQUFXLEVBQUUsdUNBQXVDO0VBQ3BEQyxFQUFBQSxZQUFZLEVBQUUsb0JBQW9CO0VBQ2xDQyxFQUFBQSxXQUFXLEVBQUUsdUJBQXVCO0VBQ3BDQyxFQUFBQSxXQUFXLEVBQUUsK0NBQStDO0VBQzVEQyxFQUFBQSxNQUFNLEVBQUUsK0JBQStCO0VBQ3ZDQyxFQUFBQSxlQUFlLEVBQUUsa0JBQWtCO0VBQ25DQyxFQUFBQSxTQUFTLEVBQUUscUJBQXFCO0VBQ2hDQyxFQUFBQSxhQUFhLEVBQUUsZ0RBQWdEO0VBQy9EQyxFQUFBQSxZQUFZLEVBQUUscURBQXFEO0VBQ25FQyxFQUFBQSxRQUFRLEVBQUUscVdBQUE7RUFDWixDQUFDLENBQUE7O0VBRUQ7RUFDQSxNQUFNQyxrQkFBa0IsR0FBRyxJQUFJeEIsTUFBTSxDQUFDLHFwREFBcXBELENBQUMsQ0FBQTtFQUU1ckQsTUFBTXlCLG1CQUFtQixHQUFHLElBQUl6QixNQUFNLENBQUMscXBEQUFxcEQsQ0FBQyxDQUFBOztFQUU3ckQ7O0VBRUE7RUFDQTtFQUNBO0VBQ0EsTUFBTTBCLFdBQVcsR0FBRztFQUNsQkMsRUFBQUEsSUFBSSxFQUFFO0VBQ0pDLElBQUFBLE1BQU0sRUFBRSxtQ0FBbUM7RUFDM0NDLElBQUFBLFdBQVcsRUFBRSx5RkFBQTtLQUNkO0VBQ0RDLEVBQUFBLElBQUksRUFBRTtFQUNKRixJQUFBQSxNQUFNLEVBQUUsb0NBQW9DO0VBQzVDQyxJQUFBQSxXQUFXLEVBQUUseUZBQUE7S0FDZDtFQUNERSxFQUFBQSxJQUFJLEVBQUU7RUFDSkgsSUFBQUEsTUFBTSxFQUFFLHFDQUFxQztFQUM3Q0MsSUFBQUEsV0FBVyxFQUFFLHlGQUFBO0tBQ2Q7RUFDREcsRUFBQUEsSUFBSSxFQUFFO0VBQ0pKLElBQUFBLE1BQU0sRUFBRSxzQ0FBc0M7RUFDOUNDLElBQUFBLFdBQVcsRUFBRSx5RkFBQTtLQUNkO0VBQ0RJLEVBQUFBLElBQUksRUFBRTtFQUNKTCxJQUFBQSxNQUFNLEVBQUUsdUNBQXVDO0VBQy9DQyxJQUFBQSxXQUFXLEVBQUUseUZBQUE7S0FDZDtFQUNESyxFQUFBQSxJQUFJLEVBQUU7RUFDSk4sSUFBQUEsTUFBTSxFQUFFLHdDQUF3QztFQUNoREMsSUFBQUEsV0FBVyxFQUFFLHlGQUFBO0tBQ2Q7RUFDRE0sRUFBQUEsWUFBWSxFQUFFO0VBQ1pQLElBQUFBLE1BQU0sRUFBRSxxQkFBcUI7RUFDN0JDLElBQUFBLFdBQVcsRUFBRSx1REFBQTtLQUNkO0VBQ0RPLEVBQUFBLHVCQUF1QixFQUFFO0VBQ3ZCUixJQUFBQSxNQUFNLEVBQUUseUNBQXlDO0VBQ2pEQyxJQUFBQSxXQUFXLEVBQUUsaUdBQUE7S0FDZDtFQUNEUSxFQUFBQSxvQkFBb0IsRUFBRTtFQUNwQlQsSUFBQUEsTUFBTSxFQUFFLHNDQUFzQztFQUM5Q0MsSUFBQUEsV0FBVyxFQUFFLDhGQUFBO0tBQ2Q7RUFDRFMsRUFBQUEsd0JBQXdCLEVBQUU7RUFDeEJWLElBQUFBLE1BQU0sRUFBRSw4QkFBOEI7RUFDdENDLElBQUFBLFdBQVcsRUFBRSw2REFBQTtLQUNkO0VBQ0RVLEVBQUFBLHFCQUFxQixFQUFFO0VBQ3JCWCxJQUFBQSxNQUFNLEVBQUUsOEJBQThCO0VBQ3RDQyxJQUFBQSxXQUFXLEVBQUUsMERBQUE7S0FDZDtFQUNEVyxFQUFBQSxXQUFXLEVBQUU7RUFDWFosSUFBQUEsTUFBTSxFQUFFLFlBQVk7RUFDcEJDLElBQUFBLFdBQVcsRUFBRSxJQUFBO0tBQ2Q7RUFDRFksRUFBQUEsZ0JBQWdCLEVBQUU7RUFDaEJiLElBQUFBLE1BQU0sRUFBRSxlQUFlO0VBQ3ZCQyxJQUFBQSxXQUFXLEVBQUUsd0RBQUE7S0FDZDtFQUNEYSxFQUFBQSxnQkFBZ0IsRUFBRTtFQUNoQmQsSUFBQUEsTUFBTSxFQUFFLGVBQWU7RUFDdkJDLElBQUFBLFdBQVcsRUFBRSx3REFBQTtLQUNkO0VBQ0RjLEVBQUFBLElBQUksRUFBRTtFQUNKZixJQUFBQSxNQUFNLEVBQUUseUZBQXlGO0VBQ2pHQyxJQUFBQSxXQUFXLEVBQUUsNENBQUE7S0FDZDtFQUNEZSxFQUFBQSxJQUFJLEVBQUU7RUFDSmhCLElBQUFBLE1BQU0sRUFBRSwyQkFBMkI7RUFDbkNDLElBQUFBLFdBQVcsRUFBRSwrQ0FBQTtLQUNkO0VBQ0RnQixFQUFBQSxJQUFJLEVBQUU7RUFDSmpCLElBQUFBLE1BQU0sRUFBRSxpQ0FBaUM7RUFDekNDLElBQUFBLFdBQVcsRUFBRSwrQ0FBQTtLQUNkO0VBQ0Q7RUFDQWlCLEVBQUFBLGNBQWMsRUFBRTtFQUNkbEIsSUFBQUEsTUFBTSxFQUFFLGlCQUFpQjtFQUN6QkMsSUFBQUEsV0FBVyxFQUFFLHdEQUFBO0tBQ2Q7RUFDRGtCLEVBQUFBLHlCQUF5QixFQUFFO0VBQ3pCO0VBQ0FuQixJQUFBQSxNQUFNLEVBQUUsNEtBQTRLO0VBQ3BMQyxJQUFBQSxXQUFXLEVBQUUsMFFBQTBRO01BQ3ZSbUIsZ0JBQWdCLEVBQUUsQ0FBQztFQUNyQixHQUFBO0VBQ0YsQ0FBQyxDQUFBOztFQUVEO0VBQ0E7RUFDQTtFQUNBLElBQUlDLGdCQUFnQixHQUFHLENBQ3JCO0VBQUVDLEVBQUFBLEtBQUssRUFBRSx5Q0FBeUM7RUFBRUMsRUFBQUEsR0FBRyxFQUFFLG1DQUFtQztFQUFFQyxFQUFBQSxhQUFhLEVBQUUsSUFBQTtFQUFLLENBQUMsRUFDbkg7RUFBRUYsRUFBQUEsS0FBSyxFQUFFLGFBQWE7RUFBRUMsRUFBQUEsR0FBRyxFQUFFLEtBQUs7RUFBRUMsRUFBQUEsYUFBYSxFQUFFLElBQUE7RUFBSyxDQUFDLEVBQ3pEO0VBQUVGLEVBQUFBLEtBQUssRUFBRSxZQUFZO0VBQUVDLEVBQUFBLEdBQUcsRUFBRSxLQUFLO0VBQUVDLEVBQUFBLGFBQWEsRUFBRSxJQUFBO0VBQUssQ0FBQyxFQUN4RDtFQUFFRixFQUFBQSxLQUFLLEVBQUUsZ0JBQWdCO0VBQUVDLEVBQUFBLEdBQUcsRUFBRSxHQUFHO0VBQUVDLEVBQUFBLGFBQWEsRUFBRyxJQUFBO0VBQUksQ0FBQyxFQUMxRDtFQUFFRixFQUFBQSxLQUFLLEVBQUUsb0JBQW9CO0VBQUVDLEVBQUFBLEdBQUcsRUFBRSxPQUFPO0VBQUVDLEVBQUFBLGFBQWEsRUFBRyxJQUFBO0VBQUksQ0FBQyxFQUNsRTtFQUFFRixFQUFBQSxLQUFLLEVBQUUsNkNBQTZDO0VBQUVDLEVBQUFBLEdBQUcsRUFBRSxLQUFLO0VBQUVDLEVBQUFBLGFBQWEsRUFBRSxJQUFBO0VBQUksQ0FBQyxFQUN4RjtFQUFFRixFQUFBQSxLQUFLLEVBQUUseUNBQXlDO0VBQUVDLEVBQUFBLEdBQUcsRUFBRSxLQUFLO0VBQUVDLEVBQUFBLGFBQWEsRUFBRSxLQUFBO0VBQUssQ0FBQyxDQUN0RixDQUFBOztFQUVEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxJQUFJQyxhQUFhLEdBQUc7RUFDbEJDLEVBQUFBLE1BQU0sRUFBRztFQUNQMUIsSUFBQUEsTUFBTSxFQUFFLHVCQUF1QjtFQUMvQkMsSUFBQUEsV0FBVyxFQUFHLGtEQUFBO0tBQ2Y7RUFDRDlRLEVBQUFBLElBQUksRUFBRztFQUNMNlEsSUFBQUEsTUFBTSxFQUFFLHFDQUFxQztFQUM3Q0MsSUFBQUEsV0FBVyxFQUFHLHdIQUFBO0tBQ2Y7RUFDRDBCLEVBQUFBLFFBQVEsRUFBRztFQUNUM0IsSUFBQUEsTUFBTSxFQUFFLG9DQUFvQztFQUM1Q0MsSUFBQUEsV0FBVyxFQUFFLHdJQUFBO0tBQ2Q7RUFDRDJCLEVBQUFBLElBQUksRUFBRztFQUNMNUIsSUFBQUEsTUFBTSxFQUFFLGtHQUFrRztFQUMxR0MsSUFBQUEsV0FBVyxFQUFFLGdDQUFBO0tBQ2Q7RUFDRDRCLEVBQUFBLFFBQVEsRUFBRztFQUNUN0IsSUFBQUEsTUFBTSxFQUFFLEtBQUs7RUFDYkMsSUFBQUEsV0FBVyxFQUFFLEVBQUE7S0FDZDtFQUNENkIsRUFBQUEsU0FBUyxFQUFHO0VBQ1Y5QixJQUFBQSxNQUFNLEVBQUUsTUFBTTtFQUNkQyxJQUFBQSxXQUFXLEVBQUcsRUFBQTtLQUNmO0VBQ0Q4QixFQUFBQSxTQUFTLEVBQUc7RUFDVi9CLElBQUFBLE1BQU0sRUFBRSwwQkFBMEI7RUFDbENDLElBQUFBLFdBQVcsRUFBRSxFQUFFO0VBQ2ZtQixJQUFBQSxnQkFBZ0IsRUFBRSxDQUFBO0tBQ25CO0VBQ0RZLEVBQUFBLE9BQU8sRUFBRztFQUNSaEMsSUFBQUEsTUFBTSxFQUFFLDBCQUEwQjtFQUNsQ0MsSUFBQUEsV0FBVyxFQUFFLElBQUE7RUFDZixHQUFBO0VBQ0YsQ0FBQyxDQUFBOztFQUVEO0VBQ0EsTUFBTWdDLGlCQUFpQixHQUFHLElBQUk3RCxNQUFNLENBQUM5TCxNQUFNLENBQUNFLElBQUksQ0FBQ3FNLFlBQVksQ0FBQyxDQUFDMUwsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7O0VBRXpFO0VBQ0EsTUFBTStPLFdBQVcsR0FBRSxDQUFDLEdBQUc1UCxNQUFNLENBQUNFLElBQUksQ0FBQ2lQLGFBQWEsQ0FBQyxDQUFDLENBQUE7RUFDbEQsS0FBSyxJQUFJVSxJQUFJLElBQUlELFdBQVcsRUFBRTtJQUM1QixJQUFJRSxFQUFFLEdBQUdYLGFBQWEsQ0FBQ1UsSUFBSSxDQUFDLENBQUNuQyxNQUFNLENBQUN0RyxNQUFNLENBQUE7RUFDMUM7RUFDQSxFQUFBLE9BQU8wSSxFQUFFLENBQUNyUCxLQUFLLENBQUNrUCxpQkFBaUIsQ0FBQyxFQUFFO01BQ2xDRyxFQUFFLEdBQUdBLEVBQUUsQ0FBQ3BGLE9BQU8sQ0FBQ2lGLGlCQUFpQixFQUFHSSxNQUFNLElBQUs7RUFBRSxNQUFBLE9BQU94RCxZQUFZLENBQUN3RCxNQUFNLENBQUMsQ0FBQzNJLE1BQU0sQ0FBQTtFQUFFLEtBQUMsQ0FBQyxDQUFBO0VBQ3pGLEdBQUE7RUFDQStILEVBQUFBLGFBQWEsQ0FBQ1UsSUFBSSxDQUFDLENBQUNuQyxNQUFNLEdBQUcsSUFBSTVCLE1BQU0sQ0FBQ2dFLEVBQUUsRUFBRVgsYUFBYSxDQUFDVSxJQUFJLENBQUMsQ0FBQ25DLE1BQU0sQ0FBQ3NDLEtBQUssQ0FBQyxDQUFBO0VBQy9FLENBQUE7O0VBRUE7RUFDQSxLQUFLLElBQUlILElBQUksSUFBSWQsZ0JBQWdCLEVBQUU7RUFDakMsRUFBQSxJQUFJZSxFQUFFLEdBQUdELElBQUksQ0FBQ2IsS0FBSyxDQUFDNUgsTUFBTSxDQUFBO0VBQzFCO0VBQ0EsRUFBQSxPQUFPMEksRUFBRSxDQUFDclAsS0FBSyxDQUFDa1AsaUJBQWlCLENBQUMsRUFBRTtNQUNsQ0csRUFBRSxHQUFHQSxFQUFFLENBQUNwRixPQUFPLENBQUNpRixpQkFBaUIsRUFBR0ksTUFBTSxJQUFLO0VBQUUsTUFBQSxPQUFPeEQsWUFBWSxDQUFDd0QsTUFBTSxDQUFDLENBQUMzSSxNQUFNLENBQUE7RUFBRSxLQUFDLENBQUMsQ0FBQTtFQUN6RixHQUFBO0VBQ0F5SSxFQUFBQSxJQUFJLENBQUNiLEtBQUssR0FBRyxJQUFJbEQsTUFBTSxDQUFDZ0UsRUFBRSxFQUFFRCxJQUFJLENBQUNiLEtBQUssQ0FBQ2dCLEtBQUssQ0FBQyxDQUFBO0VBQy9DLENBQUE7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVNDLFVBQVVBLENBQUNGLE1BQU0sRUFBRTtJQUMxQixPQUFPLENBQUNBLE1BQU0sR0FBR0EsTUFBTSxHQUFHLEVBQUUsRUFDekJyRixPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUN0QkEsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FDckJBLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7RUFDMUIsQ0FBQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLE1BQU05TCxRQUFRLEdBQUc7RUFDZjtFQUNBakMsRUFBQUEsSUFBSSxFQUFFO0VBQ0pxTixJQUFBQSxJQUFJLEVBQUUsUUFBUTtFQUNkckssSUFBQUEsU0FBUyxFQUFFLFVBQVU7RUFDckJnSyxJQUFBQSxHQUFHLEVBQUU7RUFBQ3VHLE1BQUFBLEdBQUcsRUFBRSxJQUFJO0VBQUVDLE1BQUFBLElBQUksRUFBRSxJQUFBO09BQUs7RUFDNUJDLElBQUFBLEtBQUssRUFBRTtFQUFDQyxNQUFBQSxVQUFVLEVBQUUsY0FBYztFQUFFQyxNQUFBQSxXQUFXLEVBQUUsY0FBQTtFQUFjLEtBQUE7S0FDaEU7RUFDRHBULEVBQUFBLE1BQU0sRUFBRTtFQUNOOE0sSUFBQUEsSUFBSSxFQUFFLFFBQVE7RUFDZHJLLElBQUFBLFNBQVMsRUFBRSxNQUFNO0VBQ2pCZ0ssSUFBQUEsR0FBRyxFQUFFO0VBQUN1RyxNQUFBQSxHQUFHLEVBQUUsR0FBRztFQUFFQyxNQUFBQSxJQUFJLEVBQUUsR0FBQTtPQUFJO0VBQzFCQyxJQUFBQSxLQUFLLEVBQUU7RUFBQ0MsTUFBQUEsVUFBVSxFQUFFLFdBQVc7RUFBRUMsTUFBQUEsV0FBVyxFQUFFLFdBQUE7RUFBVyxLQUFBO0tBQzFEO0VBQ0R6VCxFQUFBQSxJQUFJLEVBQUU7RUFDSm1OLElBQUFBLElBQUksRUFBRSxRQUFRO0VBQ2RySyxJQUFBQSxTQUFTLEVBQUUsUUFBUTtFQUNuQmdLLElBQUFBLEdBQUcsRUFBRTtFQUFDdUcsTUFBQUEsR0FBRyxFQUFFLEdBQUc7RUFBRUMsTUFBQUEsSUFBSSxFQUFFLEdBQUE7T0FBSTtFQUMxQkMsSUFBQUEsS0FBSyxFQUFFO0VBQUNDLE1BQUFBLFVBQVUsRUFBRSxLQUFLO0VBQUVDLE1BQUFBLFdBQVcsRUFBRSxLQUFBO0VBQUssS0FBQztLQUMvQzs7RUFDRGpULEVBQUFBLGFBQWEsRUFBRTtFQUNiMk0sSUFBQUEsSUFBSSxFQUFFLFFBQVE7RUFDZHJLLElBQUFBLFNBQVMsRUFBRSxpQkFBaUI7RUFDNUJnSyxJQUFBQSxHQUFHLEVBQUU7RUFBQ3VHLE1BQUFBLEdBQUcsRUFBRSxJQUFJO0VBQUVDLE1BQUFBLElBQUksRUFBRSxJQUFBO09BQUs7RUFDNUJDLElBQUFBLEtBQUssRUFBRTtFQUFDQyxNQUFBQSxVQUFVLEVBQUMsS0FBSztFQUFFQyxNQUFBQSxXQUFXLEVBQUUsS0FBQTtFQUFNLEtBQUE7S0FDOUM7RUFDRHhULEVBQUFBLEVBQUUsRUFBRTtFQUNGa04sSUFBQUEsSUFBSSxFQUFFLE1BQU07RUFDWnJLLElBQUFBLFNBQVMsRUFBRSxNQUFNO0VBQ2pCZ0ssSUFBQUEsR0FBRyxFQUFFO0VBQUM0RyxNQUFBQSxPQUFPLEVBQUUscURBQXFEO0VBQUU1QyxNQUFBQSxXQUFXLEVBQUUsTUFBQTtPQUFPO0VBQzFGeUMsSUFBQUEsS0FBSyxFQUFFO0VBQUNHLE1BQUFBLE9BQU8sRUFBRSxvQ0FBb0M7RUFBRTVDLE1BQUFBLFdBQVcsRUFBRSxJQUFBO0VBQUksS0FBQTtLQUN6RTtFQUNENVEsRUFBQUEsRUFBRSxFQUFFO0VBQ0ZpTixJQUFBQSxJQUFJLEVBQUUsTUFBTTtFQUNackssSUFBQUEsU0FBUyxFQUFFLE1BQU07RUFDakJnSyxJQUFBQSxHQUFHLEVBQUU7RUFBQzRHLE1BQUFBLE9BQU8sRUFBRSxxREFBcUQ7RUFBRTVDLE1BQUFBLFdBQVcsRUFBRSxPQUFBO09BQVE7RUFDM0Z5QyxJQUFBQSxLQUFLLEVBQUU7RUFBQ0csTUFBQUEsT0FBTyxFQUFFLHFDQUFxQztFQUFFNUMsTUFBQUEsV0FBVyxFQUFFLElBQUE7RUFBSSxLQUFBO0tBQzFFO0VBQ0Q2QyxFQUFBQSxFQUFFLEVBQUU7RUFDRnhHLElBQUFBLElBQUksRUFBRSxNQUFNO0VBQ1pySyxJQUFBQSxTQUFTLEVBQUUsTUFBTTtFQUNqQmdLLElBQUFBLEdBQUcsRUFBRTtFQUFDNEcsTUFBQUEsT0FBTyxFQUFFLHFEQUFxRDtFQUFFNUMsTUFBQUEsV0FBVyxFQUFFLFFBQUE7T0FBUztFQUM1RnlDLElBQUFBLEtBQUssRUFBRTtFQUFDRyxNQUFBQSxPQUFPLEVBQUUsc0NBQXNDO0VBQUU1QyxNQUFBQSxXQUFXLEVBQUUsSUFBQTtFQUFJLEtBQUE7S0FDM0U7RUFDRDhDLEVBQUFBLEVBQUUsRUFBRTtFQUNGekcsSUFBQUEsSUFBSSxFQUFFLE1BQU07RUFDWnJLLElBQUFBLFNBQVMsRUFBRSxNQUFNO0VBQ2pCZ0ssSUFBQUEsR0FBRyxFQUFFO0VBQUM0RyxNQUFBQSxPQUFPLEVBQUUscURBQXFEO0VBQUU1QyxNQUFBQSxXQUFXLEVBQUUsU0FBQTtPQUFVO0VBQzdGeUMsSUFBQUEsS0FBSyxFQUFFO0VBQUNHLE1BQUFBLE9BQU8sRUFBRSx1Q0FBdUM7RUFBRTVDLE1BQUFBLFdBQVcsRUFBRSxJQUFBO0VBQUksS0FBQTtLQUM1RTtFQUNEK0MsRUFBQUEsRUFBRSxFQUFFO0VBQ0YxRyxJQUFBQSxJQUFJLEVBQUUsTUFBTTtFQUNackssSUFBQUEsU0FBUyxFQUFFLE1BQU07RUFDakJnSyxJQUFBQSxHQUFHLEVBQUU7RUFBQzRHLE1BQUFBLE9BQU8sRUFBRSxxREFBcUQ7RUFBRTVDLE1BQUFBLFdBQVcsRUFBRSxVQUFBO09BQVc7RUFDOUZ5QyxJQUFBQSxLQUFLLEVBQUU7RUFBQ0csTUFBQUEsT0FBTyxFQUFFLHdDQUF3QztFQUFFNUMsTUFBQUEsV0FBVyxFQUFFLElBQUE7RUFBSSxLQUFBO0tBQzdFO0VBQ0RnRCxFQUFBQSxFQUFFLEVBQUU7RUFDRjNHLElBQUFBLElBQUksRUFBRSxNQUFNO0VBQ1pySyxJQUFBQSxTQUFTLEVBQUUsTUFBTTtFQUNqQmdLLElBQUFBLEdBQUcsRUFBRTtFQUFDNEcsTUFBQUEsT0FBTyxFQUFFLHFEQUFxRDtFQUFFNUMsTUFBQUEsV0FBVyxFQUFFLFdBQUE7T0FBWTtFQUMvRnlDLElBQUFBLEtBQUssRUFBRTtFQUFDRyxNQUFBQSxPQUFPLEVBQUUseUNBQXlDO0VBQUU1QyxNQUFBQSxXQUFXLEVBQUUsSUFBQTtFQUFJLEtBQUE7S0FDOUU7RUFDRHJRLEVBQUFBLEVBQUUsRUFBRTtFQUNGME0sSUFBQUEsSUFBSSxFQUFFLE1BQU07RUFDWnJLLElBQUFBLFNBQVMsRUFBRSxNQUFNO0VBQ2pCZ0ssSUFBQUEsR0FBRyxFQUFFO0VBQUM0RyxNQUFBQSxPQUFPLEVBQUUscURBQXFEO0VBQUU1QyxNQUFBQSxXQUFXLEVBQUUsTUFBQTtPQUFPO0VBQzFGeUMsSUFBQUEsS0FBSyxFQUFFO0VBQUNHLE1BQUFBLE9BQU8sRUFBRSwyQkFBMkI7RUFBRTVDLE1BQUFBLFdBQVcsRUFBRSxJQUFBO0VBQUksS0FBQTtLQUNoRTtFQUNEdlEsRUFBQUEsRUFBRSxFQUFFO0VBQ0Y0TSxJQUFBQSxJQUFJLEVBQUUsTUFBTTtFQUNackssSUFBQUEsU0FBUyxFQUFFLE1BQU07RUFDakJnSyxJQUFBQSxHQUFHLEVBQUU7RUFBQzRHLE1BQUFBLE9BQU8sRUFBRSxxREFBcUQ7RUFBRTVDLE1BQUFBLFdBQVcsRUFBRSxRQUFBO09BQVM7RUFDNUZ5QyxJQUFBQSxLQUFLLEVBQUU7RUFBQ0csTUFBQUEsT0FBTyxFQUFFLGlDQUFpQztFQUFFNUMsTUFBQUEsV0FBVyxFQUFFLElBQUE7RUFBSSxLQUFBO0tBQ3RFO0VBQ0RqUixFQUFBQSxVQUFVLEVBQUU7RUFDVnNOLElBQUFBLElBQUksRUFBRSxNQUFNO0VBQ1pySyxJQUFBQSxTQUFTLEVBQUUsY0FBYztFQUN6QmdLLElBQUFBLEdBQUcsRUFBRTtFQUFDNEcsTUFBQUEsT0FBTyxFQUFFLHFEQUFxRDtFQUFFNUMsTUFBQUEsV0FBVyxFQUFFLE1BQUE7T0FBTztFQUMxRnlDLElBQUFBLEtBQUssRUFBRTtFQUFDRyxNQUFBQSxPQUFPLEVBQUUscUJBQXFCO0VBQUU1QyxNQUFBQSxXQUFXLEVBQUUsSUFBQTtFQUFJLEtBQUE7RUFDM0QsR0FBQTtFQUNGLENBQUM7O0VDdlNELE1BQU1pRCxNQUFNLENBQUM7RUFFWG5TLEVBQUFBLFdBQVdBLEdBQWE7RUFBQSxJQUFBLElBQVpDLEtBQUssR0FBQXNFLFNBQUEsQ0FBQXpDLE1BQUEsR0FBQSxDQUFBLElBQUF5QyxTQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUE1QixTQUFBLEdBQUE0QixTQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUcsRUFBRSxDQUFBO01BQ3BCLElBQUksQ0FBQ3JFLENBQUMsR0FBRyxJQUFJLENBQUE7TUFDYixJQUFJLENBQUNrUyxRQUFRLEdBQUcsSUFBSSxDQUFBO01BQ3BCLElBQUksQ0FBQ0MsS0FBSyxHQUFHLEVBQUUsQ0FBQTtNQUNmLElBQUksQ0FBQ0MsWUFBWSxHQUFHLEVBQUUsQ0FBQTtNQUN0QixJQUFJLENBQUNDLFNBQVMsR0FBRyxFQUFFLENBQUE7TUFDbkIsSUFBSSxDQUFDQyxZQUFZLEdBQUcsRUFBRSxDQUFBO01BQ3RCLElBQUksQ0FBQ0MsZ0JBQWdCLEdBQUcsRUFBRSxDQUFBO01BQzFCLElBQUksQ0FBQ0MsVUFBVSxHQUFHLEVBQUUsQ0FBQTtNQUNwQixJQUFJLENBQUNDLFNBQVMsR0FBRyxFQUFFLENBQUE7TUFDbkIsSUFBSSxDQUFDQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUE7TUFFNUIsSUFBSSxDQUFDQyxTQUFTLEdBQUc7RUFDZkMsTUFBQUEsTUFBTSxFQUFFLEVBQUU7RUFDVkMsTUFBQUEsU0FBUyxFQUFFLEVBQUE7T0FDWixDQUFBO0VBRUQsSUFBQSxJQUFJeFMsT0FBTyxHQUFHTixLQUFLLENBQUNNLE9BQU8sQ0FBQTtFQUMzQixJQUFBLElBQUksQ0FBQzZSLFFBQVEsR0FBR25TLEtBQUssQ0FBQ21TLFFBQVEsQ0FBQTtNQUU5QixJQUFJLElBQUksQ0FBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDQSxRQUFRLENBQUM1UixPQUFPLEVBQUU7UUFDM0MsSUFBSSxDQUFDNFIsUUFBUSxHQUFHM1IsUUFBUSxDQUFDQyxjQUFjLENBQUMsSUFBSSxDQUFDMFIsUUFBUSxDQUFDLENBQUE7RUFDdEQsTUFBQSxJQUFJLENBQUM3UixPQUFPLEVBQUVBLE9BQU8sR0FBRyxJQUFJLENBQUM2UixRQUFRLENBQUE7RUFDdkMsS0FBQTtFQUVBLElBQUEsSUFBSTdSLE9BQU8sSUFBSSxDQUFDQSxPQUFPLENBQUNDLE9BQU8sRUFBRTtRQUMvQkQsT0FBTyxHQUFHRSxRQUFRLENBQUNDLGNBQWMsQ0FBQ1QsS0FBSyxDQUFDTSxPQUFPLENBQUMsQ0FBQTtFQUNsRCxLQUFBO01BQ0EsSUFBSSxDQUFDQSxPQUFPLEVBQUU7UUFDWkEsT0FBTyxHQUFHRSxRQUFRLENBQUN1UyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUNwRCxLQUFBO0VBQ0EsSUFBQSxJQUFJelMsT0FBTyxDQUFDQyxPQUFPLElBQUksVUFBVSxFQUFFO1FBQ2pDLElBQUksQ0FBQzRSLFFBQVEsR0FBRzdSLE9BQU8sQ0FBQTtFQUN2QkEsTUFBQUEsT0FBTyxHQUFHLElBQUksQ0FBQzZSLFFBQVEsQ0FBQ2EsVUFBVSxDQUFBO0VBQ3BDLEtBQUE7TUFFQSxJQUFJLElBQUksQ0FBQ2IsUUFBUSxFQUFFO0VBQ2pCLE1BQUEsSUFBSSxDQUFDQSxRQUFRLENBQUNjLEtBQUssQ0FBQ0MsT0FBTyxHQUFHLE1BQU0sQ0FBQTtFQUN0QyxLQUFBO0VBRUEsSUFBQSxJQUFJLENBQUNDLG1CQUFtQixDQUFDN1MsT0FBTyxDQUFDLENBQUE7RUFDakM7TUFDQSxJQUFJLENBQUM4UyxVQUFVLENBQUNwVCxLQUFLLENBQUNxVCxPQUFPLEtBQUssSUFBSSxDQUFDbEIsUUFBUSxHQUFHLElBQUksQ0FBQ0EsUUFBUSxDQUFDdk0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLGlDQUFpQyxDQUFDLENBQUE7RUFDdEgsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtJQUNFdU4sbUJBQW1CQSxDQUFDN1MsT0FBTyxFQUFFO01BQzNCLElBQUksQ0FBQ0wsQ0FBQyxHQUFHTyxRQUFRLENBQUNRLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtFQUN0QyxJQUFBLElBQUksQ0FBQ2YsQ0FBQyxDQUFDZ0IsU0FBUyxHQUFHLFNBQVMsQ0FBQTtFQUM1QixJQUFBLElBQUksQ0FBQ2hCLENBQUMsQ0FBQ3FULGVBQWUsR0FBRyxJQUFJLENBQUE7RUFDN0I7RUFDQTtFQUNBLElBQUEsSUFBSSxDQUFDclQsQ0FBQyxDQUFDZ1QsS0FBSyxDQUFDTSxVQUFVLEdBQUcsVUFBVSxDQUFBO0VBQ3BDO0VBQ0EsSUFBQSxJQUFJLENBQUN0VCxDQUFDLENBQUNnVCxLQUFLLENBQUNPLGdCQUFnQixHQUFHLDJCQUEyQixDQUFBO0VBQzNELElBQUEsSUFBSSxJQUFJLENBQUNyQixRQUFRLElBQUksSUFBSSxDQUFDQSxRQUFRLENBQUNhLFVBQVUsSUFBSTFTLE9BQU8sSUFBSSxJQUFJLENBQUM2UixRQUFRLENBQUNzQixXQUFXLEVBQUU7RUFDckZuVCxNQUFBQSxPQUFPLENBQUNvVCxZQUFZLENBQUMsSUFBSSxDQUFDelQsQ0FBQyxFQUFFLElBQUksQ0FBQ2tTLFFBQVEsQ0FBQ3NCLFdBQVcsQ0FBQyxDQUFBO0VBQ3pELEtBQUMsTUFDSTtFQUNIblQsTUFBQUEsT0FBTyxDQUFDYyxXQUFXLENBQUMsSUFBSSxDQUFDbkIsQ0FBQyxDQUFDLENBQUE7RUFDN0IsS0FBQTtFQUVBLElBQUEsSUFBSSxDQUFDQSxDQUFDLENBQUNXLGdCQUFnQixDQUFDLE9BQU8sRUFBR1gsQ0FBQyxJQUFLLElBQUksQ0FBQzBULGdCQUFnQixDQUFDMVQsQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUNqRTtFQUNBTyxJQUFBQSxRQUFRLENBQUNJLGdCQUFnQixDQUFDLGlCQUFpQixFQUFHWCxDQUFDLElBQUssSUFBSSxDQUFDMlQsMEJBQTBCLENBQUMzVCxDQUFDLENBQUMsQ0FBQyxDQUFBO0VBQ3ZGLElBQUEsSUFBSSxDQUFDQSxDQUFDLENBQUNXLGdCQUFnQixDQUFDLE9BQU8sRUFBR1gsQ0FBQyxJQUFLLElBQUksQ0FBQzRULFdBQVcsQ0FBQzVULENBQUMsQ0FBQyxDQUFDLENBQUE7RUFDNUQ7TUFDQSxJQUFJLENBQUNvUyxZQUFZLEdBQUcsSUFBSSxDQUFDcFMsQ0FBQyxDQUFDNlQsVUFBVSxDQUFDO0VBQ3hDLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7SUFDRVYsVUFBVUEsQ0FBQ0MsT0FBTyxFQUFFO0VBQ2xCO0VBQ0EsSUFBQSxPQUFPLElBQUksQ0FBQ3BULENBQUMsQ0FBQzhULFVBQVUsRUFBRTtRQUN4QixJQUFJLENBQUM5VCxDQUFDLENBQUMrVCxXQUFXLENBQUMsSUFBSSxDQUFDL1QsQ0FBQyxDQUFDOFQsVUFBVSxDQUFDLENBQUE7RUFDdkMsS0FBQTtNQUNBLElBQUksQ0FBQzNCLEtBQUssR0FBR2lCLE9BQU8sQ0FBQzVSLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO01BQzVDLElBQUksQ0FBQ2lSLFNBQVMsR0FBRyxFQUFFLENBQUE7RUFDbkIsSUFBQSxLQUFLLElBQUl1QixPQUFPLEdBQUcsQ0FBQyxFQUFFQSxPQUFPLEdBQUcsSUFBSSxDQUFDN0IsS0FBSyxDQUFDdlEsTUFBTSxFQUFFb1MsT0FBTyxFQUFFLEVBQUU7RUFDNUQsTUFBQSxJQUFJQyxFQUFFLEdBQUcxVCxRQUFRLENBQUNRLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtFQUN0QyxNQUFBLElBQUksQ0FBQ2YsQ0FBQyxDQUFDbUIsV0FBVyxDQUFDOFMsRUFBRSxDQUFDLENBQUE7RUFDdEIsTUFBQSxJQUFJLENBQUN4QixTQUFTLENBQUM1USxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7RUFDM0IsS0FBQTtNQUNBLElBQUksQ0FBQ3dRLFNBQVMsR0FBRyxJQUFJNkIsS0FBSyxDQUFDLElBQUksQ0FBQy9CLEtBQUssQ0FBQ3ZRLE1BQU0sQ0FBQyxDQUFBO01BQzdDLElBQUksQ0FBQ3VTLGdCQUFnQixFQUFFLENBQUE7TUFDdkIsSUFBSSxDQUFDQyxVQUFVLEVBQUUsQ0FBQTtFQUNuQixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0VDLEVBQUFBLFVBQVVBLEdBQUc7RUFDWCxJQUFBLE9BQU8sSUFBSSxDQUFDbEMsS0FBSyxDQUFDalEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0VBQzlCLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0VpUyxFQUFBQSxnQkFBZ0JBLEdBQUc7RUFDakI7RUFDQTtNQUNBLElBQUksQ0FBQ0csZUFBZSxFQUFFLENBQUE7RUFDdEI7TUFDQSxJQUFJLENBQUNDLGdCQUFnQixFQUFFLENBQUE7RUFDdkI7TUFDQSxJQUFJLENBQUNDLGNBQWMsRUFBRSxDQUFBO0VBQ3ZCLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0VELEVBQUFBLGdCQUFnQkEsR0FBRztNQUNqQixJQUFJLENBQUMvQixVQUFVLEdBQUcsRUFBRSxDQUFBO0VBQ3BCLElBQUEsS0FBSyxJQUFJaUMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHLElBQUksQ0FBQ3RDLEtBQUssQ0FBQ3ZRLE1BQU0sRUFBRTZTLENBQUMsRUFBRSxFQUFFO1FBQzFDLElBQUksSUFBSSxDQUFDcEMsU0FBUyxDQUFDb0MsQ0FBQyxDQUFDLElBQUksMkJBQTJCLEVBQUU7RUFDcEQsUUFBQSxJQUFJLENBQUNqQyxVQUFVLENBQUMzUSxJQUFJLENBQUMsSUFBSSxDQUFDeVEsWUFBWSxDQUFDbUMsQ0FBQyxDQUFDLENBQUM1RixXQUFXLENBQUNxQix5QkFBeUIsQ0FBQ0MsZ0JBQWdCLENBQUMsQ0FBQyxDQUFBO0VBQ3BHLE9BQUE7RUFDRixLQUFBO0VBQ0YsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFcEUsRUFBQUEsT0FBT0EsQ0FBQ2lELFdBQVcsRUFBRTBGLE9BQU8sRUFBRTtFQUM1QixJQUFBLE9BQU8xRixXQUFXLENBQ2ZqRCxPQUFPLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzRJLEdBQUcsRUFBRUMsRUFBRSxFQUFFQyxFQUFFLEtBQUs7UUFDN0MsSUFBSUQsRUFBRSxJQUFJLEdBQUcsRUFBRSxPQUFPdEQsVUFBVSxDQUFDb0QsT0FBTyxDQUFDRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQ3pDLE9BQVEsQ0FBa0MsZ0NBQUEsRUFBQSxJQUFJLENBQUNDLG1CQUFtQixDQUFDSixPQUFPLENBQUNHLEVBQUUsQ0FBQyxDQUFFLENBQVEsT0FBQSxDQUFBLENBQUE7RUFDL0YsS0FBQyxDQUFDLENBQUE7RUFDTixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0VMLEVBQUFBLGNBQWNBLEdBQUc7RUFDZixJQUFBLEtBQUssSUFBSVIsT0FBTyxHQUFHLENBQUMsRUFBRUEsT0FBTyxHQUFHLElBQUksQ0FBQzdCLEtBQUssQ0FBQ3ZRLE1BQU0sRUFBRW9TLE9BQU8sRUFBRSxFQUFFO0VBQzVELE1BQUEsSUFBSSxJQUFJLENBQUN2QixTQUFTLENBQUN1QixPQUFPLENBQUMsRUFBRTtFQUMzQixRQUFBLElBQUllLFdBQVcsR0FBRyxJQUFJLENBQUNoSixPQUFPLENBQUMsSUFBSSxDQUFDd0csZ0JBQWdCLENBQUN5QixPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMxQixZQUFZLENBQUMwQixPQUFPLENBQUMsQ0FBQyxDQUFBO0VBQzFGO0VBQ0EsUUFBQSxJQUFJLENBQUM1QixZQUFZLENBQUM0QixPQUFPLENBQUMsQ0FBQ2hULFNBQVMsR0FBRyxJQUFJLENBQUNxUixTQUFTLENBQUMyQixPQUFPLENBQUMsQ0FBQTtVQUM5RCxJQUFJLENBQUM1QixZQUFZLENBQUM0QixPQUFPLENBQUMsQ0FBQ2dCLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQTtFQUNuRCxRQUFBLElBQUksQ0FBQzVDLFlBQVksQ0FBQzRCLE9BQU8sQ0FBQyxDQUFDN1UsU0FBUyxHQUFJNFYsV0FBVyxJQUFJLEVBQUUsR0FBRyxRQUFRLEdBQUdBLFdBQVksQ0FBQztFQUN0RixPQUFBOztRQUNBLElBQUksQ0FBQzNDLFlBQVksQ0FBQzRCLE9BQU8sQ0FBQyxDQUFDaUIsT0FBTyxDQUFDakIsT0FBTyxHQUFHQSxPQUFPLENBQUE7RUFDdEQsS0FBQTtFQUNGLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNFTSxFQUFBQSxlQUFlQSxHQUFHO01BQ2hCLElBQUlZLGFBQWEsR0FBRyxLQUFLLENBQUE7TUFDekIsSUFBSUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFBO01BQzFCLElBQUlDLFNBQVMsR0FBRyxLQUFLLENBQUE7RUFFckIsSUFBQSxLQUFLLElBQUlwQixPQUFPLEdBQUcsQ0FBQyxFQUFFQSxPQUFPLEdBQUcsSUFBSSxDQUFDN0IsS0FBSyxDQUFDdlEsTUFBTSxFQUFFb1MsT0FBTyxFQUFFLEVBQUU7UUFDNUQsSUFBSXFCLFFBQVEsR0FBRyxRQUFRLENBQUE7UUFDdkIsSUFBSUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDbkQsS0FBSyxDQUFDNkIsT0FBTyxDQUFDLENBQUMsQ0FBQTtFQUN2QyxNQUFBLElBQUl1QixlQUFlLEdBQUcsS0FBSyxDQUFDOztFQUU1QjtFQUNBO1FBQ0EsSUFBSUwsYUFBYSxJQUFJLHlCQUF5QixFQUFFO0VBQzlDO0VBQ0EsUUFBQSxJQUFJUixPQUFPLEdBQUc3RixXQUFXLENBQUNZLHdCQUF3QixDQUFDVixNQUFNLENBQUN6TCxJQUFJLENBQUMsSUFBSSxDQUFDNk8sS0FBSyxDQUFDNkIsT0FBTyxDQUFDLENBQUMsQ0FBQTtFQUNuRixRQUFBLElBQUlVLE9BQU8sSUFBSUEsT0FBTyxDQUFDYyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM1VCxNQUFNLElBQUl1VCxrQkFBa0IsRUFBRTtFQUNqRUUsVUFBQUEsUUFBUSxHQUFHLDBCQUEwQixDQUFBO0VBQ3JDRSxVQUFBQSxlQUFlLEdBQUcxRyxXQUFXLENBQUNZLHdCQUF3QixDQUFDVCxXQUFXLENBQUE7RUFDbEVzRyxVQUFBQSxXQUFXLEdBQUdaLE9BQU8sQ0FBQTtFQUNyQlEsVUFBQUEsYUFBYSxHQUFHLEtBQUssQ0FBQTtFQUN2QixTQUFDLE1BQU07RUFDTEcsVUFBQUEsUUFBUSxHQUFHLHNCQUFzQixDQUFBO0VBQ2pDRSxVQUFBQSxlQUFlLEdBQUcsSUFBSSxDQUFBO1lBQ3RCRCxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUNuRCxLQUFLLENBQUM2QixPQUFPLENBQUMsQ0FBQyxDQUFBO0VBQ3JDLFNBQUE7RUFDRixPQUFBO0VBQ0E7RUFBQSxXQUNLLElBQUlrQixhQUFhLElBQUksc0JBQXNCLEVBQUU7RUFDaEQ7RUFDQSxRQUFBLElBQUlSLE9BQU8sR0FBRzdGLFdBQVcsQ0FBQ2EscUJBQXFCLENBQUNYLE1BQU0sQ0FBQ3pMLElBQUksQ0FBQyxJQUFJLENBQUM2TyxLQUFLLENBQUM2QixPQUFPLENBQUMsQ0FBQyxDQUFBO0VBQ2hGLFFBQUEsSUFBSVUsT0FBTyxJQUFJQSxPQUFPLENBQUNjLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQzVULE1BQU0sSUFBSXVULGtCQUFrQixFQUFHO0VBQ2xFRSxVQUFBQSxRQUFRLEdBQUcsdUJBQXVCLENBQUE7RUFDbENFLFVBQUFBLGVBQWUsR0FBRzFHLFdBQVcsQ0FBQ2EscUJBQXFCLENBQUNWLFdBQVcsQ0FBQTtFQUMvRHNHLFVBQUFBLFdBQVcsR0FBR1osT0FBTyxDQUFBO0VBQ3JCUSxVQUFBQSxhQUFhLEdBQUcsS0FBSyxDQUFBO0VBQ3ZCLFNBQUMsTUFDSTtFQUNIRyxVQUFBQSxRQUFRLEdBQUcsbUJBQW1CLENBQUE7RUFDOUJFLFVBQUFBLGVBQWUsR0FBRyxJQUFJLENBQUE7WUFDdEJELFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQ25ELEtBQUssQ0FBQzZCLE9BQU8sQ0FBQyxDQUFDLENBQUE7RUFDckMsU0FBQTtFQUNGLE9BQUE7O0VBRUE7RUFDQSxNQUFBLElBQUlxQixRQUFRLElBQUksUUFBUSxJQUFJRCxTQUFTLEtBQUssS0FBSyxFQUFFO0VBQy9DLFFBQUEsS0FBSyxJQUFJSyxhQUFhLElBQUlyRixnQkFBZ0IsRUFBRTtFQUMxQyxVQUFBLElBQUksSUFBSSxDQUFDK0IsS0FBSyxDQUFDNkIsT0FBTyxDQUFDLENBQUNsUyxLQUFLLENBQUMyVCxhQUFhLENBQUNwRixLQUFLLENBQUMsRUFBRTtFQUNsRDtjQUNBLElBQUlvRixhQUFhLENBQUNsRixhQUFhLElBQUl5RCxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDM0IsU0FBUyxDQUFDMkIsT0FBTyxHQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMzQixTQUFTLENBQUMyQixPQUFPLEdBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQzNCLFNBQVMsQ0FBQzJCLE9BQU8sR0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDM0IsU0FBUyxDQUFDMkIsT0FBTyxHQUFDLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxFQUFFO0VBQ3hOb0IsY0FBQUEsU0FBUyxHQUFHSyxhQUFhLENBQUE7RUFDekIsY0FBQSxNQUFBO0VBQ0YsYUFBQTtFQUNGLFdBQUE7RUFDRixTQUFBO0VBQ0YsT0FBQTtRQUVBLElBQUlMLFNBQVMsS0FBSyxLQUFLLEVBQUU7RUFDdkJDLFFBQUFBLFFBQVEsR0FBRyxhQUFhLENBQUE7VUFDeEJFLGVBQWUsR0FBRyxJQUFJLENBQUM7VUFDdkJELFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQ25ELEtBQUssQ0FBQzZCLE9BQU8sQ0FBQyxDQUFDLENBQUM7O0VBRXBDO1VBQ0EsSUFBSW9CLFNBQVMsQ0FBQzlFLEdBQUcsRUFBRTtFQUNqQjtFQUNBLFVBQUEsSUFBSSxJQUFJLENBQUM2QixLQUFLLENBQUM2QixPQUFPLENBQUMsQ0FBQ2xTLEtBQUssQ0FBQ3NULFNBQVMsQ0FBQzlFLEdBQUcsQ0FBQyxFQUFFO0VBQzVDOEUsWUFBQUEsU0FBUyxHQUFHLEtBQUssQ0FBQTtFQUNuQixXQUFBO0VBQ0YsU0FBQyxNQUFNO0VBQ0w7WUFDQSxJQUFJcEIsT0FBTyxJQUFJLElBQUksQ0FBQzdCLEtBQUssQ0FBQ3ZRLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDdVEsS0FBSyxDQUFDNkIsT0FBTyxHQUFDLENBQUMsQ0FBQyxDQUFDbFMsS0FBSyxDQUFDK00sV0FBVyxDQUFDYyxXQUFXLENBQUNaLE1BQU0sQ0FBQyxFQUFFO0VBQ25HcUcsWUFBQUEsU0FBUyxHQUFHLEtBQUssQ0FBQTtFQUNuQixXQUFBO0VBQ0YsU0FBQTtFQUNGLE9BQUE7O0VBRUE7UUFDQSxJQUFJQyxRQUFRLElBQUksUUFBUSxFQUFFO0VBQ3hCLFFBQUEsS0FBSyxJQUFJaEssSUFBSSxJQUFJd0QsV0FBVyxFQUFFO0VBQzVCLFVBQUEsSUFBSUEsV0FBVyxDQUFDeEQsSUFBSSxDQUFDLENBQUMwRCxNQUFNLEVBQUU7RUFDNUIsWUFBQSxJQUFJMkYsT0FBTyxHQUFHN0YsV0FBVyxDQUFDeEQsSUFBSSxDQUFDLENBQUMwRCxNQUFNLENBQUN6TCxJQUFJLENBQUMsSUFBSSxDQUFDNk8sS0FBSyxDQUFDNkIsT0FBTyxDQUFDLENBQUMsQ0FBQTtFQUNoRSxZQUFBLElBQUlVLE9BQU8sRUFBRTtFQUNYVyxjQUFBQSxRQUFRLEdBQUdoSyxJQUFJLENBQUE7RUFDZmtLLGNBQUFBLGVBQWUsR0FBRzFHLFdBQVcsQ0FBQ3hELElBQUksQ0FBQyxDQUFDMkQsV0FBVyxDQUFBO0VBQy9Dc0csY0FBQUEsV0FBVyxHQUFHWixPQUFPLENBQUE7RUFDckIsY0FBQSxNQUFBO0VBQ0YsYUFBQTtFQUNGLFdBQUE7RUFDRixTQUFBO0VBQ0YsT0FBQTs7RUFFQTtFQUNBLE1BQUEsSUFBSVcsUUFBUSxJQUFJLHlCQUF5QixJQUFJQSxRQUFRLElBQUksc0JBQXNCLEVBQUU7RUFDL0VILFFBQUFBLGFBQWEsR0FBR0csUUFBUSxDQUFBO1VBQ3hCRixrQkFBa0IsR0FBR0csV0FBVyxDQUFDRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM1VCxNQUFNLENBQUE7RUFDdkQsT0FBQTs7RUFFQTtRQUNBLElBQ0UsQ0FBQ3lULFFBQVEsSUFBSSxnQkFBZ0IsSUFBSUEsUUFBUSxJQUFJLDJCQUEyQixLQUNyRXJCLE9BQU8sR0FBRyxDQUFDLEtBQ1YsSUFBSSxDQUFDM0IsU0FBUyxDQUFDMkIsT0FBTyxHQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMzQixTQUFTLENBQUMyQixPQUFPLEdBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQzNCLFNBQVMsQ0FBQzJCLE9BQU8sR0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDM0IsU0FBUyxDQUFDMkIsT0FBTyxHQUFDLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxFQUN2SztFQUNBO0VBQ0FxQixRQUFBQSxRQUFRLEdBQUcsUUFBUSxDQUFBO1VBQ25CQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUNuRCxLQUFLLENBQUM2QixPQUFPLENBQUMsQ0FBQyxDQUFBO0VBQ25DdUIsUUFBQUEsZUFBZSxHQUFHLEtBQUssQ0FBQTtFQUN6QixPQUFBOztFQUVBO1FBQ0EsSUFBSUYsUUFBUSxJQUFJLGtCQUFrQixFQUFFO0VBQ2xDLFFBQUEsSUFBSVgsT0FBTyxHQUFHN0YsV0FBVyxDQUFDa0IsSUFBSSxDQUFDaEIsTUFBTSxDQUFDekwsSUFBSSxDQUFDLElBQUksQ0FBQzZPLEtBQUssQ0FBQzZCLE9BQU8sQ0FBQyxDQUFDLENBQUE7RUFDL0QsUUFBQSxJQUFJVSxPQUFPLEVBQUU7RUFDWFcsVUFBQUEsUUFBUSxHQUFHLE1BQU0sQ0FBQTtFQUNqQkUsVUFBQUEsZUFBZSxHQUFHMUcsV0FBVyxDQUFDa0IsSUFBSSxDQUFDZixXQUFXLENBQUE7RUFDOUNzRyxVQUFBQSxXQUFXLEdBQUdaLE9BQU8sQ0FBQTtFQUN2QixTQUFBO0VBQ0YsT0FBQTs7RUFFQTtFQUNBLE1BQUEsSUFBSVcsUUFBUSxJQUFJLGtCQUFrQixJQUFJQSxRQUFRLElBQUksa0JBQWtCLEVBQUU7RUFDcEUsUUFBQSxJQUFJckIsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMzQixTQUFTLENBQUMyQixPQUFPLEdBQUcsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFO0VBQzNEO0VBQ0EsVUFBQSxJQUFJVSxPQUFPLEdBQUc3RixXQUFXLENBQUNpQixJQUFJLENBQUNmLE1BQU0sQ0FBQ3pMLElBQUksQ0FBQyxJQUFJLENBQUM2TyxLQUFLLENBQUM2QixPQUFPLENBQUMsQ0FBQyxDQUFBO0VBQy9ELFVBQUEsSUFBSVUsT0FBTyxFQUFFO0VBQ1g7RUFDQVcsWUFBQUEsUUFBUSxHQUFHLE1BQU0sQ0FBQTtFQUNqQkMsWUFBQUEsV0FBVyxHQUFHWixPQUFPLENBQUE7RUFDckJhLFlBQUFBLGVBQWUsR0FBRzFHLFdBQVcsQ0FBQ2lCLElBQUksQ0FBQ2QsV0FBVyxDQUFBO0VBQ2hELFdBQUMsTUFBTTtFQUNMO0VBQ0FxRyxZQUFBQSxRQUFRLEdBQUcsUUFBUSxDQUFBO2NBQ25CQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUNuRCxLQUFLLENBQUM2QixPQUFPLENBQUMsQ0FBQyxDQUFBO0VBQ25DdUIsWUFBQUEsZUFBZSxHQUFHLEtBQUssQ0FBQTtFQUN6QixXQUFBO0VBQ0YsU0FBQyxNQUFNO0VBQ0w7RUFDQSxVQUFBLElBQUlHLFdBQVcsR0FBRzFCLE9BQU8sR0FBRyxDQUFDLENBQUE7WUFDN0IsTUFBTTJCLGVBQWUsR0FBSU4sUUFBUSxJQUFJLGtCQUFrQixHQUFHLFlBQVksR0FBRyxZQUFhLENBQUE7WUFDdEYsR0FBRztjQUNELElBQUksSUFBSSxDQUFDaEQsU0FBUyxDQUFDc0QsZUFBZSxDQUFDLElBQUlBLGVBQWUsRUFBRTtFQUN0RCxjQUFBLElBQUksQ0FBQ3RELFNBQVMsQ0FBQ3FELFdBQVcsQ0FBQyxHQUFHQyxlQUFlLENBQUE7RUFDN0MsY0FBQSxJQUFJLENBQUNsRCxTQUFTLENBQUNrRCxlQUFlLENBQUMsR0FBRyxJQUFJLENBQUE7RUFDeEMsYUFBQTtFQUNBLFlBQUEsSUFBSSxDQUFDcEQsZ0JBQWdCLENBQUNtRCxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUE7RUFDMUMsWUFBQSxJQUFJLENBQUNwRCxZQUFZLENBQUNvRCxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQ3ZELEtBQUssQ0FBQ3VELFdBQVcsQ0FBQyxDQUFDLENBQUE7RUFFMURBLFlBQUFBLFdBQVcsRUFBRSxDQUFBO0VBQ2YsV0FBQyxRQUFPQSxXQUFXLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQ3JELFNBQVMsQ0FBQ3FELFdBQVcsQ0FBQyxJQUFJLFFBQVEsRUFBQTtFQUNyRSxTQUFBO0VBQ0YsT0FBQTtFQUNBO1FBQ0EsSUFBSSxJQUFJLENBQUNyRCxTQUFTLENBQUMyQixPQUFPLENBQUMsSUFBSXFCLFFBQVEsRUFBRTtFQUN2QyxRQUFBLElBQUksQ0FBQ2hELFNBQVMsQ0FBQzJCLE9BQU8sQ0FBQyxHQUFHcUIsUUFBUSxDQUFBO0VBQ2xDLFFBQUEsSUFBSSxDQUFDNUMsU0FBUyxDQUFDdUIsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFBO0VBQ2hDLE9BQUE7RUFDQSxNQUFBLElBQUksQ0FBQ3pCLGdCQUFnQixDQUFDeUIsT0FBTyxDQUFDLEdBQUd1QixlQUFlLENBQUE7RUFDaEQsTUFBQSxJQUFJLENBQUNqRCxZQUFZLENBQUMwQixPQUFPLENBQUMsR0FBR3NCLFdBQVcsQ0FBQTtFQUMxQyxLQUFBO0VBQ0YsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDRU0sRUFBQUEsK0JBQStCQSxHQUFHO01BQ2hDLElBQUksQ0FBQ0MsY0FBYyxFQUFFLENBQUE7TUFDckIsSUFBSSxDQUFDQyxrQkFBa0IsRUFBRSxDQUFBO01BQ3pCLElBQUksQ0FBQzNCLGdCQUFnQixFQUFFLENBQUE7RUFDekIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRTRCLEVBQUFBLGdCQUFnQkEsQ0FBQ0MsY0FBYyxFQUFFQyxPQUFPLEVBQUU7RUFDeEM7RUFDQSxJQUFBLElBQUlDLFVBQVUsR0FBR0QsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7TUFDaEMsSUFBSUUsTUFBTSxHQUFHSCxjQUFjLENBQUNJLE1BQU0sQ0FBQyxDQUFDLEVBQUVGLFVBQVUsQ0FBQyxDQUFBO0VBQ2pELElBQUEsSUFBSTdLLElBQUksR0FBRzRLLE9BQU8sR0FBRyxTQUFTLEdBQUcsUUFBUSxDQUFBO01BQ3pDLElBQUlJLGFBQWEsR0FBR0gsVUFBVSxDQUFBO01BRTlCLElBQUlJLFlBQVksR0FBRyxDQUFDLENBQUE7TUFDcEIsSUFBSUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtNQUNwQixJQUFJQyxPQUFPLEdBQUcsS0FBSyxDQUFBO01BQ25CLElBQUkxRixTQUFTLEdBQUcsRUFBRSxDQUFBO0VBQ2xCLElBQUEsSUFBSTJGLFdBQVcsR0FBRyxFQUFFLENBQUM7O0VBR3JCQyxJQUFBQSxTQUFTLEVBQUUsT0FBT0wsYUFBYSxHQUFHTCxjQUFjLENBQUNwVSxNQUFNLElBQUkyVSxRQUFRLEtBQUssS0FBSyw2QkFBNkI7RUFDeEcsTUFBQSxJQUFJbkYsTUFBTSxHQUFHNEUsY0FBYyxDQUFDSSxNQUFNLENBQUNDLGFBQWEsQ0FBQyxDQUFBOztFQUVqRDtFQUNBO0VBQ0EsTUFBQSxLQUFLLElBQUluRixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsRUFBRTtFQUN2RCxRQUFBLElBQUl5RixHQUFHLEdBQUduRyxhQUFhLENBQUNVLElBQUksQ0FBQyxDQUFDbkMsTUFBTSxDQUFDekwsSUFBSSxDQUFDOE4sTUFBTSxDQUFDLENBQUE7RUFDakQsUUFBQSxJQUFJdUYsR0FBRyxFQUFFO0VBQ1BOLFVBQUFBLGFBQWEsSUFBSU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDL1UsTUFBTSxDQUFBO0VBQzlCLFVBQUEsU0FBUzhVLFNBQVMsQ0FBQTtFQUNwQixTQUFBO0VBQ0YsT0FBQTs7RUFFQTtRQUNBLElBQUl0RixNQUFNLENBQUN0UCxLQUFLLENBQUMwTyxhQUFhLENBQUNLLFNBQVMsQ0FBQzlCLE1BQU0sQ0FBQyxFQUFFO0VBQ2hEO0VBQ0F1SCxRQUFBQSxZQUFZLEVBQUUsQ0FBQTtFQUNkRCxRQUFBQSxhQUFhLElBQUksQ0FBQyxDQUFBO0VBQ2xCLFFBQUEsU0FBU0ssU0FBUyxDQUFBO0VBQ3BCLE9BQUE7O0VBRUE7UUFDQSxJQUFJdEYsTUFBTSxDQUFDdFAsS0FBSyxDQUFDME8sYUFBYSxDQUFDSSxRQUFRLENBQUM3QixNQUFNLENBQUMsRUFBRTtFQUMvQztFQUNBO0VBQ0E7RUFDQXVILFFBQUFBLFlBQVksRUFBRSxDQUFBO0VBQ2Q7VUFDQSxJQUFJLENBQUNMLE9BQU8sRUFBRTtZQUNaLElBQUksSUFBSSxDQUFDRixnQkFBZ0IsQ0FBQzNFLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRTtFQUN4QztFQUNBLFlBQUEsT0FBTyxLQUFLLENBQUE7RUFDZCxXQUFBO0VBQ0YsU0FBQTtFQUNBaUYsUUFBQUEsYUFBYSxJQUFJLENBQUMsQ0FBQTtFQUNsQixRQUFBLFNBQVNLLFNBQVMsQ0FBQTtFQUNwQixPQUFBOztFQUVBO0VBQ0EsTUFBQSxJQUFJdEYsTUFBTSxDQUFDdFAsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO0VBQ3ZCd1UsUUFBQUEsWUFBWSxFQUFFLENBQUE7VUFDZCxJQUFJQSxZQUFZLElBQUksQ0FBQyxFQUFFO0VBQ3JCO1lBQ0FDLFFBQVEsR0FBR1AsY0FBYyxDQUFDSSxNQUFNLENBQUNGLFVBQVUsRUFBRUcsYUFBYSxHQUFHSCxVQUFVLENBQUMsQ0FBQTtFQUN4RUcsVUFBQUEsYUFBYSxFQUFFLENBQUE7RUFDZixVQUFBLFNBQVNLLFNBQVMsQ0FBQTtFQUNwQixTQUFBO0VBQ0YsT0FBQTs7RUFFQTtFQUNBTCxNQUFBQSxhQUFhLEVBQUUsQ0FBQTtFQUNqQixLQUFBOztFQUVBO0VBQ0EsSUFBQSxJQUFJRSxRQUFRLEtBQUssS0FBSyxFQUFFLE9BQU8sS0FBSyxDQUFDOztFQUVyQztFQUNBLElBQUEsSUFBSUssUUFBUSxHQUFHUCxhQUFhLEdBQUdMLGNBQWMsQ0FBQ3BVLE1BQU0sR0FBR29VLGNBQWMsQ0FBQ0ksTUFBTSxDQUFDQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFBOztFQUVuRztNQUNBLElBQUlPLFFBQVEsSUFBSSxHQUFHLEVBQUU7RUFDbkIsTUFBQSxJQUFJeEYsTUFBTSxHQUFHNEUsY0FBYyxDQUFDSSxNQUFNLENBQUNDLGFBQWEsQ0FBQyxDQUFBO1FBQ2pELElBQUlNLEdBQUcsR0FBR25HLGFBQWEsQ0FBQ00sU0FBUyxDQUFDL0IsTUFBTSxDQUFDekwsSUFBSSxDQUFDOE4sTUFBTSxDQUFDLENBQUE7RUFDckQsTUFBQSxJQUFJdUYsR0FBRyxFQUFFO0VBQ1A7RUFDQU4sUUFBQUEsYUFBYSxJQUFJTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMvVSxNQUFNLENBQUE7RUFDOUJrUCxRQUFBQSxTQUFTLENBQUNqUCxJQUFJLENBQUM4VSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUVBLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRUEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7VUFDdEMsSUFBSUEsR0FBRyxDQUFDbkcsYUFBYSxDQUFDTSxTQUFTLENBQUNYLGdCQUFnQixDQUFDLEVBQUU7RUFDakQ7WUFDQXFHLE9BQU8sR0FBR0csR0FBRyxDQUFDbkcsYUFBYSxDQUFDTSxTQUFTLENBQUNYLGdCQUFnQixDQUFDLENBQUE7RUFDekQsU0FBQyxNQUFNO0VBQ0w7RUFDQXFHLFVBQUFBLE9BQU8sR0FBR0QsUUFBUSxDQUFDTSxJQUFJLEVBQUUsQ0FBQTtFQUMzQixTQUFBO0VBQ0YsT0FBQyxNQUFNO0VBQ0w7RUFDQSxRQUFBLE9BQU8sS0FBSyxDQUFBO0VBQ2QsT0FBQTtFQUNGLEtBQUMsTUFBTSxJQUFJRCxRQUFRLElBQUksR0FBRyxFQUFFO0VBRTFCO0VBQ0FKLE1BQUFBLE9BQU8sR0FBR0QsUUFBUSxDQUFDTSxJQUFJLEVBQUUsQ0FBQTs7RUFFM0I7RUFDQSxLQUFDLE1BQU07RUFBRTs7RUFFUDtFQUNBUixNQUFBQSxhQUFhLEVBQUUsQ0FBQTtRQUVmLElBQUlTLGdCQUFnQixHQUFHLENBQUMsQ0FBQTtRQUN4QkMsV0FBVyxFQUFFLE9BQU9WLGFBQWEsR0FBR0wsY0FBYyxDQUFDcFUsTUFBTSxJQUFJa1YsZ0JBQWdCLEdBQUcsQ0FBQyxFQUFFO0VBQ2pGLFFBQUEsSUFBSTFGLE1BQU0sR0FBRzRFLGNBQWMsQ0FBQ0ksTUFBTSxDQUFDQyxhQUFhLENBQUMsQ0FBQTs7RUFFakQ7RUFDQSxRQUFBLElBQUlNLEdBQUcsR0FBRyxNQUFNLENBQUNyVCxJQUFJLENBQUM4TixNQUFNLENBQUMsQ0FBQTtFQUM3QixRQUFBLElBQUl1RixHQUFHLEVBQUU7WUFDUCxRQUFRRixXQUFXLENBQUM3VSxNQUFNO0VBQ3hCLFlBQUEsS0FBSyxDQUFDO0VBQUU2VSxjQUFBQSxXQUFXLENBQUM1VSxJQUFJLENBQUM4VSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUFFLGNBQUEsTUFBQTtFQUFPO0VBQ3pDLFlBQUEsS0FBSyxDQUFDO0VBQUVGLGNBQUFBLFdBQVcsQ0FBQzVVLElBQUksQ0FBQzhVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0VBQUUsY0FBQSxNQUFBO0VBQU07RUFDeEMsWUFBQSxLQUFLLENBQUM7RUFBRTtnQkFDTixJQUFJRixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMzVSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7RUFDN0IyVSxnQkFBQUEsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUN4VSxNQUFNLENBQUMwVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUNoRCxlQUFDLE1BQU07RUFDTCxnQkFBQSxJQUFJRyxnQkFBZ0IsSUFBSSxDQUFDLEVBQUUsT0FBTyxLQUFLLENBQUM7RUFDeENMLGdCQUFBQSxXQUFXLENBQUM1VSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7a0JBQ3JCNFUsV0FBVyxDQUFDNVUsSUFBSSxDQUFDOFUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDM0IsZUFBQTs7RUFDQSxjQUFBLE1BQUE7RUFDRixZQUFBLEtBQUssQ0FBQztFQUFFRixjQUFBQSxXQUFXLENBQUM1VSxJQUFJLENBQUM4VSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUFFLGNBQUEsTUFBQTtFQUFPO0VBQ3pDLFlBQUEsS0FBSyxDQUFDO0VBQUUsY0FBQSxPQUFPLEtBQUssQ0FBQTtFQUFFO0VBQ3RCLFlBQUEsS0FBSyxDQUFDO0VBQUVGLGNBQUFBLFdBQVcsQ0FBQzVVLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtFQUFFO0VBQzlCLFlBQUEsS0FBSyxDQUFDO0VBQUU0VSxjQUFBQSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUdBLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQ3hVLE1BQU0sQ0FBQzBVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0VBQUUsY0FBQSxNQUFBO0VBQU87RUFDL0QsWUFBQSxLQUFLLENBQUM7RUFBRUYsY0FBQUEsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUN4VSxNQUFNLENBQUMwVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUFFLGNBQUEsTUFBQTtFQUFPO0VBQy9ELFlBQUE7RUFBUyxjQUFBLE9BQU8sS0FBSyxDQUFBO0VBQUU7RUFDekIsV0FBQTs7RUFDQU4sVUFBQUEsYUFBYSxJQUFJTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMvVSxNQUFNLENBQUE7RUFDOUIsVUFBQSxTQUFTbVYsV0FBVyxDQUFBO0VBQ3RCLFNBQUE7O0VBRUE7VUFDQUosR0FBRyxHQUFHbkcsYUFBYSxDQUFDQyxNQUFNLENBQUMxQixNQUFNLENBQUN6TCxJQUFJLENBQUM4TixNQUFNLENBQUMsQ0FBQTtFQUM5QyxRQUFBLElBQUl1RixHQUFHLEVBQUU7WUFDUCxRQUFRRixXQUFXLENBQUM3VSxNQUFNO0VBQ3hCLFlBQUEsS0FBSyxDQUFDO0VBQUU2VSxjQUFBQSxXQUFXLENBQUM1VSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7RUFBRTtFQUM5QixZQUFBLEtBQUssQ0FBQztFQUFFNFUsY0FBQUEsV0FBVyxDQUFDNVUsSUFBSSxDQUFDOFUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7RUFBRSxjQUFBLE1BQUE7RUFBTztFQUN6QyxZQUFBLEtBQUssQ0FBQztFQUFFRixjQUFBQSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUdBLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQ3hVLE1BQU0sQ0FBQzBVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0VBQUUsY0FBQSxNQUFBO0VBQU87RUFDL0QsWUFBQSxLQUFLLENBQUM7RUFBRSxjQUFBLE9BQU8sS0FBSyxDQUFBO0VBQUU7RUFDdEIsWUFBQSxLQUFLLENBQUM7RUFBRSxjQUFBLE9BQU8sS0FBSyxDQUFBO0VBQUU7RUFDdEIsWUFBQSxLQUFLLENBQUM7RUFBRUYsY0FBQUEsV0FBVyxDQUFDNVUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0VBQUU7RUFDOUIsWUFBQSxLQUFLLENBQUM7RUFBRTRVLGNBQUFBLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBR0EsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDeFUsTUFBTSxDQUFDMFUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7RUFBRSxjQUFBLE1BQUE7RUFBTztFQUMvRCxZQUFBO0VBQVMsY0FBQSxPQUFPLEtBQUssQ0FBQTtFQUFFO0VBQ3pCLFdBQUE7O0VBQ0FOLFVBQUFBLGFBQWEsSUFBSU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDL1UsTUFBTSxDQUFBO0VBQzlCLFVBQUEsU0FBU21WLFdBQVcsQ0FBQTtFQUN0QixTQUFBOztFQUVBO0VBQ0EsUUFBQSxJQUFJTixXQUFXLENBQUM3VSxNQUFNLEdBQUcsQ0FBQyxJQUFJd1AsTUFBTSxDQUFDdFAsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hELElBQUkyVSxXQUFXLENBQUM3VSxNQUFNLElBQUksQ0FBQyxFQUFFNlUsV0FBVyxDQUFDNVUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0VBQ2pENFUsVUFBQUEsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUN4VSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7RUFDM0NvVSxVQUFBQSxhQUFhLEVBQUUsQ0FBQTtFQUNmLFVBQUEsU0FBU1UsV0FBVyxDQUFBO0VBQ3RCLFNBQUE7O0VBRUE7RUFDQSxRQUFBLElBQUksQ0FBQ04sV0FBVyxDQUFDN1UsTUFBTSxJQUFJLENBQUMsSUFBSTZVLFdBQVcsQ0FBQzdVLE1BQU0sSUFBSSxDQUFDLEtBQUt3UCxNQUFNLENBQUN0UCxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7RUFDOUUsVUFBQSxJQUFJMlUsV0FBVyxDQUFDN1UsTUFBTSxJQUFJLENBQUMsRUFBRTZVLFdBQVcsQ0FBQzVVLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztFQUNsRDRVLFVBQUFBLFdBQVcsQ0FBQzVVLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtFQUNyQndVLFVBQUFBLGFBQWEsRUFBRSxDQUFBO0VBQ2YsVUFBQSxTQUFTVSxXQUFXLENBQUE7RUFDdEIsU0FBQTs7RUFFQTtFQUNBSixRQUFBQSxHQUFHLEdBQUcsT0FBTyxDQUFDclQsSUFBSSxDQUFDOE4sTUFBTSxDQUFDLENBQUE7RUFDMUI7RUFDQTtVQUNBLElBQUl1RixHQUFHLEtBQUtGLFdBQVcsQ0FBQzdVLE1BQU0sSUFBSSxDQUFDLElBQUk2VSxXQUFXLENBQUM3VSxNQUFNLElBQUksQ0FBQyxJQUFJNlUsV0FBVyxDQUFDN1UsTUFBTSxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQzFGLE9BQU82VSxXQUFXLENBQUM3VSxNQUFNLEdBQUcsQ0FBQyxFQUFFNlUsV0FBVyxDQUFDNVUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0VBQ25ENFUsVUFBQUEsV0FBVyxDQUFDNVUsSUFBSSxDQUFDOFUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7RUFDeEJOLFVBQUFBLGFBQWEsRUFBRSxDQUFBO0VBQ2YsVUFBQSxTQUFTVSxXQUFXLENBQUE7RUFDdEIsU0FBQTs7RUFFQTtVQUNBLElBQUlKLEdBQUcsS0FBS0YsV0FBVyxDQUFDN1UsTUFBTSxJQUFJLENBQUMsSUFBSTZVLFdBQVcsQ0FBQzdVLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSTZVLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0VBQzNGLFVBQUEsSUFBSUYsV0FBVyxDQUFDN1UsTUFBTSxJQUFJLENBQUMsRUFBRTZVLFdBQVcsQ0FBQzVVLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztFQUNsRDRVLFVBQUFBLFdBQVcsQ0FBQzVVLElBQUksQ0FBQzhVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0VBQ3hCTixVQUFBQSxhQUFhLEVBQUUsQ0FBQTtFQUNmLFVBQUEsU0FBU1UsV0FBVyxDQUFBO0VBQ3RCLFNBQUE7RUFDQTs7RUFFQTtFQUNBLFFBQUEsSUFBSTNGLE1BQU0sQ0FBQ3RQLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN2QixRQUFRMlUsV0FBVyxDQUFDN1UsTUFBTTtFQUN4QixZQUFBLEtBQUssQ0FBQztFQUFFNlUsY0FBQUEsV0FBVyxDQUFDNVUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0VBQUU7RUFDOUIsWUFBQSxLQUFLLENBQUM7RUFBRTRVLGNBQUFBLFdBQVcsQ0FBQzVVLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtFQUFFO0VBQzlCLFlBQUEsS0FBSyxDQUFDO0VBQUU7RUFDTjRVLGNBQUFBLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBR0EsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDeFUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0VBQzNDLGNBQUEsSUFBSSxDQUFDd1UsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDM1UsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFZ1YsZ0JBQWdCLEVBQUUsQ0FBQTtFQUNuRCxjQUFBLE1BQUE7RUFDRixZQUFBLEtBQUssQ0FBQztFQUFFTCxjQUFBQSxXQUFXLENBQUM1VSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7RUFBRztFQUMvQixZQUFBLEtBQUssQ0FBQztFQUFFNFUsY0FBQUEsV0FBVyxDQUFDNVUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0VBQUUsY0FBQSxNQUFBO0VBQU07RUFDckMsWUFBQSxLQUFLLENBQUM7RUFBRTRVLGNBQUFBLFdBQVcsQ0FBQzVVLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtFQUFFO0VBQzlCLFlBQUEsS0FBSyxDQUFDO0VBQUM7Z0JBQ0wsSUFBSTRVLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsT0FBTyxLQUFLLENBQUE7RUFDdkNBLGNBQUFBLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBR0EsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDeFUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0VBQzNDLGNBQUEsTUFBQTtFQUNGLFlBQUE7RUFBUyxjQUFBLE9BQU8sS0FBSyxDQUFBO0VBQUU7RUFDekIsV0FBQTs7RUFDQW9VLFVBQUFBLGFBQWEsRUFBRSxDQUFBO0VBQ2YsVUFBQSxTQUFTVSxXQUFXLENBQUE7RUFDdEIsU0FBQTs7RUFFQTtFQUNBLFFBQUEsSUFBSTNGLE1BQU0sQ0FBQ3RQLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtFQUN2QixVQUFBLElBQUkyVSxXQUFXLENBQUM3VSxNQUFNLElBQUksQ0FBQyxFQUFFO0VBQzNCO2NBQ0EsT0FBTzZVLFdBQVcsQ0FBQzdVLE1BQU0sR0FBRyxDQUFDLEVBQUU2VSxXQUFXLENBQUM1VSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7RUFFbkQsWUFBQSxJQUFJLENBQUM0VSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMzVSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUVnVixnQkFBZ0IsRUFBRSxDQUFBO2NBRW5ELElBQUlBLGdCQUFnQixHQUFHLENBQUMsRUFBRTtFQUN4QkwsY0FBQUEsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUN4VSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7RUFDN0MsYUFBQTtFQUVGLFdBQUMsTUFBTSxJQUFJd1UsV0FBVyxDQUFDN1UsTUFBTSxJQUFJLENBQUMsSUFBSTZVLFdBQVcsQ0FBQzdVLE1BQU0sSUFBSSxDQUFDLEVBQUU7RUFDN0Q7RUFDQSxZQUFBLElBQUk2VSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFO0VBQ3pCO2dCQUNBLElBQUlBLFdBQVcsQ0FBQzdVLE1BQU0sSUFBSSxDQUFDLEVBQUU2VSxXQUFXLENBQUM1VSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7RUFDakQ0VSxjQUFBQSxXQUFXLENBQUM1VSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7RUFDdkIsYUFBQyxNQUFNO0VBQ0w7Z0JBQ0EsSUFBSTRVLFdBQVcsQ0FBQzdVLE1BQU0sSUFBSSxDQUFDLEVBQUU2VSxXQUFXLENBQUM1VSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FDOUM0VSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUdBLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQ3hVLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtFQUNsRCxhQUFBO0VBQ0YsV0FBQyxNQUFPO2NBQ042VSxnQkFBZ0IsRUFBRSxDQUFDO0VBQ3JCLFdBQUE7O1lBRUEsSUFBSUEsZ0JBQWdCLElBQUksQ0FBQyxFQUFFO0VBQ3pCO2NBQ0EsT0FBT0wsV0FBVyxDQUFDN1UsTUFBTSxHQUFHLENBQUMsRUFBRTZVLFdBQVcsQ0FBQzVVLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtFQUNyRCxXQUFBO0VBRUF3VSxVQUFBQSxhQUFhLEVBQUUsQ0FBQTtFQUNmLFVBQUEsU0FBU1UsV0FBVyxDQUFBO0VBQ3RCLFNBQUE7O0VBRUE7RUFDQUosUUFBQUEsR0FBRyxHQUFHLElBQUksQ0FBQ3JULElBQUksQ0FBQzhOLE1BQU0sQ0FBQyxDQUFBO0VBQ3ZCLFFBQUEsSUFBSXVGLEdBQUcsRUFBRTtZQUNQLFFBQVFGLFdBQVcsQ0FBQzdVLE1BQU07RUFDeEIsWUFBQSxLQUFLLENBQUM7RUFBRTZVLGNBQUFBLFdBQVcsQ0FBQzVVLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtFQUFFO0VBQzlCLFlBQUEsS0FBSyxDQUFDO0VBQUU0VSxjQUFBQSxXQUFXLENBQUM1VSxJQUFJLENBQUM4VSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUFFLGNBQUEsTUFBQTtFQUFPO0VBQ3pDLFlBQUEsS0FBSyxDQUFDO0VBQUVGLGNBQUFBLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBR0EsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDeFUsTUFBTSxDQUFDMFUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7RUFBRSxjQUFBLE1BQUE7RUFBTztFQUMvRCxZQUFBLEtBQUssQ0FBQztFQUFFLGNBQUEsT0FBTyxLQUFLLENBQUE7RUFBRTtFQUN0QixZQUFBLEtBQUssQ0FBQztFQUFFLGNBQUEsT0FBTyxLQUFLLENBQUE7RUFBRTtFQUN0QixZQUFBLEtBQUssQ0FBQztFQUFFRixjQUFBQSxXQUFXLENBQUM1VSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7RUFBRTtFQUM5QixZQUFBLEtBQUssQ0FBQztFQUFFNFUsY0FBQUEsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUN4VSxNQUFNLENBQUMwVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUFFLGNBQUEsTUFBQTtFQUFPO0VBQy9ELFlBQUE7RUFBUyxjQUFBLE9BQU8sS0FBSyxDQUFBO0VBQUU7RUFDekIsV0FBQTs7RUFDQU4sVUFBQUEsYUFBYSxJQUFJTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMvVSxNQUFNLENBQUE7RUFDOUIsVUFBQSxTQUFTbVYsV0FBVyxDQUFBO0VBQ3RCLFNBQUE7VUFDQSxNQUFNLGVBQWUsQ0FBQztFQUN4QixPQUFBOztFQUNBLE1BQUEsSUFBSUQsZ0JBQWdCLEdBQUcsQ0FBQyxFQUFFLE9BQU8sS0FBSyxDQUFDO0VBRXpDLEtBQUE7O01BRUEsSUFBSU4sT0FBTyxLQUFLLEtBQUssRUFBRTtFQUNyQjtRQUNBLElBQUlRLEtBQUssR0FBRyxLQUFLLENBQUE7RUFDakIsTUFBQSxLQUFLLElBQUlDLEtBQUssSUFBSSxJQUFJLENBQUN6RSxVQUFVLEVBQUU7VUFDakMsSUFBSXlFLEtBQUssSUFBSVQsT0FBTyxFQUFFO0VBQ3BCUSxVQUFBQSxLQUFLLEdBQUcsSUFBSSxDQUFBO0VBQ1osVUFBQSxNQUFBO0VBQ0YsU0FBQTtFQUNGLE9BQUE7RUFDQSxNQUFBLElBQUlDLEtBQUssR0FBR0QsS0FBSyxHQUFHLCtCQUErQixHQUFHLGlDQUFpQyxDQUFBO0VBQ3ZGLE1BQUEsSUFBSUUsTUFBTSxHQUFJLENBQTZCN0wsMkJBQUFBLEVBQUFBLElBQUssS0FBSThLLE1BQU8sQ0FBQSxvQkFBQSxFQUFzQjlLLElBQUssQ0FBQSxDQUFBLEVBQUl5RixTQUFTLENBQUNsUCxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUNrUCxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUltRyxLQUFLLEdBQUcsRUFBRyxDQUFBLEVBQUEsRUFBSSxJQUFJLENBQUNuQyxtQkFBbUIsQ0FBQ3lCLFFBQVEsQ0FBRSxDQUFBLGtDQUFBLEVBQW9DbEwsSUFBSyxDQUFXLFVBQUEsQ0FBQSxDQUFBO0VBRXpPLE1BQUEsSUFBSXlGLFNBQVMsQ0FBQ2xQLE1BQU0sSUFBSSxDQUFDLEVBQUU7RUFDekJzVixRQUFBQSxNQUFNLEdBQUdBLE1BQU0sQ0FBQ2pWLE1BQU0sQ0FDbkIsQ0FBQSwyQkFBQSxFQUE2Qm9KLElBQUssQ0FBQSxFQUFBLEVBQUl5RixTQUFTLENBQUMsQ0FBQyxDQUFFLFNBQVEsRUFDM0QsQ0FBQSxhQUFBLEVBQWVtRyxLQUFNLENBQUEsRUFBQSxFQUFJbkcsU0FBUyxDQUFDLENBQUMsQ0FBRSxTQUFRLEVBQzlDLENBQUEsMkJBQUEsRUFBNkJ6RixJQUFLLENBQUEsRUFBQSxFQUFJeUYsU0FBUyxDQUFDLENBQUMsQ0FBRSxTQUN0RCxDQUFDLENBQUE7RUFDSCxPQUFBO1FBQ0EsT0FBTztFQUNMb0csUUFBQUEsTUFBTSxFQUFHQSxNQUFNO0VBQ2ZDLFFBQUFBLFNBQVMsRUFBSWQsYUFBQUE7U0FDZCxDQUFBO09BQ0YsTUFDSSxJQUFJSSxXQUFXLEVBQUU7RUFDcEI7O0VBRUE7RUFDQSxNQUFBLE9BQU9BLFdBQVcsQ0FBQzdVLE1BQU0sR0FBRyxDQUFDLEVBQUU7RUFDN0I2VSxRQUFBQSxXQUFXLENBQUM1VSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7RUFDdEIsT0FBQTtRQUVBLE9BQU87VUFDTHFWLE1BQU0sRUFBRyxDQUE2QjdMLDJCQUFBQSxFQUFBQSxJQUFLLENBQUk4SyxFQUFBQSxFQUFBQSxNQUFPLENBQXNCOUssb0JBQUFBLEVBQUFBLElBQUssQ0FBSSxFQUFBLEVBQUEsSUFBSSxDQUFDeUosbUJBQW1CLENBQUN5QixRQUFRLENBQUUsQ0FBQSxrQ0FBQSxFQUFvQ2xMLElBQUssQ0FBQSxJQUFBLEVBQU1vTCxXQUFXLENBQUMsQ0FBQyxDQUFFLENBQXNCcEwsb0JBQUFBLEVBQUFBLElBQUssQ0FBZW9MLGFBQUFBLEVBQUFBLFdBQVcsQ0FBQyxDQUFDLENBQUUsQ0FBQSxrQ0FBQSxFQUFvQ3BMLElBQUssQ0FBQSxFQUFBLEVBQUlvTCxXQUFXLENBQUMsQ0FBQyxDQUFFLENBQUVBLEVBQUFBLFdBQVcsQ0FBQyxDQUFDLENBQUUsQ0FBQSxFQUFFQSxXQUFXLENBQUMsQ0FBQyxDQUFFLENBQXNCcEwsb0JBQUFBLEVBQUFBLElBQUssQ0FBU29MLE9BQUFBLEVBQUFBLFdBQVcsQ0FBQyxDQUFDLENBQUUsQ0FBQSxrQ0FBQSxFQUFvQ3BMLElBQUssQ0FBQSxFQUFBLEVBQUlvTCxXQUFXLENBQUMsQ0FBQyxDQUFFLENBQVMsUUFBQSxDQUFBO0VBQ3JjVSxRQUFBQSxTQUFTLEVBQUVkLGFBQUFBO1NBQ1osQ0FBQTtFQUNILEtBQUE7RUFFQSxJQUFBLE9BQU8sS0FBSyxDQUFBO0VBQ2QsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0lBQ0V2QixtQkFBbUJBLENBQUNrQixjQUFjLEVBQUU7TUFDbEMsSUFBSW9CLFNBQVMsR0FBRyxFQUFFLENBQUE7RUFDbEIsSUFBQSxJQUFJQyxLQUFLLEdBQUcsRUFBRSxDQUFDO01BQ2YsSUFBSUMsTUFBTSxHQUFHLENBQUMsQ0FBQTtNQUNkLElBQUlsRyxNQUFNLEdBQUc0RSxjQUFjLENBQUE7TUFHM0J0VCxLQUFLLEVBQUUsT0FBTzBPLE1BQU0sRUFBRTtFQUNwQjtFQUNBLE1BQUEsS0FBSyxJQUFJRixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsRUFBRTtFQUN2RCxRQUFBLElBQUl5RixHQUFHLEdBQUduRyxhQUFhLENBQUNVLElBQUksQ0FBQyxDQUFDbkMsTUFBTSxDQUFDekwsSUFBSSxDQUFDOE4sTUFBTSxDQUFDLENBQUE7RUFDakQsUUFBQSxJQUFJdUYsR0FBRyxFQUFFO1lBQ1B2RixNQUFNLEdBQUdBLE1BQU0sQ0FBQ2dGLE1BQU0sQ0FBQ08sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDL1UsTUFBTSxDQUFDLENBQUE7RUFDckMwVixVQUFBQSxNQUFNLElBQUlYLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQy9VLE1BQU0sQ0FBQTtFQUN2QndWLFVBQUFBLFNBQVMsSUFBSTVHLGFBQWEsQ0FBQ1UsSUFBSSxDQUFDLENBQUNsQyxXQUFBQTtFQUMvQjtFQUFBLFdBQ0NqRCxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM0SSxHQUFHLEVBQUVDLEVBQUUsS0FBS3RELFVBQVUsQ0FBQ3FGLEdBQUcsQ0FBQy9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUMxRCxVQUFBLFNBQVNsUyxLQUFLLENBQUE7RUFDaEIsU0FBQTtFQUNGLE9BQUE7O0VBRUE7UUFDQSxJQUFJNlUsYUFBYSxHQUFHbkcsTUFBTSxDQUFDdFAsS0FBSyxDQUFDME8sYUFBYSxDQUFDSSxRQUFRLENBQUM3QixNQUFNLENBQUMsQ0FBQTtRQUMvRCxJQUFJeUksY0FBYyxHQUFHcEcsTUFBTSxDQUFDdFAsS0FBSyxDQUFDME8sYUFBYSxDQUFDSyxTQUFTLENBQUM5QixNQUFNLENBQUMsQ0FBQTtRQUNqRSxJQUFJeUksY0FBYyxJQUFJRCxhQUFhLEVBQUU7VUFDbkMsSUFBSS9OLE1BQU0sR0FBRyxJQUFJLENBQUN1TSxnQkFBZ0IsQ0FBQzNFLE1BQU0sRUFBRW9HLGNBQWMsQ0FBQyxDQUFBO0VBQzFELFFBQUEsSUFBSWhPLE1BQU0sRUFBRTtFQUNWNE4sVUFBQUEsU0FBUyxHQUFJLENBQUVBLEVBQUFBLFNBQVUsR0FBRTVOLE1BQU0sQ0FBQzBOLE1BQU8sQ0FBQyxDQUFBLENBQUE7WUFDMUM5RixNQUFNLEdBQUdBLE1BQU0sQ0FBQ2dGLE1BQU0sQ0FBQzVNLE1BQU0sQ0FBQzJOLFNBQVMsQ0FBQyxDQUFBO1lBQ3hDRyxNQUFNLElBQUk5TixNQUFNLENBQUMyTixTQUFTLENBQUE7RUFDMUIsVUFBQSxTQUFTelUsS0FBSyxDQUFBO0VBQ2hCLFNBQUE7RUFDRixPQUFBOztFQUVBO0VBQ0EsTUFBQSxJQUFJaVUsR0FBRyxHQUFHLGNBQWMsQ0FBQ3JULElBQUksQ0FBQzhOLE1BQU0sQ0FBQyxDQUFBO0VBQ3JDLE1BQUEsSUFBSXVGLEdBQUcsRUFBRTtFQUNQLFFBQUEsSUFBSWMsVUFBVSxHQUFHZCxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMvVSxNQUFNLENBQUE7RUFDOUIsUUFBQSxNQUFNOFYsV0FBVyxHQUFHZixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7VUFDMUIsTUFBTWdCLGdCQUFnQixHQUFHaEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztVQUVuQ3ZGLE1BQU0sR0FBR0EsTUFBTSxDQUFDZ0YsTUFBTSxDQUFDTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMvVSxNQUFNLENBQUMsQ0FBQTs7RUFFckM7O0VBRUEsUUFBQSxNQUFNZ1csU0FBUyxHQUFJTixNQUFNLEdBQUcsQ0FBQyxHQUFJdEIsY0FBYyxDQUFDSSxNQUFNLENBQUMsQ0FBQyxFQUFFa0IsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDO0VBQ3hFLFFBQUEsTUFBTU8sU0FBUyxHQUFJUCxNQUFNLEdBQUdYLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQy9VLE1BQU0sR0FBR29VLGNBQWMsQ0FBQ3BVLE1BQU0sR0FBSXdQLE1BQU0sR0FBRyxHQUFHLENBQUE7RUFFakYsUUFBQSxNQUFNMEcsa0JBQWtCLEdBQUdELFNBQVMsQ0FBQy9WLEtBQUssQ0FBQzZNLGtCQUFrQixDQUFDLENBQUE7RUFDOUQsUUFBQSxNQUFNb0osbUJBQW1CLEdBQUdILFNBQVMsQ0FBQzlWLEtBQUssQ0FBQzhNLG1CQUFtQixDQUFDLENBQUE7RUFDaEUsUUFBQSxNQUFNb0osaUJBQWlCLEdBQUdILFNBQVMsQ0FBQy9WLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtFQUNoRCxRQUFBLE1BQU1tVyxrQkFBa0IsR0FBR0wsU0FBUyxDQUFDOVYsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBOztFQUVqRDtFQUNBLFFBQUEsSUFBSW9XLE9BQU8sR0FBRyxDQUFDRixpQkFBaUIsS0FBSyxDQUFDRixrQkFBa0IsSUFBSSxDQUFDLENBQUNHLGtCQUFrQixJQUFJLENBQUMsQ0FBQ0YsbUJBQW1CLENBQUMsQ0FBQTtFQUMxRyxRQUFBLElBQUlJLFFBQVEsR0FBRyxDQUFDRixrQkFBa0IsS0FBSyxDQUFDRixtQkFBbUIsSUFBSSxDQUFDLENBQUNDLGlCQUFpQixJQUFJLENBQUMsQ0FBQ0Ysa0JBQWtCLENBQUMsQ0FBQTs7RUFFM0c7RUFDQSxRQUFBLElBQUlILGdCQUFnQixJQUFJLEdBQUcsSUFBSU8sT0FBTyxJQUFJQyxRQUFRLEVBQUU7RUFDbERELFVBQUFBLE9BQU8sR0FBR0gsbUJBQW1CLENBQUE7RUFDN0JJLFVBQUFBLFFBQVEsR0FBR0wsa0JBQWtCLENBQUE7RUFDL0IsU0FBQTs7RUFFQTtFQUNBLFFBQUEsSUFBSUssUUFBUSxFQUFFO0VBQ1osVUFBQSxJQUFJQyxZQUFZLEdBQUdmLEtBQUssQ0FBQ3pWLE1BQU0sR0FBRyxDQUFDLENBQUE7RUFDbkM7RUFDQSxVQUFBLE9BQU82VixVQUFVLElBQUlXLFlBQVksSUFBSSxDQUFDLEVBQUU7Y0FDdEMsSUFBSWYsS0FBSyxDQUFDZSxZQUFZLENBQUMsQ0FBQ0MsU0FBUyxJQUFJVixnQkFBZ0IsRUFBRTtFQUNyRDs7RUFFQTtFQUNBLGNBQUEsT0FBT1MsWUFBWSxHQUFHZixLQUFLLENBQUN6VixNQUFNLEdBQUcsQ0FBQyxFQUFFO0VBQ3RDLGdCQUFBLE1BQU0wVyxLQUFLLEdBQUdqQixLQUFLLENBQUNrQixHQUFHLEVBQUUsQ0FBQTtrQkFDekJuQixTQUFTLEdBQUksR0FBRWtCLEtBQUssQ0FBQ3BCLE1BQU8sQ0FBRW9CLEVBQUFBLEtBQUssQ0FBQ1osV0FBVyxDQUFDdEIsTUFBTSxDQUFDLENBQUMsRUFBRWtDLEtBQUssQ0FBQ0UsS0FBSyxDQUFFLENBQUEsRUFBRXBCLFNBQVUsQ0FBQyxDQUFBLENBQUE7RUFDdEYsZUFBQTs7RUFFQTtFQUNBLGNBQUEsSUFBSUssVUFBVSxJQUFJLENBQUMsSUFBSUosS0FBSyxDQUFDZSxZQUFZLENBQUMsQ0FBQ0ksS0FBSyxJQUFJLENBQUMsRUFBRTtFQUNyRDtrQkFDQXBCLFNBQVMsR0FBSSxDQUF1Qk8scUJBQUFBLEVBQUFBLGdCQUFpQixDQUFFQSxFQUFBQSxnQkFBaUIsQ0FBa0NQLGdDQUFBQSxFQUFBQSxTQUFVLENBQWdDTyw4QkFBQUEsRUFBQUEsZ0JBQWlCLENBQUVBLEVBQUFBLGdCQUFpQixDQUFRLE9BQUEsQ0FBQSxDQUFBO0VBQ2hNRixnQkFBQUEsVUFBVSxJQUFJLENBQUMsQ0FBQTtFQUNmSixnQkFBQUEsS0FBSyxDQUFDZSxZQUFZLENBQUMsQ0FBQ0ksS0FBSyxJQUFJLENBQUMsQ0FBQTtFQUNoQyxlQUFDLE1BQU07RUFDTDtFQUNBcEIsZ0JBQUFBLFNBQVMsR0FBSSxDQUF1Qk8scUJBQUFBLEVBQUFBLGdCQUFpQiwyQkFBMEJQLFNBQVUsQ0FBQSwwQkFBQSxFQUE0Qk8sZ0JBQWlCLENBQVEsT0FBQSxDQUFBLENBQUE7RUFDOUlGLGdCQUFBQSxVQUFVLElBQUksQ0FBQyxDQUFBO0VBQ2ZKLGdCQUFBQSxLQUFLLENBQUNlLFlBQVksQ0FBQyxDQUFDSSxLQUFLLElBQUksQ0FBQyxDQUFBO0VBQ2hDLGVBQUE7O0VBRUE7Z0JBQ0EsSUFBSW5CLEtBQUssQ0FBQ2UsWUFBWSxDQUFDLENBQUNJLEtBQUssSUFBSSxDQUFDLEVBQUU7RUFDbEMsZ0JBQUEsSUFBSUYsS0FBSyxHQUFHakIsS0FBSyxDQUFDa0IsR0FBRyxFQUFFLENBQUE7RUFDdkJuQixnQkFBQUEsU0FBUyxHQUFJLENBQUVrQixFQUFBQSxLQUFLLENBQUNwQixNQUFPLENBQUEsRUFBRUUsU0FBVSxDQUFDLENBQUEsQ0FBQTtFQUN6Q2dCLGdCQUFBQSxZQUFZLEVBQUUsQ0FBQTtFQUNoQixlQUFBO0VBRUYsYUFBQyxNQUFNO0VBQ0w7RUFDQTtFQUNBQSxjQUFBQSxZQUFZLEVBQUUsQ0FBQTtFQUNoQixhQUFBO0VBQ0YsV0FBQTtFQUNGLFNBQUE7RUFDQTtVQUNBLElBQUlYLFVBQVUsSUFBSVMsT0FBTyxFQUFFO1lBQ3pCYixLQUFLLENBQUN4VixJQUFJLENBQUM7RUFDVHdXLFlBQUFBLFNBQVMsRUFBRVYsZ0JBQWdCO0VBQzNCRCxZQUFBQSxXQUFXLEVBQUVBLFdBQVc7RUFDeEJjLFlBQUFBLEtBQUssRUFBRWYsVUFBVTtFQUNqQlAsWUFBQUEsTUFBTSxFQUFFRSxTQUFBQTtFQUNWLFdBQUMsQ0FBQyxDQUFBO1lBQ0ZBLFNBQVMsR0FBRyxFQUFFLENBQUM7RUFDZkssVUFBQUEsVUFBVSxHQUFHLENBQUMsQ0FBQTtFQUNoQixTQUFBOztFQUVBO0VBQ0EsUUFBQSxJQUFJQSxVQUFVLEVBQUU7RUFDZEwsVUFBQUEsU0FBUyxHQUFJLENBQUEsRUFBRUEsU0FBVSxDQUFBLEVBQUVNLFdBQVcsQ0FBQ3RCLE1BQU0sQ0FBQyxDQUFDLEVBQUNxQixVQUFVLENBQUUsQ0FBQyxDQUFBLENBQUE7RUFDL0QsU0FBQTtFQUVBSCxRQUFBQSxNQUFNLElBQUlYLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQy9VLE1BQU0sQ0FBQTtFQUN2QixRQUFBLFNBQVNjLEtBQUssQ0FBQTtFQUNoQixPQUFBOztFQUVBO0VBQ0FpVSxNQUFBQSxHQUFHLEdBQUcsS0FBSyxDQUFDclQsSUFBSSxDQUFDOE4sTUFBTSxDQUFDLENBQUE7RUFDeEIsTUFBQSxJQUFJdUYsR0FBRyxFQUFFO1VBQ1AsSUFBSThCLFFBQVEsR0FBRyxLQUFLLENBQUE7RUFDcEIsUUFBQSxJQUFJTCxZQUFZLEdBQUdmLEtBQUssQ0FBQ3pWLE1BQU0sR0FBRyxDQUFDLENBQUE7RUFDbkM7RUFDQSxRQUFBLE9BQU8sQ0FBQzZXLFFBQVEsSUFBSUwsWUFBWSxJQUFJLENBQUMsRUFBRTtZQUNyQyxJQUFJZixLQUFLLENBQUNlLFlBQVksQ0FBQyxDQUFDQyxTQUFTLElBQUksR0FBRyxFQUFFO0VBQ3hDOztFQUVBO0VBQ0EsWUFBQSxPQUFPRCxZQUFZLEdBQUdmLEtBQUssQ0FBQ3pWLE1BQU0sR0FBRyxDQUFDLEVBQUU7RUFDdEMsY0FBQSxNQUFNMFcsS0FBSyxHQUFHakIsS0FBSyxDQUFDa0IsR0FBRyxFQUFFLENBQUE7Z0JBQ3pCbkIsU0FBUyxHQUFJLEdBQUVrQixLQUFLLENBQUNwQixNQUFPLENBQUVvQixFQUFBQSxLQUFLLENBQUNaLFdBQVcsQ0FBQ3RCLE1BQU0sQ0FBQyxDQUFDLEVBQUVrQyxLQUFLLENBQUNFLEtBQUssQ0FBRSxDQUFBLEVBQUVwQixTQUFVLENBQUMsQ0FBQSxDQUFBO0VBQ3RGLGFBQUE7O0VBRUE7Y0FDQUEsU0FBUyxHQUFJLENBQTZEQSwyREFBQUEsRUFBQUEsU0FBVSxDQUFxQyxvQ0FBQSxDQUFBLENBQUE7RUFDekgsWUFBQSxJQUFJa0IsS0FBSyxHQUFHakIsS0FBSyxDQUFDa0IsR0FBRyxFQUFFLENBQUE7RUFDdkJuQixZQUFBQSxTQUFTLEdBQUksQ0FBRWtCLEVBQUFBLEtBQUssQ0FBQ3BCLE1BQU8sQ0FBQSxFQUFFRSxTQUFVLENBQUMsQ0FBQSxDQUFBO0VBQ3pDcUIsWUFBQUEsUUFBUSxHQUFHLElBQUksQ0FBQTtFQUNqQixXQUFDLE1BQU07RUFDTDtFQUNBO0VBQ0FMLFlBQUFBLFlBQVksRUFBRSxDQUFBO0VBQ2hCLFdBQUE7RUFDRixTQUFBOztFQUVBO1VBQ0EsSUFBSSxDQUFDSyxRQUFRLEVBQUU7WUFDYnBCLEtBQUssQ0FBQ3hWLElBQUksQ0FBQztFQUNUd1csWUFBQUEsU0FBUyxFQUFFLEdBQUc7RUFDZFgsWUFBQUEsV0FBVyxFQUFFLElBQUk7RUFDakJjLFlBQUFBLEtBQUssRUFBRSxDQUFDO0VBQ1J0QixZQUFBQSxNQUFNLEVBQUVFLFNBQUFBO0VBQ1YsV0FBQyxDQUFDLENBQUE7WUFDRkEsU0FBUyxHQUFHLEVBQUUsQ0FBQztFQUNqQixTQUFBOztFQUVBRSxRQUFBQSxNQUFNLElBQUlYLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQy9VLE1BQU0sQ0FBQTtVQUN2QndQLE1BQU0sR0FBR0EsTUFBTSxDQUFDZ0YsTUFBTSxDQUFDTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMvVSxNQUFNLENBQUMsQ0FBQTtFQUNyQyxRQUFBLFNBQVNjLEtBQUssQ0FBQTtFQUNoQixPQUFBOztFQUdBO1FBQ0FpVSxHQUFHLEdBQUduRyxhQUFhLENBQUNPLE9BQU8sQ0FBQ2hDLE1BQU0sQ0FBQ3pMLElBQUksQ0FBQzhOLE1BQU0sQ0FBQyxDQUFBO0VBQy9DLE1BQUEsSUFBSXVGLEdBQUcsRUFBRTtVQUNQdkYsTUFBTSxHQUFHQSxNQUFNLENBQUNnRixNQUFNLENBQUNPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQy9VLE1BQU0sQ0FBQyxDQUFBO0VBQ3JDMFYsUUFBQUEsTUFBTSxJQUFJWCxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMvVSxNQUFNLENBQUE7VUFDdkJ3VixTQUFTLElBQUk1RyxhQUFhLENBQUNPLE9BQU8sQ0FBQy9CLFdBQVcsQ0FDM0NqRCxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM0SSxHQUFHLEVBQUVDLEVBQUUsS0FBS3RELFVBQVUsQ0FBQ3FGLEdBQUcsQ0FBQy9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUMxRCxRQUFBLFNBQVNsUyxLQUFLLENBQUE7RUFDaEIsT0FBQTtFQUNBLE1BQUEsTUFBTSxnQkFBZ0IsQ0FBQTtFQUN4QixLQUFBOztFQUVBO01BQ0EsT0FBTzJVLEtBQUssQ0FBQ3pWLE1BQU0sRUFBRTtFQUNuQixNQUFBLE1BQU0wVyxLQUFLLEdBQUdqQixLQUFLLENBQUNrQixHQUFHLEVBQUUsQ0FBQTtRQUN6Qm5CLFNBQVMsR0FBSSxHQUFFa0IsS0FBSyxDQUFDcEIsTUFBTyxDQUFFb0IsRUFBQUEsS0FBSyxDQUFDWixXQUFXLENBQUN0QixNQUFNLENBQUMsQ0FBQyxFQUFFa0MsS0FBSyxDQUFDRSxLQUFLLENBQUUsQ0FBQSxFQUFFcEIsU0FBVSxDQUFDLENBQUEsQ0FBQTtFQUN0RixLQUFBO0VBRUEsSUFBQSxPQUFPQSxTQUFTLENBQUE7RUFDbEIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDRXZCLEVBQUFBLGNBQWNBLEdBQUc7TUFDZixJQUFJLENBQUNwRCxTQUFTLEdBQUcsSUFBSXlCLEtBQUssQ0FBQyxJQUFJLENBQUMvQixLQUFLLENBQUN2USxNQUFNLENBQUMsQ0FBQTtFQUM3QyxJQUFBLEtBQUssSUFBSUQsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHLElBQUksQ0FBQzhRLFNBQVMsQ0FBQzdRLE1BQU0sRUFBRUQsQ0FBQyxFQUFFLEVBQUU7RUFDOUMsTUFBQSxJQUFJLENBQUM4USxTQUFTLENBQUM5USxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUE7RUFDM0IsS0FBQTtFQUNGLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDRW1VLEVBQUFBLGtCQUFrQkEsR0FBRztFQUNuQjtFQUNBO0VBQ0E7RUFDQSxJQUFBLElBQUk0QyxTQUFTLEdBQUcsSUFBSSxDQUFDMVksQ0FBQyxDQUFDMlksaUJBQWlCLEdBQUcsSUFBSSxDQUFDeEcsS0FBSyxDQUFDdlEsTUFBTSxDQUFBO0VBQzVELElBQUEsSUFBSThXLFNBQVMsRUFBRTtFQUNiO0VBQ0E7UUFDQSxJQUFJRSxnQkFBZ0IsR0FBRyxDQUFDLENBQUE7UUFDeEIsT0FDSUEsZ0JBQWdCLElBQUksSUFBSSxDQUFDekcsS0FBSyxDQUFDdlEsTUFBTSxJQUNsQ2dYLGdCQUFnQixJQUFJLElBQUksQ0FBQ3hHLFlBQVksQ0FBQ3hRLE1BQU0sSUFDNUMsSUFBSSxDQUFDd1EsWUFBWSxDQUFDd0csZ0JBQWdCLENBQUM7RUFBQyxTQUNwQyxJQUFJLENBQUN6RyxLQUFLLENBQUN5RyxnQkFBZ0IsQ0FBQyxJQUFJLElBQUksQ0FBQ3hHLFlBQVksQ0FBQ3dHLGdCQUFnQixDQUFDLENBQUNDLFdBQVcsRUFDcEY7RUFDQUQsUUFBQUEsZ0JBQWdCLEVBQUUsQ0FBQTtFQUNwQixPQUFBOztFQUVBO1FBQ0EsSUFBSUUsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ3hCLE9BQ0ksQ0FBQ0EsZUFBZSxHQUFHLElBQUksQ0FBQzNHLEtBQUssQ0FBQ3ZRLE1BQU0sSUFDakMsQ0FBQ2tYLGVBQWUsR0FBRyxJQUFJLENBQUMxRyxZQUFZLENBQUN4USxNQUFNLElBQzNDLElBQUksQ0FBQ3VRLEtBQUssQ0FBQyxJQUFJLENBQUNBLEtBQUssQ0FBQ3ZRLE1BQU0sR0FBR2tYLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQzFHLFlBQVksQ0FBQyxJQUFJLENBQUNBLFlBQVksQ0FBQ3hRLE1BQU0sR0FBR2tYLGVBQWUsQ0FBQyxDQUFDRCxXQUFXLEVBQ2pJO0VBQ0FDLFFBQUFBLGVBQWUsRUFBRSxDQUFBO0VBQ25CLE9BQUE7RUFFQSxNQUFBLElBQUlDLGFBQWEsR0FBRyxJQUFJLENBQUM1RyxLQUFLLENBQUN2USxNQUFNLEdBQUdrWCxlQUFlLEdBQUcsQ0FBQyxHQUFHRixnQkFBZ0IsQ0FBQTtRQUM5RSxJQUFJRyxhQUFhLEdBQUcsQ0FBQ0wsU0FBUyxFQUFFSyxhQUFhLEdBQUcsQ0FBQ0wsU0FBUyxDQUFBO0VBQzFELE1BQUEsSUFBSUssYUFBYSxHQUFHLENBQUMsRUFBRUEsYUFBYSxHQUFHLENBQUMsQ0FBQTtRQUV4QyxJQUFJQyxVQUFVLEdBQUcsRUFBRSxDQUFBO0VBQ25CLE1BQUEsS0FBSyxJQUFJdkUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHc0UsYUFBYSxHQUFHTCxTQUFTLEVBQUVqRSxDQUFDLEVBQUUsRUFBRTtFQUNsRHVFLFFBQUFBLFVBQVUsQ0FBQ25YLElBQUksQ0FBQyxJQUFJLENBQUN1USxZQUFZLENBQUN3RyxnQkFBZ0IsR0FBR25FLENBQUMsQ0FBQyxDQUFDb0UsV0FBVyxDQUFDLENBQUE7RUFDdEUsT0FBQTtRQUNBLElBQUksQ0FBQ0ksV0FBVyxDQUFDTCxnQkFBZ0IsRUFBRUcsYUFBYSxFQUFFQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUE7RUFFdEUsS0FBQyxNQUFNO0VBQ0w7RUFDQSxNQUFBLEtBQUssSUFBSUUsSUFBSSxHQUFHLENBQUMsRUFBRUEsSUFBSSxHQUFHLElBQUksQ0FBQzlHLFlBQVksQ0FBQ3hRLE1BQU0sRUFBRXNYLElBQUksRUFBRSxFQUFFO0VBQzFELFFBQUEsSUFBSWxaLENBQUMsR0FBRyxJQUFJLENBQUNvUyxZQUFZLENBQUM4RyxJQUFJLENBQUMsQ0FBQTtFQUMvQixRQUFBLElBQUlDLEVBQUUsR0FBR25aLENBQUMsQ0FBQzZZLFdBQVcsQ0FBQTtVQUN0QixJQUFJLElBQUksQ0FBQzFHLEtBQUssQ0FBQytHLElBQUksQ0FBQyxLQUFLQyxFQUFFLEVBQUU7RUFDM0I7RUFDQSxVQUFBLElBQUksQ0FBQ2hILEtBQUssQ0FBQytHLElBQUksQ0FBQyxHQUFHQyxFQUFFLENBQUE7RUFDckIsVUFBQSxJQUFJLENBQUMxRyxTQUFTLENBQUN5RyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUE7RUFDN0IsU0FBQTtFQUNGLE9BQUE7RUFDRixLQUFBO0VBQ0YsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtJQUNFRSxtQkFBbUJBLENBQUNDLEdBQUcsRUFBRTtNQUN2QixJQUFJLENBQUNBLEdBQUcsRUFBRSxPQUFBOztFQUVWO01BQ0EsSUFBSSxDQUFDdkQsa0JBQWtCLEVBQUUsQ0FBQTtNQUV6QixJQUFJd0QsZUFBZSxHQUFHLEtBQUssQ0FBQTtFQUMzQjs7RUFFQSxJQUFBLElBQUlDLFNBQVMsR0FBR0YsR0FBRyxDQUFDRyxHQUFHLEdBQUcsQ0FBQyxHQUFHSCxHQUFHLENBQUNJLEdBQUcsR0FBR0osR0FBRyxDQUFDSSxHQUFHLEdBQUcsQ0FBQyxDQUFBO0VBQ25ELElBQUEsUUFBUSxJQUFJLENBQUNwSCxTQUFTLENBQUNrSCxTQUFTLENBQUM7RUFDL0IsTUFBQSxLQUFLLE1BQU07RUFBRUQsUUFBQUEsZUFBZSxHQUFHLE1BQU0sQ0FBQTtFQUFFLFFBQUEsTUFBQTtFQUN2QyxNQUFBLEtBQUssTUFBTTtFQUFFQSxRQUFBQSxlQUFlLEdBQUcsTUFBTSxDQUFBO0VBQUUsUUFBQSxNQUFBO0VBQ3ZDLE1BQUEsS0FBSyxnQkFBZ0I7RUFBRUEsUUFBQUEsZUFBZSxHQUFHLGdCQUFnQixDQUFBO0VBQUUsUUFBQSxNQUFBO0VBQzdELEtBQUE7TUFFQSxJQUFJbkgsS0FBSyxHQUFHLElBQUksQ0FBQ0EsS0FBSyxDQUFDa0gsR0FBRyxDQUFDSSxHQUFHLENBQUMsQ0FBQzFOLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUN2SyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtFQUM5RSxJQUFBLElBQUkyUSxLQUFLLENBQUN2USxNQUFNLElBQUksQ0FBQyxFQUFFO0VBQ3JCO1FBQ0EsSUFBSSxDQUFDdVMsZ0JBQWdCLEVBQUUsQ0FBQTtFQUN2QixNQUFBLE9BQUE7RUFDRixLQUFBO0VBQ0EsSUFBQSxJQUFJLENBQUM4RSxXQUFXLENBQUNJLEdBQUcsQ0FBQ0ksR0FBRyxFQUFFLENBQUMsRUFBRXRILEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtNQUN6Q2tILEdBQUcsQ0FBQ0ksR0FBRyxFQUFFLENBQUE7TUFDVEosR0FBRyxDQUFDRyxHQUFHLEdBQUcsQ0FBQyxDQUFBO0VBRVgsSUFBQSxJQUFJRixlQUFlLEVBQUU7RUFDbkI7UUFDQSxJQUFJNUUsT0FBTyxHQUFHN0YsV0FBVyxDQUFDeUssZUFBZSxDQUFDLENBQUN2SyxNQUFNLENBQUN6TCxJQUFJLENBQUMsSUFBSSxDQUFDNk8sS0FBSyxDQUFDa0gsR0FBRyxDQUFDSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtFQUMvRSxNQUFBLElBQUkvRSxPQUFPLEVBQUU7RUFDWDtFQUNBLFFBQUEsSUFBSUEsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO0VBQ2Q7O0VBRUE7WUFDQSxJQUFJNEUsZUFBZSxJQUFJLE1BQU0sRUFBRTtFQUM3QjVFLFlBQUFBLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBR0EsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDM0ksT0FBTyxDQUFDLFNBQVMsRUFBR3ZDLE1BQU0sSUFBSztnQkFBRSxPQUFPa1EsUUFBUSxDQUFDbFEsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0VBQUEsYUFBQyxDQUFDLENBQUE7RUFDM0YsV0FBQTtZQUNBLElBQUksQ0FBQzJJLEtBQUssQ0FBQ2tILEdBQUcsQ0FBQ0ksR0FBRyxDQUFDLEdBQUksQ0FBQSxFQUFFL0UsT0FBTyxDQUFDLENBQUMsQ0FBRSxDQUFBLEVBQUUsSUFBSSxDQUFDdkMsS0FBSyxDQUFDa0gsR0FBRyxDQUFDSSxHQUFHLENBQUUsQ0FBQyxDQUFBLENBQUE7WUFDM0QsSUFBSSxDQUFDaEgsU0FBUyxDQUFDNEcsR0FBRyxDQUFDSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUE7WUFDOUJKLEdBQUcsQ0FBQ0csR0FBRyxHQUFHOUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDOVMsTUFBTSxDQUFBO0VBQzdCLFNBQUMsTUFBTTtFQUNMO1lBQ0EsSUFBSSxDQUFDdVEsS0FBSyxDQUFDa0gsR0FBRyxDQUFDSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFBO1lBQzVCLElBQUksQ0FBQ2hILFNBQVMsQ0FBQzRHLEdBQUcsQ0FBQ0ksR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQTtFQUNwQyxTQUFBO0VBQ0YsT0FBQTtFQUNGLEtBQUE7TUFDQSxJQUFJLENBQUN0RixnQkFBZ0IsRUFBRSxDQUFBO0VBQ3pCLEdBQUE7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7RUFFQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRXdGLEVBQUFBLFlBQVlBLEdBQW9CO0VBQUEsSUFBQSxJQUFuQkMsU0FBUyxHQUFBdlYsU0FBQSxDQUFBekMsTUFBQSxHQUFBLENBQUEsSUFBQXlDLFNBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQTVCLFNBQUEsR0FBQTRCLFNBQUEsQ0FBQSxDQUFBLENBQUEsR0FBRyxLQUFLLENBQUE7RUFDNUIsSUFBQSxNQUFNd08sU0FBUyxHQUFHNVAsTUFBTSxDQUFDMFcsWUFBWSxFQUFFLENBQUE7TUFDdkMsSUFBSUUsU0FBUyxHQUFJRCxTQUFTLEdBQUcvRyxTQUFTLENBQUNpSCxVQUFVLEdBQUdqSCxTQUFTLENBQUNrSCxTQUFVLENBQUE7RUFDeEUsSUFBQSxJQUFJLENBQUNGLFNBQVMsRUFBRSxPQUFPLElBQUksQ0FBQTtNQUMzQixJQUFJdkMsTUFBTSxHQUFHdUMsU0FBUyxDQUFDRyxRQUFRLEtBQUtDLElBQUksQ0FBQ0MsU0FBUyxHQUFJTixTQUFTLEdBQUcvRyxTQUFTLENBQUNzSCxZQUFZLEdBQUd0SCxTQUFTLENBQUN1SCxXQUFXLEdBQUksQ0FBQyxDQUFBO0VBRXJILElBQUEsSUFBSVAsU0FBUyxJQUFJLElBQUksQ0FBQzdaLENBQUMsRUFBRTtRQUN2QixPQUFPO0VBQUN5WixRQUFBQSxHQUFHLEVBQUUsQ0FBQztFQUFFRCxRQUFBQSxHQUFHLEVBQUVsQyxNQUFBQTtTQUFPLENBQUE7RUFDOUIsS0FBQTtNQUVBLElBQUlrQyxHQUFHLEdBQUcsSUFBSSxDQUFDYSxhQUFhLENBQUNSLFNBQVMsRUFBRXZDLE1BQU0sQ0FBQyxDQUFBO0VBQy9DLElBQUEsSUFBSWtDLEdBQUcsS0FBSyxJQUFJLEVBQUUsT0FBTyxJQUFJLENBQUM7O0VBRTlCO01BQ0EsSUFBSWMsSUFBSSxHQUFHVCxTQUFTLENBQUE7RUFDcEIsSUFBQSxPQUFPUyxJQUFJLENBQUN4WixhQUFhLElBQUksSUFBSSxDQUFDZCxDQUFDLEVBQUU7UUFDbkNzYSxJQUFJLEdBQUdBLElBQUksQ0FBQ3haLGFBQWEsQ0FBQTtFQUMzQixLQUFBO01BRUEsSUFBSTJZLEdBQUcsR0FBRyxDQUFDLENBQUE7RUFDWDtFQUNBO0VBQ0EsSUFBQSxJQUFJYSxJQUFJLENBQUNyRixPQUFPLElBQUlxRixJQUFJLENBQUNyRixPQUFPLENBQUNqQixPQUFPLEtBQUssQ0FBQ3NHLElBQUksQ0FBQ0MsZUFBZSxJQUFJRCxJQUFJLENBQUNDLGVBQWUsQ0FBQ3RGLE9BQU8sQ0FBQ2pCLE9BQU8sSUFBSXNHLElBQUksQ0FBQ3JGLE9BQU8sQ0FBQ2pCLE9BQU8sQ0FBRSxFQUFFO1FBQ3BJeUYsR0FBRyxHQUFHQyxRQUFRLENBQUNZLElBQUksQ0FBQ3JGLE9BQU8sQ0FBQ2pCLE9BQU8sQ0FBQyxDQUFBO0VBQ3RDLEtBQUMsTUFBTTtRQUNMLE9BQU9zRyxJQUFJLENBQUNDLGVBQWUsRUFBRTtFQUMzQmQsUUFBQUEsR0FBRyxFQUFFLENBQUE7VUFDTGEsSUFBSSxHQUFHQSxJQUFJLENBQUNDLGVBQWUsQ0FBQTtFQUM3QixPQUFBO0VBQ0YsS0FBQTtNQUNBLE9BQU87RUFBQ2QsTUFBQUEsR0FBRyxFQUFFQSxHQUFHO0VBQUVELE1BQUFBLEdBQUcsRUFBRUEsR0FBRztFQUFFYyxNQUFBQSxJQUFJLEVBQUVULFNBQUFBO09BQVUsQ0FBQTtFQUM5QyxHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFUSxFQUFBQSxhQUFhQSxDQUFDUixTQUFTLEVBQUV2QyxNQUFNLEVBQUU7TUFDL0IsSUFBSWdELElBQUksR0FBR1QsU0FBUyxDQUFBO01BQ3BCLElBQUlMLEdBQUcsR0FBR2xDLE1BQU0sQ0FBQTtFQUNoQjtNQUNBLE9BQU9nRCxJQUFJLElBQUlBLElBQUksQ0FBQ3ZILFVBQVUsSUFBSSxJQUFJLENBQUMvUyxDQUFDLEVBQUU7UUFDeENzYSxJQUFJLEdBQUdBLElBQUksQ0FBQ3ZILFVBQVUsQ0FBQTtFQUN4QixLQUFBO0VBQ0EsSUFBQSxJQUFJdUgsSUFBSSxJQUFJLElBQUksRUFBRSxPQUFPLElBQUksQ0FBQTtFQUU3QkEsSUFBQUEsSUFBSSxHQUFHVCxTQUFTLENBQUE7RUFDaEIsSUFBQSxPQUFPUyxJQUFJLENBQUN2SCxVQUFVLElBQUksSUFBSSxDQUFDL1MsQ0FBQyxFQUFFO1FBQ2hDLElBQUlzYSxJQUFJLENBQUNDLGVBQWUsRUFBRTtVQUN4QkQsSUFBSSxHQUFHQSxJQUFJLENBQUNDLGVBQWUsQ0FBQTtFQUMzQmYsUUFBQUEsR0FBRyxJQUFJYyxJQUFJLENBQUN6QixXQUFXLENBQUNqWCxNQUFNLENBQUE7RUFDaEMsT0FBQyxNQUFNO1VBQ0wwWSxJQUFJLEdBQUdBLElBQUksQ0FBQ3ZILFVBQVUsQ0FBQTtFQUN4QixPQUFBO0VBQ0YsS0FBQTtFQUNBLElBQUEsT0FBT3lHLEdBQUcsQ0FBQTtFQUNaLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0VnQixFQUFBQSxvQkFBb0JBLENBQUNmLEdBQUcsRUFBRUQsR0FBRyxFQUFxQjtFQUFBLElBQUEsSUFBbkJpQixTQUFTLEdBQUFwVyxTQUFBLENBQUF6QyxNQUFBLEdBQUEsQ0FBQSxJQUFBeUMsU0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBNUIsU0FBQSxHQUFBNEIsU0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFHLEtBQUssQ0FBQTtFQUM5QyxJQUFBLElBQUlvVixHQUFHLElBQUksSUFBSSxDQUFDckgsWUFBWSxDQUFDeFEsTUFBTSxFQUFFO0VBQ25DO0VBQ0E2WCxNQUFBQSxHQUFHLEdBQUcsSUFBSSxDQUFDckgsWUFBWSxDQUFDeFEsTUFBTSxHQUFHLENBQUMsQ0FBQTtRQUNsQzRYLEdBQUcsR0FBRyxJQUFJLENBQUNySCxLQUFLLENBQUNzSCxHQUFHLENBQUMsQ0FBQzdYLE1BQU0sQ0FBQTtFQUM5QixLQUFBO01BQ0EsSUFBSTRYLEdBQUcsR0FBRyxJQUFJLENBQUNySCxLQUFLLENBQUNzSCxHQUFHLENBQUMsQ0FBQzdYLE1BQU0sRUFBRTtRQUNoQzRYLEdBQUcsR0FBRyxJQUFJLENBQUNySCxLQUFLLENBQUNzSCxHQUFHLENBQUMsQ0FBQzdYLE1BQU0sQ0FBQTtFQUM5QixLQUFBO0VBQ0EsSUFBQSxNQUFNbVIsVUFBVSxHQUFHLElBQUksQ0FBQ1gsWUFBWSxDQUFDcUgsR0FBRyxDQUFDLENBQUE7RUFDekMsSUFBQSxJQUFJYSxJQUFJLEdBQUd2SCxVQUFVLENBQUNlLFVBQVUsQ0FBQTtNQUVoQyxJQUFJNEcsZ0JBQWdCLEdBQUcsS0FBSyxDQUFBO0VBQzVCO0VBQ0EsSUFBQSxJQUFJQyxFQUFFLEdBQUc7UUFBQ0wsSUFBSSxFQUFFdkgsVUFBVSxDQUFDZSxVQUFVLEdBQUdmLFVBQVUsQ0FBQ2UsVUFBVSxHQUFHZixVQUFVO0VBQUV1RSxNQUFBQSxNQUFNLEVBQUUsQ0FBQTtPQUFFLENBQUE7TUFFdEYsT0FBT2dELElBQUksSUFBSXZILFVBQVUsRUFBRTtRQUN6QixJQUFJLENBQUMySCxnQkFBZ0IsSUFBSUosSUFBSSxDQUFDTixRQUFRLEtBQUtDLElBQUksQ0FBQ0MsU0FBUyxFQUFFO0VBQ3pELFFBQUEsSUFBSUksSUFBSSxDQUFDTSxTQUFTLENBQUNoWixNQUFNLElBQUk0WCxHQUFHLEVBQUU7WUFDaEMsSUFBSWlCLFNBQVMsSUFBSUgsSUFBSSxDQUFDTSxTQUFTLENBQUNoWixNQUFNLElBQUk0WCxHQUFHLEVBQUU7RUFDN0M7RUFDQTtFQUNBbUIsWUFBQUEsRUFBRSxHQUFHO0VBQUNMLGNBQUFBLElBQUksRUFBRUEsSUFBSTtFQUFFaEQsY0FBQUEsTUFBTSxFQUFFa0MsR0FBQUE7ZUFBSSxDQUFBO0VBQzlCQSxZQUFBQSxHQUFHLEdBQUcsQ0FBQyxDQUFBO0VBRVQsV0FBQyxNQUFNO2NBQ0wsT0FBTztFQUFDYyxjQUFBQSxJQUFJLEVBQUVBLElBQUk7RUFBRWhELGNBQUFBLE1BQU0sRUFBRWtDLEdBQUFBO2VBQUksQ0FBQTtFQUNsQyxXQUFBO0VBQ0YsU0FBQyxNQUFNO0VBQ0xBLFVBQUFBLEdBQUcsSUFBSWMsSUFBSSxDQUFDTSxTQUFTLENBQUNoWixNQUFNLENBQUE7RUFDOUIsU0FBQTtFQUNGLE9BQUE7RUFDQSxNQUFBLElBQUksQ0FBQzhZLGdCQUFnQixJQUFJSixJQUFJLENBQUN4RyxVQUFVLEVBQUU7VUFDeEN3RyxJQUFJLEdBQUdBLElBQUksQ0FBQ3hHLFVBQVUsQ0FBQTtFQUN4QixPQUFDLE1BQU0sSUFBSXdHLElBQUksQ0FBQzlHLFdBQVcsRUFBRTtFQUMzQmtILFFBQUFBLGdCQUFnQixHQUFHLEtBQUssQ0FBQTtVQUN4QkosSUFBSSxHQUFHQSxJQUFJLENBQUM5RyxXQUFXLENBQUE7RUFDekIsT0FBQyxNQUFNO0VBQ0xrSCxRQUFBQSxnQkFBZ0IsR0FBRyxJQUFJLENBQUE7VUFDdkJKLElBQUksR0FBR0EsSUFBSSxDQUFDdkgsVUFBVSxDQUFBO0VBQ3hCLE9BQUE7RUFDRixLQUFBOztFQUVBO0VBQ0E7RUFDQSxJQUFBLE9BQU80SCxFQUFFLENBQUE7RUFDWCxHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0lBQ0VFLFlBQVlBLENBQUNuYixLQUFLLEVBQWlCO0VBQUEsSUFBQSxJQUFmQyxNQUFNLEdBQUEwRSxTQUFBLENBQUF6QyxNQUFBLEdBQUEsQ0FBQSxJQUFBeUMsU0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBNUIsU0FBQSxHQUFBNEIsU0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFHLElBQUksQ0FBQTtNQUMvQixJQUFJLENBQUMzRSxLQUFLLEVBQUUsT0FBQTtFQUVaLElBQUEsSUFBSW9iLEtBQUssR0FBR3ZhLFFBQVEsQ0FBQ3dhLFdBQVcsRUFBRSxDQUFBO01BRWxDLElBQUk7RUFBQ1QsTUFBQUEsSUFBSSxFQUFFUCxTQUFTO0VBQUV6QyxNQUFBQSxNQUFNLEVBQUU4QyxXQUFBQTtFQUFXLEtBQUMsR0FBRyxJQUFJLENBQUNJLG9CQUFvQixDQUFDOWEsS0FBSyxDQUFDK1osR0FBRyxFQUFFL1osS0FBSyxDQUFDOFosR0FBRyxFQUFHN1osTUFBTSxJQUFJQSxNQUFNLENBQUM4WixHQUFHLElBQUkvWixLQUFLLENBQUMrWixHQUFHLElBQUk5WixNQUFNLENBQUM2WixHQUFHLEdBQUc5WixLQUFLLENBQUM4WixHQUFJLENBQUMsQ0FBQztNQUM1SixJQUFJTSxVQUFVLEdBQUcsSUFBSTtFQUFFSyxNQUFBQSxZQUFZLEdBQUcsSUFBSSxDQUFBO0VBQzFDLElBQUEsSUFBSXhhLE1BQU0sS0FBS0EsTUFBTSxDQUFDOFosR0FBRyxJQUFJL1osS0FBSyxDQUFDK1osR0FBRyxJQUFJOVosTUFBTSxDQUFDNlosR0FBRyxJQUFJOVosS0FBSyxDQUFDOFosR0FBRyxDQUFDLEVBQUU7UUFDbEUsSUFBSTtVQUFDYyxJQUFJO0VBQUVoRCxRQUFBQSxNQUFBQTtFQUFNLE9BQUMsR0FBRyxJQUFJLENBQUNrRCxvQkFBb0IsQ0FBQzdhLE1BQU0sQ0FBQzhaLEdBQUcsRUFBRTlaLE1BQU0sQ0FBQzZaLEdBQUcsRUFBRTlaLEtBQUssQ0FBQytaLEdBQUcsSUFBSTlaLE1BQU0sQ0FBQzhaLEdBQUcsSUFBSS9aLEtBQUssQ0FBQzhaLEdBQUcsR0FBRzdaLE1BQU0sQ0FBQzZaLEdBQUcsQ0FBQyxDQUFBO0VBQ3pITSxNQUFBQSxVQUFVLEdBQUdRLElBQUksQ0FBQTtFQUNqQkgsTUFBQUEsWUFBWSxHQUFHN0MsTUFBTSxDQUFBO0VBQ3ZCLEtBQUE7RUFFQSxJQUFBLElBQUl3QyxVQUFVLEVBQUVnQixLQUFLLENBQUNFLFFBQVEsQ0FBQ2xCLFVBQVUsRUFBRUssWUFBWSxDQUFDLENBQUMsS0FDcERXLEtBQUssQ0FBQ0UsUUFBUSxDQUFDakIsU0FBUyxFQUFFSyxXQUFXLENBQUMsQ0FBQTtFQUMzQ1UsSUFBQUEsS0FBSyxDQUFDRyxNQUFNLENBQUNsQixTQUFTLEVBQUVLLFdBQVcsQ0FBQyxDQUFBO0VBRXBDLElBQUEsSUFBSWMsZUFBZSxHQUFHalksTUFBTSxDQUFDMFcsWUFBWSxFQUFFLENBQUE7TUFDM0N1QixlQUFlLENBQUNDLGVBQWUsRUFBRSxDQUFBO0VBQ2pDRCxJQUFBQSxlQUFlLENBQUNFLFFBQVEsQ0FBQ04sS0FBSyxDQUFDLENBQUE7RUFDakMsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7SUFDRXBILGdCQUFnQkEsQ0FBQ3RSLEtBQUssRUFBRTtFQUN0QixJQUFBLElBQUkxQyxLQUFLLEdBQUcsSUFBSSxDQUFDaWEsWUFBWSxFQUFFLENBQUE7RUFFL0IsSUFBQSxJQUFJLENBQUN2WCxLQUFLLENBQUNpWixTQUFTLElBQUksaUJBQWlCLElBQUlqWixLQUFLLENBQUNpWixTQUFTLElBQUksaUJBQWlCLEtBQUszYixLQUFLLEVBQUU7UUFDM0YsSUFBSSxDQUFDbVcsY0FBYyxFQUFFLENBQUE7RUFDckIsTUFBQSxJQUFJLENBQUN1RCxtQkFBbUIsQ0FBQzFaLEtBQUssQ0FBQyxDQUFBO0VBQ2pDLEtBQUMsTUFBTTtFQUNMLE1BQUEsSUFBSSxDQUFDLElBQUksQ0FBQ00sQ0FBQyxDQUFDOFQsVUFBVSxFQUFFO0VBQ3RCLFFBQUEsSUFBSSxDQUFDOVQsQ0FBQyxDQUFDYixTQUFTLEdBQUcscUNBQXFDLENBQUE7RUFDMUQsT0FBQyxNQUNJO0VBQ0gsUUFBQSxLQUFLLElBQUltYyxTQUFTLEdBQUcsSUFBSSxDQUFDdGIsQ0FBQyxDQUFDOFQsVUFBVSxFQUFFd0gsU0FBUyxFQUFFQSxTQUFTLEdBQUdBLFNBQVMsQ0FBQzlILFdBQVcsRUFBRTtZQUNwRixJQUFJOEgsU0FBUyxDQUFDdEIsUUFBUSxJQUFJLENBQUMsSUFBSXNCLFNBQVMsQ0FBQ2hiLE9BQU8sSUFBSSxLQUFLLEVBQUU7RUFDekQ7RUFDQSxZQUFBLElBQUlpYixVQUFVLEdBQUdoYixRQUFRLENBQUNRLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtjQUM5QyxJQUFJLENBQUNmLENBQUMsQ0FBQ3lULFlBQVksQ0FBQzhILFVBQVUsRUFBRUQsU0FBUyxDQUFDLENBQUE7RUFDMUMsWUFBQSxJQUFJLENBQUN0YixDQUFDLENBQUMrVCxXQUFXLENBQUN1SCxTQUFTLENBQUMsQ0FBQTtFQUM3QkMsWUFBQUEsVUFBVSxDQUFDcGEsV0FBVyxDQUFDbWEsU0FBUyxDQUFDLENBQUE7RUFDbkMsV0FBQTtFQUNGLFNBQUE7RUFDRixPQUFBO1FBQ0EsSUFBSSxDQUFDMUYsK0JBQStCLEVBQUUsQ0FBQTtFQUN4QyxLQUFBO0VBQ0EsSUFBQSxJQUFJbFcsS0FBSyxFQUFFLElBQUksQ0FBQ21iLFlBQVksQ0FBQ25iLEtBQUssQ0FBQyxDQUFBO01BQ25DLElBQUksQ0FBQzBVLFVBQVUsRUFBRSxDQUFBO0VBQ25CLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0VULEVBQUFBLDBCQUEwQkEsR0FBRztNQUMzQixJQUFJLENBQUM2SCxhQUFhLEVBQUUsQ0FBQTtFQUN0QixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7SUFDRXZDLFdBQVdBLENBQUN3QyxTQUFTLEVBQW9FO0VBQUEsSUFBQSxJQUFsRTFDLGFBQWEsR0FBQTFVLFNBQUEsQ0FBQXpDLE1BQUEsR0FBQSxDQUFBLElBQUF5QyxTQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUE1QixTQUFBLEdBQUE0QixTQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUcsQ0FBQyxDQUFBO0VBQUEsSUFBQSxJQUFFcVgsYUFBYSxHQUFBclgsU0FBQSxDQUFBekMsTUFBQSxHQUFBLENBQUEsSUFBQXlDLFNBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQTVCLFNBQUEsR0FBQTRCLFNBQUEsQ0FBQSxDQUFBLENBQUEsR0FBRyxFQUFFLENBQUE7RUFBQSxJQUFBLElBQUVzWCxrQkFBa0IsR0FBQXRYLFNBQUEsQ0FBQXpDLE1BQUEsR0FBQSxDQUFBLElBQUF5QyxTQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUE1QixTQUFBLEdBQUE0QixTQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUcsSUFBSSxDQUFBO0VBQ3JGLElBQUEsSUFBSXNYLGtCQUFrQixFQUFFO1FBQ3RCLEtBQUssSUFBSWhhLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR29YLGFBQWEsRUFBRXBYLENBQUMsRUFBRSxFQUFFO0VBQ3RDLFFBQUEsSUFBSSxDQUFDM0IsQ0FBQyxDQUFDK1QsV0FBVyxDQUFDLElBQUksQ0FBQy9ULENBQUMsQ0FBQzZULFVBQVUsQ0FBQzRILFNBQVMsQ0FBQyxDQUFDLENBQUE7RUFDbEQsT0FBQTtFQUNGLEtBQUE7TUFFQSxJQUFJRyxhQUFhLEdBQUcsRUFBRSxDQUFBO01BQ3RCLElBQUlDLGFBQWEsR0FBRyxFQUFFLENBQUE7RUFFdEIsSUFBQSxLQUFLLElBQUlsYSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUcrWixhQUFhLENBQUM5WixNQUFNLEVBQUVELENBQUMsRUFBRSxFQUFFO0VBQzdDaWEsTUFBQUEsYUFBYSxDQUFDL1osSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0VBQ3RCZ2EsTUFBQUEsYUFBYSxDQUFDaGEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0VBQ3hCLE1BQUEsSUFBSThaLGtCQUFrQixFQUFFO1VBQ3RCLElBQUksSUFBSSxDQUFDM2IsQ0FBQyxDQUFDNlQsVUFBVSxDQUFDNEgsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDemIsQ0FBQyxDQUFDeVQsWUFBWSxDQUFDbFQsUUFBUSxDQUFDUSxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUMsSUFBSSxDQUFDZixDQUFDLENBQUM2VCxVQUFVLENBQUM0SCxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQzdHLElBQUksQ0FBQ3piLENBQUMsQ0FBQ21CLFdBQVcsQ0FBQ1osUUFBUSxDQUFDUSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtFQUN4RCxPQUFBO0VBQ0YsS0FBQTtNQUVBLElBQUksQ0FBQ29SLEtBQUssQ0FBQzJKLE1BQU0sQ0FBQ0wsU0FBUyxFQUFFMUMsYUFBYSxFQUFFLEdBQUcyQyxhQUFhLENBQUMsQ0FBQTtNQUM3RCxJQUFJLENBQUNySixTQUFTLENBQUN5SixNQUFNLENBQUNMLFNBQVMsRUFBRTFDLGFBQWEsRUFBRSxHQUFHNkMsYUFBYSxDQUFDLENBQUE7TUFDakUsSUFBSSxDQUFDbkosU0FBUyxDQUFDcUosTUFBTSxDQUFDTCxTQUFTLEVBQUUxQyxhQUFhLEVBQUUsR0FBRzhDLGFBQWEsQ0FBQyxDQUFBO0VBQ25FLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0lBQ0VqSSxXQUFXQSxDQUFDeFIsS0FBSyxFQUFFO01BQ2pCQSxLQUFLLENBQUNDLGNBQWMsRUFBRSxDQUFBOztFQUV0QjtFQUNBLElBQUEsSUFBSTBaLElBQUksR0FBRyxDQUFDM1osS0FBSyxDQUFDNFosYUFBYSxJQUFJNVosS0FBSyxFQUFFNlosYUFBYSxDQUFDQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUE7O0VBRTdFO0VBQ0EsSUFBQSxJQUFJLENBQUN0YyxLQUFLLENBQUNtYyxJQUFJLENBQUMsQ0FBQTtFQUNsQixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0lBQ0VuYyxLQUFLQSxDQUFDbWMsSUFBSSxFQUErQjtFQUFBLElBQUEsSUFBN0JwYyxNQUFNLEdBQUEwRSxTQUFBLENBQUF6QyxNQUFBLEdBQUEsQ0FBQSxJQUFBeUMsU0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBNUIsU0FBQSxHQUFBNEIsU0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFHLElBQUksQ0FBQTtFQUFBLElBQUEsSUFBRTNFLEtBQUssR0FBQTJFLFNBQUEsQ0FBQXpDLE1BQUEsR0FBQSxDQUFBLElBQUF5QyxTQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUE1QixTQUFBLEdBQUE0QixTQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUcsSUFBSSxDQUFBO01BQ3JDLElBQUksQ0FBQzFFLE1BQU0sRUFBRUEsTUFBTSxHQUFHLElBQUksQ0FBQ2dhLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtNQUM3QyxJQUFJLENBQUNqYSxLQUFLLEVBQUVBLEtBQUssR0FBRyxJQUFJLENBQUNpYSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUE7TUFDNUMsSUFBSXdDLFNBQVMsRUFBRTdMLEdBQUcsQ0FBQTtNQUNsQixJQUFJLENBQUM1USxLQUFLLEVBQUU7RUFDVkEsTUFBQUEsS0FBSyxHQUFHO0VBQUUrWixRQUFBQSxHQUFHLEVBQUUsSUFBSSxDQUFDdEgsS0FBSyxDQUFDdlEsTUFBTSxHQUFHLENBQUM7RUFBRTRYLFFBQUFBLEdBQUcsRUFBRSxJQUFJLENBQUNySCxLQUFLLENBQUMsSUFBSSxDQUFDQSxLQUFLLENBQUN2USxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUNBLE1BQUFBO0VBQU8sT0FBQyxDQUFDO0VBQ3hGLEtBQUE7O01BQ0EsSUFBSSxDQUFDakMsTUFBTSxFQUFFO0VBQ1hBLE1BQUFBLE1BQU0sR0FBR0QsS0FBSyxDQUFBO0VBQ2hCLEtBQUE7TUFDQSxJQUFJQyxNQUFNLENBQUM4WixHQUFHLEdBQUcvWixLQUFLLENBQUMrWixHQUFHLElBQUs5WixNQUFNLENBQUM4WixHQUFHLElBQUkvWixLQUFLLENBQUMrWixHQUFHLElBQUk5WixNQUFNLENBQUM2WixHQUFHLElBQUk5WixLQUFLLENBQUM4WixHQUFJLEVBQUU7RUFDbEYyQyxNQUFBQSxTQUFTLEdBQUd4YyxNQUFNLENBQUE7RUFDbEIyUSxNQUFBQSxHQUFHLEdBQUc1USxLQUFLLENBQUE7RUFDYixLQUFDLE1BQ0k7RUFDSHljLE1BQUFBLFNBQVMsR0FBR3pjLEtBQUssQ0FBQTtFQUNqQjRRLE1BQUFBLEdBQUcsR0FBRzNRLE1BQU0sQ0FBQTtFQUNkLEtBQUE7RUFDQSxJQUFBLElBQUl5YyxhQUFhLEdBQUdMLElBQUksQ0FBQ3ZhLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0VBQ2hELElBQUEsSUFBSTZhLFVBQVUsR0FBRyxJQUFJLENBQUNsSyxLQUFLLENBQUNnSyxTQUFTLENBQUMxQyxHQUFHLENBQUMsQ0FBQ3JELE1BQU0sQ0FBQyxDQUFDLEVBQUUrRixTQUFTLENBQUMzQyxHQUFHLENBQUMsQ0FBQTtFQUNuRSxJQUFBLElBQUk4QyxPQUFPLEdBQUcsSUFBSSxDQUFDbkssS0FBSyxDQUFDN0IsR0FBRyxDQUFDbUosR0FBRyxDQUFDLENBQUNyRCxNQUFNLENBQUM5RixHQUFHLENBQUNrSixHQUFHLENBQUMsQ0FBQTtFQUNqRDRDLElBQUFBLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBR0MsVUFBVSxDQUFDcGEsTUFBTSxDQUFDbWEsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7TUFDdEQsSUFBSUcsU0FBUyxHQUFHSCxhQUFhLENBQUNBLGFBQWEsQ0FBQ3hhLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQ0EsTUFBTSxDQUFBO01BQzlEd2EsYUFBYSxDQUFDQSxhQUFhLENBQUN4YSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUd3YSxhQUFhLENBQUNBLGFBQWEsQ0FBQ3hhLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQ0ssTUFBTSxDQUFDcWEsT0FBTyxDQUFDLENBQUE7RUFDakcsSUFBQSxJQUFJLENBQUNyRCxXQUFXLENBQUNrRCxTQUFTLENBQUMxQyxHQUFHLEVBQUUsQ0FBQyxHQUFHbkosR0FBRyxDQUFDbUosR0FBRyxHQUFHMEMsU0FBUyxDQUFDMUMsR0FBRyxFQUFFMkMsYUFBYSxDQUFDLENBQUE7TUFDM0UxYyxLQUFLLENBQUMrWixHQUFHLEdBQUcwQyxTQUFTLENBQUMxQyxHQUFHLEdBQUcyQyxhQUFhLENBQUN4YSxNQUFNLEdBQUcsQ0FBQyxDQUFBO01BQ3BEbEMsS0FBSyxDQUFDOFosR0FBRyxHQUFHK0MsU0FBUyxDQUFBO01BQ3JCLElBQUksQ0FBQ3BJLGdCQUFnQixFQUFFLENBQUE7RUFDdkIsSUFBQSxJQUFJLENBQUMwRyxZQUFZLENBQUNuYixLQUFLLENBQUMsQ0FBQTtNQUN4QixJQUFJLENBQUMwVSxVQUFVLEVBQUUsQ0FBQTtFQUNuQixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNFb0ksRUFBQUEscUJBQXFCQSxDQUFDQyxLQUFLLEVBQUVDLEtBQUssRUFBRTtFQUNsQyxJQUFBLElBQUksQ0FBQ0QsS0FBSyxJQUFJLENBQUNDLEtBQUssRUFBRSxPQUFPLElBQUksQ0FBQTtFQUNqQyxJQUFBLElBQUlELEtBQUssSUFBSUMsS0FBSyxFQUFFLE9BQU9ELEtBQUssQ0FBQTtNQUNoQyxNQUFNRSxRQUFRLEdBQUlyQyxJQUFJLElBQUs7UUFDekIsSUFBSXFDLFFBQVEsR0FBRyxFQUFFLENBQUE7RUFDakIsTUFBQSxPQUFPckMsSUFBSSxFQUFFO0VBQ1hxQyxRQUFBQSxRQUFRLENBQUNDLE9BQU8sQ0FBQ3RDLElBQUksQ0FBQyxDQUFBO1VBQ3RCQSxJQUFJLEdBQUdBLElBQUksQ0FBQ3ZILFVBQVUsQ0FBQTtFQUN4QixPQUFBO0VBQ0EsTUFBQSxPQUFPNEosUUFBUSxDQUFBO09BQ2hCLENBQUE7RUFFRCxJQUFBLE1BQU1FLFNBQVMsR0FBR0YsUUFBUSxDQUFDRixLQUFLLENBQUMsQ0FBQTtFQUNqQyxJQUFBLE1BQU1LLFNBQVMsR0FBR0gsUUFBUSxDQUFDRCxLQUFLLENBQUMsQ0FBQTtNQUVqQyxJQUFJRyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUlDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQTtFQUM3QyxJQUFBLElBQUluYixDQUFDLENBQUE7RUFDTCxJQUFBLEtBQUtBLENBQUMsR0FBRyxDQUFDLEVBQUVrYixTQUFTLENBQUNsYixDQUFDLENBQUMsSUFBSW1iLFNBQVMsQ0FBQ25iLENBQUMsQ0FBQyxFQUFFQSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0VBQzlDLElBQUEsT0FBT2tiLFNBQVMsQ0FBQ2xiLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQTtFQUN2QixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0VvYixFQUFBQSwwQkFBMEJBLENBQUNyZCxLQUFLLEVBQUVDLE1BQU0sRUFBRXFCLFNBQVMsRUFBRTtNQUNuRCxJQUFJc1osSUFBSSxHQUFHLElBQUksQ0FBQTtFQUNmLElBQUEsSUFBSSxDQUFDNWEsS0FBSyxFQUFFLE9BQU8sSUFBSSxDQUFBO01BQ3ZCLElBQUksQ0FBQ0MsTUFBTSxFQUFFO1FBQ1gyYSxJQUFJLEdBQUc1YSxLQUFLLENBQUM0YSxJQUFJLENBQUE7RUFDbkIsS0FBQyxNQUFNO1FBQ0wsSUFBSTVhLEtBQUssQ0FBQytaLEdBQUcsSUFBSTlaLE1BQU0sQ0FBQzhaLEdBQUcsRUFBRSxPQUFPLElBQUksQ0FBQTtFQUN4Q2EsTUFBQUEsSUFBSSxHQUFHLElBQUksQ0FBQ2tDLHFCQUFxQixDQUFDOWMsS0FBSyxDQUFDNGEsSUFBSSxFQUFFM2EsTUFBTSxDQUFDMmEsSUFBSSxDQUFDLENBQUE7RUFDNUQsS0FBQTtFQUNBLElBQUEsSUFBSSxDQUFDQSxJQUFJLEVBQUUsT0FBTyxJQUFJLENBQUE7RUFDdEIsSUFBQSxPQUFPQSxJQUFJLElBQUksSUFBSSxDQUFDdGEsQ0FBQyxFQUFFO0VBQ3JCLE1BQUEsSUFBSXNhLElBQUksQ0FBQ3RaLFNBQVMsSUFBSXNaLElBQUksQ0FBQ3RaLFNBQVMsQ0FBQ2djLFFBQVEsQ0FBQ2hjLFNBQVMsQ0FBQyxFQUFFLE9BQU9zWixJQUFJLENBQUE7UUFDckVBLElBQUksR0FBR0EsSUFBSSxDQUFDdkgsVUFBVSxDQUFBO0VBQ3hCLEtBQUE7RUFDQTtFQUNBLElBQUEsT0FBTyxJQUFJLENBQUE7RUFDYixHQUFBOztFQUVBO0VBQ0Y7RUFDQTtFQUNBO0VBQ0VrSyxFQUFBQSxlQUFlQSxHQUE4QjtFQUFBLElBQUEsSUFBN0J2ZCxLQUFLLEdBQUEyRSxTQUFBLENBQUF6QyxNQUFBLEdBQUEsQ0FBQSxJQUFBeUMsU0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBNUIsU0FBQSxHQUFBNEIsU0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFHLElBQUksQ0FBQTtFQUFBLElBQUEsSUFBRTFFLE1BQU0sR0FBQTBFLFNBQUEsQ0FBQXpDLE1BQUEsR0FBQSxDQUFBLElBQUF5QyxTQUFBLENBQUEsQ0FBQSxDQUFBLEtBQUE1QixTQUFBLEdBQUE0QixTQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUcsSUFBSSxDQUFBO01BQ3pDLElBQUk3QixZQUFZLEdBQUcsRUFBRSxDQUFBO01BQ3JCLElBQUksQ0FBQzlDLEtBQUssRUFBRUEsS0FBSyxHQUFHLElBQUksQ0FBQ2lhLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtNQUM1QyxJQUFJLENBQUNoYSxNQUFNLEVBQUVBLE1BQU0sR0FBRyxJQUFJLENBQUNnYSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7TUFDN0MsSUFBSSxDQUFDamEsS0FBSyxFQUFFO0VBQ1YsTUFBQSxLQUFLLElBQUl3ZCxHQUFHLElBQUlqZCxRQUFRLEVBQUU7RUFDeEJ1QyxRQUFBQSxZQUFZLENBQUMwYSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUE7RUFDMUIsT0FBQTtFQUNBLE1BQUEsT0FBTzFhLFlBQVksQ0FBQTtFQUNyQixLQUFBO0VBQ0EsSUFBQSxJQUFJLENBQUM3QyxNQUFNLEVBQUVBLE1BQU0sR0FBR0QsS0FBSyxDQUFBO01BRTNCLElBQUkyUSxLQUFLLEVBQUVDLEdBQUcsQ0FBQTtNQUNkLElBQUkzUSxNQUFNLENBQUM4WixHQUFHLEdBQUcvWixLQUFLLENBQUMrWixHQUFHLElBQUs5WixNQUFNLENBQUM4WixHQUFHLElBQUkvWixLQUFLLENBQUMrWixHQUFHLElBQUk5WixNQUFNLENBQUM2WixHQUFHLEdBQUc5WixLQUFLLENBQUM4WixHQUFJLEVBQUU7RUFDakZuSixNQUFBQSxLQUFLLEdBQUcxUSxNQUFNLENBQUE7RUFDZDJRLE1BQUFBLEdBQUcsR0FBRzVRLEtBQUssQ0FBQTtFQUNiLEtBQUMsTUFBTTtFQUNMMlEsTUFBQUEsS0FBSyxHQUFHM1EsS0FBSyxDQUFBO0VBQ2I0USxNQUFBQSxHQUFHLEdBQUczUSxNQUFNLENBQUE7RUFDZCxLQUFBO0VBQ0EsSUFBQSxJQUFJMlEsR0FBRyxDQUFDbUosR0FBRyxHQUFHcEosS0FBSyxDQUFDb0osR0FBRyxJQUFJbkosR0FBRyxDQUFDa0osR0FBRyxJQUFJLENBQUMsRUFBRTtRQUN2Q2xKLEdBQUcsQ0FBQ21KLEdBQUcsRUFBRSxDQUFBO0VBQ1RuSixNQUFBQSxHQUFHLENBQUNrSixHQUFHLEdBQUcsSUFBSSxDQUFDckgsS0FBSyxDQUFDN0IsR0FBRyxDQUFDbUosR0FBRyxDQUFDLENBQUM3WCxNQUFNLENBQUM7RUFDdkMsS0FBQTs7RUFFQSxJQUFBLEtBQUssSUFBSXNiLEdBQUcsSUFBSWpkLFFBQVEsRUFBRTtRQUN4QixJQUFJQSxRQUFRLENBQUNpZCxHQUFHLENBQUMsQ0FBQzdSLElBQUksSUFBSSxRQUFRLEVBQUU7VUFFbEMsSUFBSSxDQUFDM0wsS0FBSyxJQUFJQSxLQUFLLENBQUMrWixHQUFHLElBQUk5WixNQUFNLENBQUM4WixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUNsYSx5QkFBeUIsQ0FBQ0csS0FBSyxFQUFFQyxNQUFNLENBQUMsRUFBRTtFQUN2RjZDLFVBQUFBLFlBQVksQ0FBQzBhLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQTtFQUMxQixTQUFDLE1BQU07RUFDTDtZQUNBMWEsWUFBWSxDQUFDMGEsR0FBRyxDQUFDLEdBQ2YsQ0FBQyxDQUFDLElBQUksQ0FBQ0gsMEJBQTBCLENBQUNyZCxLQUFLLEVBQUVDLE1BQU0sRUFBRU0sUUFBUSxDQUFDaWQsR0FBRyxDQUFDLENBQUNsYyxTQUFTLENBQUM7RUFDM0U7O0VBRUl0QixVQUFBQSxLQUFLLENBQUM4WixHQUFHLElBQUk3WixNQUFNLENBQUM2WixHQUFHLElBQ3BCLENBQUMsQ0FBQyxJQUFJLENBQUNySCxLQUFLLENBQUN6UyxLQUFLLENBQUMrWixHQUFHLENBQUMsQ0FBQ3JELE1BQU0sQ0FBQyxDQUFDLEVBQUUxVyxLQUFLLENBQUM4WixHQUFHLENBQUMsQ0FBQzFYLEtBQUssQ0FBQzdCLFFBQVEsQ0FBQ2lkLEdBQUcsQ0FBQyxDQUFDekwsS0FBSyxDQUFDQyxVQUFVLENBQUMsSUFDbEYsQ0FBQyxDQUFDLElBQUksQ0FBQ1MsS0FBSyxDQUFDelMsS0FBSyxDQUFDK1osR0FBRyxDQUFDLENBQUNyRCxNQUFNLENBQUMxVyxLQUFLLENBQUM4WixHQUFHLENBQUMsQ0FBQzFYLEtBQUssQ0FBQzdCLFFBQVEsQ0FBQ2lkLEdBQUcsQ0FBQyxDQUFDekwsS0FBSyxDQUFDRSxXQUFXLENBQ25GLENBQUE7RUFDTCxTQUFBO0VBQ0YsT0FBQTtRQUNBLElBQUkxUixRQUFRLENBQUNpZCxHQUFHLENBQUMsQ0FBQzdSLElBQUksSUFBSSxNQUFNLEVBQUU7VUFDaEMsSUFBSSxDQUFDM0wsS0FBSyxFQUFFO0VBQ1Y4QyxVQUFBQSxZQUFZLENBQUMwYSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUE7RUFDMUIsU0FBQyxNQUFNO0VBQ0wsVUFBQSxJQUFJL2MsS0FBSyxHQUFHLElBQUksQ0FBQ2tTLFNBQVMsQ0FBQ2hDLEtBQUssQ0FBQ29KLEdBQUcsQ0FBQyxJQUFJeFosUUFBUSxDQUFDaWQsR0FBRyxDQUFDLENBQUNsYyxTQUFTLENBQUE7RUFFaEUsVUFBQSxLQUFLLElBQUlrWSxJQUFJLEdBQUc3SSxLQUFLLENBQUNvSixHQUFHLEVBQUVQLElBQUksSUFBSTVJLEdBQUcsQ0FBQ21KLEdBQUcsRUFBRVAsSUFBSSxFQUFHLEVBQUU7RUFDbkQsWUFBQSxJQUFLLElBQUksQ0FBQzdHLFNBQVMsQ0FBQzZHLElBQUksQ0FBQyxJQUFJalosUUFBUSxDQUFDaWQsR0FBRyxDQUFDLENBQUNsYyxTQUFTLElBQUtiLEtBQUssRUFBRTtFQUM5REEsY0FBQUEsS0FBSyxHQUFHLElBQUksQ0FBQTtFQUNaLGNBQUEsTUFBQTtFQUNGLGFBQUE7RUFDRixXQUFBO0VBQ0FxQyxVQUFBQSxZQUFZLENBQUMwYSxHQUFHLENBQUMsR0FBRy9jLEtBQUssQ0FBQTtFQUMzQixTQUFBO0VBRUYsT0FBQTtFQUNGLEtBQUE7RUFDQSxJQUFBLE9BQU9xQyxZQUFZLENBQUE7RUFDckIsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0VGLEVBQUFBLGVBQWVBLENBQUNyQixPQUFPLEVBQUVkLEtBQUssRUFBRTtNQUM5QixJQUFJRixRQUFRLENBQUNnQixPQUFPLENBQUMsQ0FBQ29LLElBQUksSUFBSSxRQUFRLEVBQUU7RUFDdEMsTUFBQSxJQUFJMUwsTUFBTSxHQUFHLElBQUksQ0FBQ2dhLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtFQUNwQyxNQUFBLElBQUlqYSxLQUFLLEdBQUcsSUFBSSxDQUFDaWEsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBO0VBQ3BDLE1BQUEsSUFBSSxDQUFDaGEsTUFBTSxFQUFFQSxNQUFNLEdBQUdELEtBQUssQ0FBQTtRQUMzQixJQUFJLENBQUNDLE1BQU0sRUFBRSxPQUFBO0VBQ2IsTUFBQSxJQUFJQSxNQUFNLENBQUM4WixHQUFHLElBQUkvWixLQUFLLENBQUMrWixHQUFHLEVBQUUsT0FBQTtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDbGEseUJBQXlCLENBQUNHLEtBQUssRUFBRUMsTUFBTSxDQUFDLEVBQUUsT0FBQTtFQUNwRCxNQUFBLElBQUl3ZCxVQUFVLEdBQUcsSUFBSSxDQUFDSiwwQkFBMEIsQ0FBQ3JkLEtBQUssRUFBRUMsTUFBTSxFQUFFTSxRQUFRLENBQUNnQixPQUFPLENBQUMsQ0FBQ0QsU0FBUyxDQUFDLENBQUE7UUFDNUYsSUFBSSxDQUFDNlUsY0FBYyxFQUFFLENBQUE7O0VBRXJCO0VBQ0EsTUFBQSxJQUFJc0gsVUFBVSxFQUFFO1VBQ2QsSUFBSSxDQUFDMUssU0FBUyxDQUFDL1MsS0FBSyxDQUFDK1osR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFBO1VBQ2hDLE1BQU0yRCxRQUFRLEdBQUcsSUFBSSxDQUFDL0MsYUFBYSxDQUFDOEMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFBO0VBQ2xELFFBQUEsTUFBTUUsR0FBRyxHQUFHRixVQUFVLENBQUN0RSxXQUFXLENBQUNqWCxNQUFNLENBQUE7RUFDekMsUUFBQSxNQUFNMGIsSUFBSSxHQUFHLElBQUksQ0FBQ25MLEtBQUssQ0FBQ3pTLEtBQUssQ0FBQytaLEdBQUcsQ0FBQyxDQUFDckQsTUFBTSxDQUFDLENBQUMsRUFBRWdILFFBQVEsQ0FBQyxDQUFDclIsT0FBTyxDQUFDOUwsUUFBUSxDQUFDZ0IsT0FBTyxDQUFDLENBQUN3USxLQUFLLENBQUNDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQTtFQUN0RyxRQUFBLE1BQU02TCxHQUFHLEdBQUcsSUFBSSxDQUFDcEwsS0FBSyxDQUFDelMsS0FBSyxDQUFDK1osR0FBRyxDQUFDLENBQUNyRCxNQUFNLENBQUNnSCxRQUFRLEVBQUVDLEdBQUcsQ0FBQyxDQUFBO0VBQ3ZELFFBQUEsTUFBTUcsS0FBSyxHQUFHLElBQUksQ0FBQ3JMLEtBQUssQ0FBQ3pTLEtBQUssQ0FBQytaLEdBQUcsQ0FBQyxDQUFDckQsTUFBTSxDQUFDZ0gsUUFBUSxHQUFHQyxHQUFHLENBQUMsQ0FBQ3RSLE9BQU8sQ0FBQzlMLFFBQVEsQ0FBQ2dCLE9BQU8sQ0FBQyxDQUFDd1EsS0FBSyxDQUFDRSxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUE7RUFDM0csUUFBQSxJQUFJLENBQUNRLEtBQUssQ0FBQ3pTLEtBQUssQ0FBQytaLEdBQUcsQ0FBQyxHQUFHNkQsSUFBSSxDQUFDcmIsTUFBTSxDQUFDc2IsR0FBRyxFQUFFQyxLQUFLLENBQUMsQ0FBQTtFQUMvQzdkLFFBQUFBLE1BQU0sQ0FBQzZaLEdBQUcsR0FBRzhELElBQUksQ0FBQzFiLE1BQU0sQ0FBQTtFQUN4QmxDLFFBQUFBLEtBQUssQ0FBQzhaLEdBQUcsR0FBRzdaLE1BQU0sQ0FBQzZaLEdBQUcsR0FBRzZELEdBQUcsQ0FBQTtVQUM1QixJQUFJLENBQUNsSixnQkFBZ0IsRUFBRSxDQUFBO0VBQ3ZCLFFBQUEsSUFBSSxDQUFDMEcsWUFBWSxDQUFDbmIsS0FBSyxFQUFFQyxNQUFNLENBQUMsQ0FBQTtVQUNoQyxJQUFJLENBQUN5VSxVQUFVLEVBQUUsQ0FBQTs7RUFFbkI7RUFDQSxPQUFDLE1BQU0sSUFDTDFVLEtBQUssQ0FBQzhaLEdBQUcsSUFBSTdaLE1BQU0sQ0FBQzZaLEdBQUcsSUFDcEIsQ0FBQyxDQUFDLElBQUksQ0FBQ3JILEtBQUssQ0FBQ3pTLEtBQUssQ0FBQytaLEdBQUcsQ0FBQyxDQUFDckQsTUFBTSxDQUFDLENBQUMsRUFBRTFXLEtBQUssQ0FBQzhaLEdBQUcsQ0FBQyxDQUFDMVgsS0FBSyxDQUFDN0IsUUFBUSxDQUFDZ0IsT0FBTyxDQUFDLENBQUN3USxLQUFLLENBQUNDLFVBQVUsQ0FBQyxJQUN0RixDQUFDLENBQUMsSUFBSSxDQUFDUyxLQUFLLENBQUN6UyxLQUFLLENBQUMrWixHQUFHLENBQUMsQ0FBQ3JELE1BQU0sQ0FBQzFXLEtBQUssQ0FBQzhaLEdBQUcsQ0FBQyxDQUFDMVgsS0FBSyxDQUFDN0IsUUFBUSxDQUFDZ0IsT0FBTyxDQUFDLENBQUN3USxLQUFLLENBQUNFLFdBQVcsQ0FBQyxFQUN2RjtVQUNBLElBQUksQ0FBQ2MsU0FBUyxDQUFDL1MsS0FBSyxDQUFDK1osR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFBO0VBQ2hDLFFBQUEsTUFBTTZELElBQUksR0FBRyxJQUFJLENBQUNuTCxLQUFLLENBQUN6UyxLQUFLLENBQUMrWixHQUFHLENBQUMsQ0FBQ3JELE1BQU0sQ0FBQyxDQUFDLEVBQUUxVyxLQUFLLENBQUM4WixHQUFHLENBQUMsQ0FBQ3pOLE9BQU8sQ0FBQzlMLFFBQVEsQ0FBQ2dCLE9BQU8sQ0FBQyxDQUFDd1EsS0FBSyxDQUFDQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUE7RUFDdkcsUUFBQSxNQUFNOEwsS0FBSyxHQUFHLElBQUksQ0FBQ3JMLEtBQUssQ0FBQ3pTLEtBQUssQ0FBQytaLEdBQUcsQ0FBQyxDQUFDckQsTUFBTSxDQUFDMVcsS0FBSyxDQUFDOFosR0FBRyxDQUFDLENBQUN6TixPQUFPLENBQUM5TCxRQUFRLENBQUNnQixPQUFPLENBQUMsQ0FBQ3dRLEtBQUssQ0FBQ0UsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0VBQ3RHLFFBQUEsSUFBSSxDQUFDUSxLQUFLLENBQUN6UyxLQUFLLENBQUMrWixHQUFHLENBQUMsR0FBRzZELElBQUksQ0FBQ3JiLE1BQU0sQ0FBQ3ViLEtBQUssQ0FBQyxDQUFBO1VBQzFDOWQsS0FBSyxDQUFDOFosR0FBRyxHQUFHN1osTUFBTSxDQUFDNlosR0FBRyxHQUFHOEQsSUFBSSxDQUFDMWIsTUFBTSxDQUFBO1VBQ3BDLElBQUksQ0FBQ3VTLGdCQUFnQixFQUFFLENBQUE7RUFDdkIsUUFBQSxJQUFJLENBQUMwRyxZQUFZLENBQUNuYixLQUFLLEVBQUVDLE1BQU0sQ0FBQyxDQUFBO1VBQ2hDLElBQUksQ0FBQ3lVLFVBQVUsRUFBRSxDQUFBOztFQUVuQjtFQUNBLE9BQUMsTUFBTTtFQUVMO1VBQ0EsSUFBSTtZQUFDZ0osUUFBUTtFQUFFSyxVQUFBQSxNQUFBQTtXQUFPLEdBQUcvZCxLQUFLLENBQUM4WixHQUFHLEdBQUc3WixNQUFNLENBQUM2WixHQUFHLEdBQUc7WUFBQzRELFFBQVEsRUFBRTFkLEtBQUssQ0FBQzhaLEdBQUc7WUFBRWlFLE1BQU0sRUFBRTlkLE1BQU0sQ0FBQzZaLEdBQUFBO0VBQUcsU0FBQyxHQUFHO1lBQUM0RCxRQUFRLEVBQUV6ZCxNQUFNLENBQUM2WixHQUFHO1lBQUVpRSxNQUFNLEVBQUUvZCxLQUFLLENBQUM4WixHQUFBQTtXQUFJLENBQUE7VUFFdkksSUFBSTFYLEtBQUssR0FBRyxJQUFJLENBQUNxUSxLQUFLLENBQUN6UyxLQUFLLENBQUMrWixHQUFHLENBQUMsQ0FBQ3JELE1BQU0sQ0FBQ2dILFFBQVEsRUFBRUssTUFBTSxHQUFHTCxRQUFRLENBQUMsQ0FBQ3RiLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFBO0VBQ3BILFFBQUEsSUFBSUEsS0FBSyxFQUFFO0VBQ1RzYixVQUFBQSxRQUFRLElBQUl0YixLQUFLLENBQUMwVCxNQUFNLENBQUNrSSxPQUFPLENBQUM5YixNQUFNLENBQUE7RUFDdkM2YixVQUFBQSxNQUFNLElBQUkzYixLQUFLLENBQUMwVCxNQUFNLENBQUNtSSxRQUFRLENBQUMvYixNQUFNLENBQUE7RUFDeEMsU0FBQTtVQUVBbEMsS0FBSyxDQUFDOFosR0FBRyxHQUFHNEQsUUFBUSxDQUFBO1VBQ3BCemQsTUFBTSxDQUFDNlosR0FBRyxHQUFHaUUsTUFBTSxDQUFBOztFQUVuQjtVQUNBLElBQUksQ0FBQ2plLGFBQWEsQ0FBQ1MsUUFBUSxDQUFDZ0IsT0FBTyxDQUFDLENBQUMrSixHQUFHLENBQUN1RyxHQUFHLEVBQUV0UixRQUFRLENBQUNnQixPQUFPLENBQUMsQ0FBQytKLEdBQUcsQ0FBQ3dHLElBQUksRUFBRTlSLEtBQUssRUFBRUMsTUFBTSxDQUFDLENBQUE7VUFDeEYsSUFBSSxDQUFDeVUsVUFBVSxFQUFFLENBQUE7RUFDakI7RUFDRixPQUFBO09BRUQsTUFBTSxJQUFJblUsUUFBUSxDQUFDZ0IsT0FBTyxDQUFDLENBQUNvSyxJQUFJLElBQUksTUFBTSxFQUFFO0VBQzNDLE1BQUEsSUFBSTFMLE1BQU0sR0FBRyxJQUFJLENBQUNnYSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7RUFDcEMsTUFBQSxJQUFJamEsS0FBSyxHQUFHLElBQUksQ0FBQ2lhLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtFQUNwQyxNQUFBLElBQUksQ0FBQ2hhLE1BQU0sRUFBRUEsTUFBTSxHQUFHRCxLQUFLLENBQUE7UUFDM0IsSUFBSSxDQUFDQSxLQUFLLEVBQUUsT0FBQTtRQUNaLElBQUksQ0FBQ21XLGNBQWMsRUFBRSxDQUFBO0VBQ3JCLE1BQUEsSUFBSXhGLEtBQUssR0FBRzFRLE1BQU0sQ0FBQzhaLEdBQUcsR0FBRy9aLEtBQUssQ0FBQytaLEdBQUcsR0FBRy9aLEtBQUssR0FBR0MsTUFBTSxDQUFBO0VBQ25ELE1BQUEsSUFBSTJRLEdBQUcsR0FBSTNRLE1BQU0sQ0FBQzhaLEdBQUcsR0FBRy9aLEtBQUssQ0FBQytaLEdBQUcsR0FBRzlaLE1BQU0sR0FBR0QsS0FBSyxDQUFBO0VBQ2xELE1BQUEsSUFBSTRRLEdBQUcsQ0FBQ21KLEdBQUcsR0FBR3BKLEtBQUssQ0FBQ29KLEdBQUcsSUFBSW5KLEdBQUcsQ0FBQ2tKLEdBQUcsSUFBSSxDQUFDLEVBQUU7VUFDdkNsSixHQUFHLENBQUNtSixHQUFHLEVBQUUsQ0FBQTtFQUNYLE9BQUE7RUFFQSxNQUFBLEtBQUssSUFBSVAsSUFBSSxHQUFHN0ksS0FBSyxDQUFDb0osR0FBRyxFQUFFUCxJQUFJLElBQUk1SSxHQUFHLENBQUNtSixHQUFHLEVBQUVQLElBQUksRUFBRSxFQUFFO0VBQ2xELFFBQUEsSUFBSS9ZLEtBQUssSUFBSSxJQUFJLENBQUNrUyxTQUFTLENBQUM2RyxJQUFJLENBQUMsSUFBSWpaLFFBQVEsQ0FBQ2dCLE9BQU8sQ0FBQyxDQUFDRCxTQUFTLEVBQUU7WUFDaEUsSUFBSSxDQUFDbVIsS0FBSyxDQUFDK0csSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDL0csS0FBSyxDQUFDK0csSUFBSSxDQUFDLENBQUNuTixPQUFPLENBQUM5TCxRQUFRLENBQUNnQixPQUFPLENBQUMsQ0FBQytKLEdBQUcsQ0FBQzRHLE9BQU8sRUFBRTNSLFFBQVEsQ0FBQ2dCLE9BQU8sQ0FBQyxDQUFDK0osR0FBRyxDQUFDZ0UsV0FBVyxDQUFDakQsT0FBTyxDQUFDLElBQUksRUFBR21OLElBQUksR0FBRzdJLEtBQUssQ0FBQ29KLEdBQUcsR0FBRyxDQUFFLENBQUMsQ0FBQyxDQUFBO0VBQ25KLFVBQUEsSUFBSSxDQUFDaEgsU0FBUyxDQUFDeUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFBO0VBQzdCLFNBQUE7RUFDQSxRQUFBLElBQUksQ0FBQy9ZLEtBQUssSUFBSSxJQUFJLENBQUNrUyxTQUFTLENBQUM2RyxJQUFJLENBQUMsSUFBSWpaLFFBQVEsQ0FBQ2dCLE9BQU8sQ0FBQyxDQUFDRCxTQUFTLEVBQUU7RUFDakUsVUFBQSxJQUFJLENBQUNtUixLQUFLLENBQUMrRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMvRyxLQUFLLENBQUMrRyxJQUFJLENBQUMsQ0FBQ25OLE9BQU8sQ0FBQzlMLFFBQVEsQ0FBQ2dCLE9BQU8sQ0FBQyxDQUFDd1EsS0FBSyxDQUFDRyxPQUFPLEVBQUUzUixRQUFRLENBQUNnQixPQUFPLENBQUMsQ0FBQ3dRLEtBQUssQ0FBQ3pDLFdBQVcsQ0FBQyxDQUFBO0VBQ2pILFVBQUEsSUFBSSxDQUFDeUQsU0FBUyxDQUFDeUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFBO0VBQzdCLFNBQUE7RUFDRixPQUFBO1FBQ0EsSUFBSSxDQUFDL0UsZ0JBQWdCLEVBQUUsQ0FBQTtRQUN2QixJQUFJLENBQUMwRyxZQUFZLENBQUM7VUFBQ3BCLEdBQUcsRUFBRW5KLEdBQUcsQ0FBQ21KLEdBQUc7VUFBRUQsR0FBRyxFQUFFLElBQUksQ0FBQ3JILEtBQUssQ0FBQzdCLEdBQUcsQ0FBQ21KLEdBQUcsQ0FBQyxDQUFDN1gsTUFBQUE7RUFBTSxPQUFDLEVBQUU7VUFBQzZYLEdBQUcsRUFBRXBKLEtBQUssQ0FBQ29KLEdBQUc7RUFBRUQsUUFBQUEsR0FBRyxFQUFFLENBQUE7RUFBQyxPQUFDLENBQUMsQ0FBQTtRQUM1RixJQUFJLENBQUNwRixVQUFVLEVBQUUsQ0FBQTtFQUNuQixLQUFBO0VBQ0YsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNFN1UsRUFBQUEseUJBQXlCQSxHQUFHO0VBQzFCO0VBQ0EsSUFBQSxNQUFNOFosR0FBRyxHQUFHcFcsTUFBTSxDQUFDMFcsWUFBWSxFQUFFLENBQUE7RUFDakMsSUFBQSxJQUFJLENBQUNOLEdBQUcsRUFBRSxPQUFPLEtBQUssQ0FBQTs7RUFFdEI7O0VBRUE7TUFDQSxJQUFJQSxHQUFHLENBQUN1RSxXQUFXLElBQUl2RSxHQUFHLENBQUNVLFNBQVMsQ0FBQ0MsUUFBUSxJQUFJLENBQUMsSUFBSVgsR0FBRyxDQUFDZSxXQUFXLElBQUlmLEdBQUcsQ0FBQ1UsU0FBUyxDQUFDYSxTQUFTLENBQUNoWixNQUFNLEVBQUU7RUFDdkcsTUFBQSxJQUFJMFksSUFBSSxDQUFBO0VBQ1IsTUFBQSxLQUFLQSxJQUFJLEdBQUdqQixHQUFHLENBQUNVLFNBQVMsRUFBRU8sSUFBSSxJQUFJQSxJQUFJLENBQUM5RyxXQUFXLElBQUksSUFBSSxFQUFFOEcsSUFBSSxHQUFHQSxJQUFJLENBQUN2SCxVQUFVLENBQUMsQ0FBQTtRQUNwRixJQUFJdUgsSUFBSSxJQUFJQSxJQUFJLENBQUM5RyxXQUFXLENBQUN4UyxTQUFTLElBQUlzWixJQUFJLENBQUM5RyxXQUFXLENBQUN4UyxTQUFTLENBQUNnYyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQTtFQUNqSCxLQUFBOztFQUVBO0VBQ0EsSUFBQSxJQUFJYSxRQUFRLEdBQUcsSUFBSSxDQUFDckIscUJBQXFCLENBQUNuRCxHQUFHLENBQUNVLFNBQVMsRUFBRVYsR0FBRyxDQUFDUyxVQUFVLENBQUMsQ0FBQTtFQUN4RSxJQUFBLElBQUksQ0FBQytELFFBQVEsRUFBRSxPQUFPLEtBQUssQ0FBQTs7RUFFM0I7RUFDQSxJQUFBLE9BQU9BLFFBQVEsSUFBSUEsUUFBUSxJQUFJLElBQUksQ0FBQzdkLENBQUMsRUFBRTtRQUNyQyxJQUFJNmQsUUFBUSxDQUFDN2MsU0FBUyxLQUFLNmMsUUFBUSxDQUFDN2MsU0FBUyxDQUFDZ2MsUUFBUSxDQUFDLG1CQUFtQixDQUFDLElBQUlhLFFBQVEsQ0FBQzdjLFNBQVMsQ0FBQ2djLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFBO1FBQ3ZJYSxRQUFRLEdBQUdBLFFBQVEsQ0FBQzlLLFVBQVUsQ0FBQTtFQUNoQyxLQUFBO0VBRUEsSUFBQSxPQUFPLEtBQUssQ0FBQTtFQUNkLEdBQUE7O0VBRUE7RUFDRjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRXZULEVBQUFBLGFBQWFBLENBQUMrUixHQUFHLEVBQUVDLElBQUksRUFBK0I7RUFBQSxJQUFBLElBQTdCOVIsS0FBSyxHQUFBMkUsU0FBQSxDQUFBekMsTUFBQSxHQUFBLENBQUEsSUFBQXlDLFNBQUEsQ0FBQSxDQUFBLENBQUEsS0FBQTVCLFNBQUEsR0FBQTRCLFNBQUEsQ0FBQSxDQUFBLENBQUEsR0FBRyxJQUFJLENBQUE7RUFBQSxJQUFBLElBQUUxRSxNQUFNLEdBQUEwRSxTQUFBLENBQUF6QyxNQUFBLEdBQUEsQ0FBQSxJQUFBeUMsU0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBNUIsU0FBQSxHQUFBNEIsU0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFHLElBQUksQ0FBQTtNQUNsRCxJQUFJLENBQUMzRSxLQUFLLEVBQUVBLEtBQUssR0FBRyxJQUFJLENBQUNpYSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUE7TUFDNUMsSUFBSSxDQUFDaGEsTUFBTSxFQUFFQSxNQUFNLEdBQUcsSUFBSSxDQUFDZ2EsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFBO0VBQzdDLElBQUEsSUFBSSxDQUFDamEsS0FBSyxJQUFJLENBQUNDLE1BQU0sSUFBSUQsS0FBSyxDQUFDK1osR0FBRyxJQUFJOVosTUFBTSxDQUFDOFosR0FBRyxFQUFFLE9BQUE7TUFDbEQsSUFBSSxDQUFDaEgsU0FBUyxDQUFDL1MsS0FBSyxDQUFDK1osR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFBO0VBRWhDLElBQUEsTUFBTTJELFFBQVEsR0FBRzFkLEtBQUssQ0FBQzhaLEdBQUcsR0FBRzdaLE1BQU0sQ0FBQzZaLEdBQUcsR0FBRzlaLEtBQUssQ0FBQzhaLEdBQUcsR0FBRzdaLE1BQU0sQ0FBQzZaLEdBQUcsQ0FBQTtFQUNoRSxJQUFBLE1BQU1pRSxNQUFNLEdBQUcvZCxLQUFLLENBQUM4WixHQUFHLEdBQUc3WixNQUFNLENBQUM2WixHQUFHLEdBQUc3WixNQUFNLENBQUM2WixHQUFHLEdBQUc5WixLQUFLLENBQUM4WixHQUFHLENBQUE7TUFDOUQsTUFBTThELElBQUksR0FBRyxJQUFJLENBQUNuTCxLQUFLLENBQUN6UyxLQUFLLENBQUMrWixHQUFHLENBQUMsQ0FBQ3JELE1BQU0sQ0FBQyxDQUFDLEVBQUVnSCxRQUFRLENBQUMsQ0FBQ25iLE1BQU0sQ0FBQ3NQLEdBQUcsQ0FBQyxDQUFBO01BQ2xFLE1BQU1nTSxHQUFHLEdBQUlFLE1BQU0sSUFBSUwsUUFBUSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUNqTCxLQUFLLENBQUN6UyxLQUFLLENBQUMrWixHQUFHLENBQUMsQ0FBQ3JELE1BQU0sQ0FBQ2dILFFBQVEsRUFBRUssTUFBTSxHQUFHTCxRQUFRLENBQUUsQ0FBQTtFQUNqRyxJQUFBLE1BQU1JLEtBQUssR0FBR2hNLElBQUksQ0FBQ3ZQLE1BQU0sQ0FBQyxJQUFJLENBQUNrUSxLQUFLLENBQUN6UyxLQUFLLENBQUMrWixHQUFHLENBQUMsQ0FBQ3JELE1BQU0sQ0FBQ3FILE1BQU0sQ0FBQyxDQUFDLENBQUE7RUFDL0QsSUFBQSxJQUFJLENBQUN0TCxLQUFLLENBQUN6UyxLQUFLLENBQUMrWixHQUFHLENBQUMsR0FBRzZELElBQUksQ0FBQ3JiLE1BQU0sQ0FBQ3NiLEdBQUcsRUFBRUMsS0FBSyxDQUFDLENBQUE7RUFDL0M3ZCxJQUFBQSxNQUFNLENBQUM2WixHQUFHLEdBQUc4RCxJQUFJLENBQUMxYixNQUFNLENBQUE7TUFDeEJsQyxLQUFLLENBQUM4WixHQUFHLEdBQUc3WixNQUFNLENBQUM2WixHQUFHLEdBQUcrRCxHQUFHLENBQUMzYixNQUFNLENBQUE7TUFFbkMsSUFBSSxDQUFDdVMsZ0JBQWdCLEVBQUUsQ0FBQTtFQUN2QixJQUFBLElBQUksQ0FBQzBHLFlBQVksQ0FBQ25iLEtBQUssRUFBRUMsTUFBTSxDQUFDLENBQUE7RUFDbEMsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtJQUNFbWUsa0JBQWtCQSxDQUFDN2MsT0FBTyxFQUFFO0VBQzFCLElBQUEsSUFBSSxDQUFDLElBQUksQ0FBQ3lSLGdCQUFnQixFQUFFLElBQUksQ0FBQ0EsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDdUssZUFBZSxFQUFFLENBQUE7RUFDMUUsSUFBQSxJQUFJLENBQUMzYSxlQUFlLENBQUNyQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUN5UixnQkFBZ0IsQ0FBQ3pSLE9BQU8sQ0FBQyxDQUFDLENBQUE7RUFDaEUsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDRW1ULEVBQUFBLFVBQVVBLEdBQUc7RUFDWCxJQUFBLElBQUksQ0FBQyxJQUFJLENBQUNsQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUNTLFNBQVMsQ0FBQ0MsTUFBTSxDQUFDaFIsTUFBTSxFQUFFLE9BQUE7RUFDckQsSUFBQSxNQUFNd1IsT0FBTyxHQUFHLElBQUksQ0FBQ2lCLFVBQVUsRUFBRSxDQUFBO01BQ2pDLElBQUksSUFBSSxDQUFDbkMsUUFBUSxFQUFFLElBQUksQ0FBQ0EsUUFBUSxDQUFDdk0sS0FBSyxHQUFHeU4sT0FBTyxDQUFBO01BQ2hELEtBQUssSUFBSTJLLFFBQVEsSUFBSSxJQUFJLENBQUNwTCxTQUFTLENBQUNDLE1BQU0sRUFBRTtFQUMxQ21MLE1BQUFBLFFBQVEsQ0FBQztFQUNQM0ssUUFBQUEsT0FBTyxFQUFFQSxPQUFPO1VBQ2hCNEssVUFBVSxFQUFFLElBQUksQ0FBQ0EsVUFBQUE7RUFDbkIsT0FBQyxDQUFDLENBQUE7RUFDSixLQUFBO0VBQ0YsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDRXhDLEVBQUFBLGFBQWFBLEdBQUc7RUFDZCxJQUFBLElBQUksSUFBSSxDQUFDN0ksU0FBUyxDQUFDRSxTQUFTLElBQUksSUFBSSxDQUFDRixTQUFTLENBQUNFLFNBQVMsQ0FBQ2pSLE1BQU0sRUFBRTtFQUMvRCxNQUFBLElBQUlsQyxLQUFLLEdBQUcsSUFBSSxDQUFDaWEsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBO0VBQ3BDLE1BQUEsSUFBSWhhLE1BQU0sR0FBRyxJQUFJLENBQUNnYSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDcEMsSUFBSW5YLFlBQVksR0FBRyxJQUFJLENBQUN5YSxlQUFlLENBQUN2ZCxLQUFLLEVBQUVDLE1BQU0sQ0FBQyxDQUFBO1FBQ3RELElBQUksSUFBSSxDQUFDK1MsZ0JBQWdCLEVBQUU7VUFDekJyUixNQUFNLENBQUNDLE1BQU0sQ0FBQyxJQUFJLENBQUNvUixnQkFBZ0IsRUFBRWxRLFlBQVksQ0FBQyxDQUFBO0VBQ3BELE9BQUMsTUFBTTtVQUNMLElBQUksQ0FBQ2tRLGdCQUFnQixHQUFHclIsTUFBTSxDQUFDQyxNQUFNLENBQUMsRUFBRSxFQUFFa0IsWUFBWSxDQUFDLENBQUE7RUFDekQsT0FBQTtRQUNBLEtBQUssSUFBSXViLFFBQVEsSUFBSSxJQUFJLENBQUNwTCxTQUFTLENBQUNFLFNBQVMsRUFBRTtFQUM3Q2tMLFFBQUFBLFFBQVEsQ0FBQztFQUNQcmUsVUFBQUEsS0FBSyxFQUFFQSxLQUFLO0VBQ1pDLFVBQUFBLE1BQU0sRUFBRUEsTUFBTTtZQUNkNkMsWUFBWSxFQUFFLElBQUksQ0FBQ2tRLGdCQUFBQTtFQUNyQixTQUFDLENBQUMsQ0FBQTtFQUNKLE9BQUE7RUFDRixLQUFBO0VBQ0YsR0FBQTs7RUFFQTtFQUNGO0VBQ0E7RUFDQTtFQUNBO0VBQ0UvUixFQUFBQSxnQkFBZ0JBLENBQUMwSyxJQUFJLEVBQUUwUyxRQUFRLEVBQUU7RUFDL0IsSUFBQSxJQUFJMVMsSUFBSSxDQUFDdkosS0FBSyxDQUFDLHFCQUFxQixDQUFDLEVBQUU7UUFDckMsSUFBSSxDQUFDNlEsU0FBUyxDQUFDQyxNQUFNLENBQUMvUSxJQUFJLENBQUNrYyxRQUFRLENBQUMsQ0FBQTtFQUN0QyxLQUFBO0VBQ0EsSUFBQSxJQUFJMVMsSUFBSSxDQUFDdkosS0FBSyxDQUFDLGtDQUFrQyxDQUFDLEVBQUU7UUFDbEQsSUFBSSxDQUFDNlEsU0FBUyxDQUFDRSxTQUFTLENBQUNoUixJQUFJLENBQUNrYyxRQUFRLENBQUMsQ0FBQTtFQUN6QyxLQUFBO0VBQ0YsR0FBQTtFQUNGOzs7Ozs7Ozs7OzsifQ==
|