tiny-markdown-editor 0.1.9 → 0.1.10

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 CHANGED
@@ -2546,6 +2546,7 @@
2546
2546
  /**
2547
2547
  * Sets the selection based on rows and columns within the editor Markdown content.
2548
2548
  * @param {object} focus Object representing the selection, needs to have properties row and col.
2549
+ * @param anchor Anchor of the selection. If not given, assumes the current anchor.
2549
2550
  */
2550
2551
  setSelection(focus) {
2551
2552
  let anchor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
@@ -2748,6 +2749,7 @@
2748
2749
  /**
2749
2750
  * Returns the state (true / false) of all commands.
2750
2751
  * @param focus Focus of the selection. If not given, assumes the current focus.
2752
+ * @param anchor Anchor of the selection. If not given, assumes the current anchor.
2751
2753
  */
2752
2754
  getCommandState() {
2753
2755
  let focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
@@ -3031,4 +3033,4 @@
3031
3033
 
3032
3034
  }));
3033
3035
 
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==
3036
+ //# 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/IFxuICAvLyAgIGlmIChmb2N1cy5jb2wgIT0gYW5jaG9yLmNvbCB8fCBmb2N1cy5yb3cgIT0gYW5jaG9yLnJvdykge1xuICAvLyAgICAgLy8gbm9uLWVtcHR5LiBkaXJlY3Rpb24gZG9lc24ndCBtYXR0ZXIuXG4gIC8vICAgICB0aGlzLnBhc3RlKCcnLCBhbmNob3IsIGZvY3VzKTtcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgaWYgKGZvcndhcmQpIHtcbiAgLy8gICAgICAgaWYgKGZvY3VzLmNvbCA8IHRoaXMubGluZXNbZm9jdXMucm93XS5sZW5ndGgpIHRoaXMucGFzdGUoJycsIHtyb3c6IGZvY3VzLnJvdywgY29sOiBmb2N1cy5jb2wgKyAxfSwgZm9jdXMpO1xuICAvLyAgICAgICBlbHNlIGlmIChmb2N1cy5jb2wgPCB0aGlzLmxpbmVzLmxlbmd0aCkgdGhpcy5wYXN0ZSgnJywge3JvdzogZm9jdXMucm93ICsgMSwgY29sOiAwfSwgZm9jdXMpO1xuICAvLyAgICAgICAvLyBPdGhlcndpc2UsIHdlJ3JlIGF0IHRoZSB2ZXJ5IGVuZCBhbmQgY2FuJ3QgZGVsZXRlIGZvcndhcmRcbiAgLy8gICAgIH0gZWxzZSB7XG4gIC8vICAgICAgIGlmIChmb2N1cy5jb2wgPiAwKSB0aGlzLnBhc3RlKCcnLCB7cm93OiBmb2N1cy5yb3csIGNvbDogZm9jdXMuY29sIC0gMX0sIGZvY3VzKTtcbiAgLy8gICAgICAgZWxzZSBpZiAoZm9jdXMucm93ID4gMCkgdGhpcy5wYXN0ZSgnJywge3JvdzogZm9jdXMucm93IC0gMSwgY29sOiB0aGlzLmxpbmVzW2ZvY3VzLnJvdyAtIDFdLmxlbmd0aCAtIDF9LCBmb2N1cyk7XG4gIC8vICAgICAgIC8vIE90aGVyd2lzZSwgd2UncmUgYXQgdGhlIHZlcnkgYmVnaW5uaW5nIGFuZCBjYW4ndCBkZWxldGUgYmFja3dhcmRzXG4gIC8vICAgICB9XG4gIC8vICAgfVxuXG4gIC8vIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUgc2VsZWN0aW9uIGNvdW50ZWQgYnkgcm93IGFuZCBjb2x1bW4gb2YgdGhlIGVkaXRvciBNYXJrZG93biBjb250ZW50IChhcyBvcHBvc2VkIHRvIHRoZSBwb3NpdGlvbiBpbiB0aGUgRE9NKS5cbiAgICogXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZ2V0QW5jaG9yIGlmIHNldCB0byB0cnVlLCBnZXRzIHRoZSBzZWxlY3Rpb24gYW5jaG9yIChzdGFydCBwb2ludCBvZiB0aGUgc2VsZWN0aW9uKSwgb3RoZXJ3aXNlIGdldHMgdGhlIGZvY3VzIChlbmQgcG9pbnQpLlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IEFuIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHNlbGVjdGlvbiwgd2l0aCBwcm9wZXJ0aWVzIGNvbCBhbmQgcm93LlxuICAgKi9cbiAgZ2V0U2VsZWN0aW9uKGdldEFuY2hvciA9IGZhbHNlKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgIGxldCBzdGFydE5vZGUgPSAoZ2V0QW5jaG9yID8gc2VsZWN0aW9uLmFuY2hvck5vZGUgOiBzZWxlY3Rpb24uZm9jdXNOb2RlKTtcbiAgICBpZiAoIXN0YXJ0Tm9kZSkgcmV0dXJuIG51bGw7XG4gICAgbGV0IG9mZnNldCA9IHN0YXJ0Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUgPyAoZ2V0QW5jaG9yID8gc2VsZWN0aW9uLmFuY2hvck9mZnNldCA6IHNlbGVjdGlvbi5mb2N1c09mZnNldCkgOiAwO1xuICBcbiAgICBpZiAoc3RhcnROb2RlID09IHRoaXMuZSkge1xuICAgICAgcmV0dXJuIHtyb3c6IDAsIGNvbDogb2Zmc2V0fTtcbiAgICB9XG5cbiAgICBsZXQgY29sID0gdGhpcy5jb21wdXRlQ29sdW1uKHN0YXJ0Tm9kZSwgb2Zmc2V0KTsgICAgXG4gICAgaWYgKGNvbCA9PT0gbnVsbCkgcmV0dXJuIG51bGw7IC8vIFdlIGFyZSBvdXRzaWRlIG9mIHRoZSBlZGl0b3JcblxuICAgIC8vIEZpbmQgdGhlIHJvdyBub2RlXG4gICAgbGV0IG5vZGUgPSBzdGFydE5vZGU7XG4gICAgd2hpbGUgKG5vZGUucGFyZW50RWxlbWVudCAhPSB0aGlzLmUpIHtcbiAgICAgIG5vZGUgPSBub2RlLnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgbGV0IHJvdyA9IDA7XG4gICAgLy8gQ2hlY2sgaWYgd2UgY2FuIHJlYWQgYSBsaW5lIG51bWJlciBmcm9tIHRoZSBkYXRhLWxpbmUtbnVtIGF0dHJpYnV0ZS5cbiAgICAvLyBUaGUgbGFzdCBjb25kaXRpb24gaXMgYSBzZWN1cml0eSBtZWFzdXJlIHNpbmNlIGluc2VydGluZyBhIG5ldyBwYXJhZ3JhcGggY29waWVzIHRoZSBwcmV2aW91cyByb3dzJyBsaW5lIG51bWJlclxuICAgIGlmIChub2RlLmRhdGFzZXQgJiYgbm9kZS5kYXRhc2V0LmxpbmVOdW0gJiYgKCFub2RlLnByZXZpb3VzU2libGluZyB8fCBub2RlLnByZXZpb3VzU2libGluZy5kYXRhc2V0LmxpbmVOdW0gIT0gbm9kZS5kYXRhc2V0LmxpbmVOdW0gKSkge1xuICAgICAgcm93ID0gcGFyc2VJbnQobm9kZS5kYXRhc2V0LmxpbmVOdW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aGlsZSAobm9kZS5wcmV2aW91c1NpYmxpbmcpIHtcbiAgICAgICAgcm93Kys7XG4gICAgICAgIG5vZGUgPSBub2RlLnByZXZpb3VzU2libGluZztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtyb3c6IHJvdywgY29sOiBjb2wsIG5vZGU6IHN0YXJ0Tm9kZX07XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgYSBjb2x1bW4gd2l0aGluIGFuIGVkaXRvciBsaW5lIGZyb20gYSBub2RlIGFuZCBvZmZzZXQgd2l0aGluIHRoYXQgbm9kZS5cbiAgICogQHBhcmFtIHtOb2RlfSBzdGFydE5vZGUgVGhlIG5vZGVcbiAgICogQHBhcmFtIHtpbnR9IG9mZnNldCBUSGUgc2VsZWN0aW9uXG4gICAqIEByZXR1cm5zIHtpbnR9IHRoZSBjb2x1bW4sIG9yIG51bGwgaWYgdGhlIG5vZGUgaXMgbm90IGluc2lkZSB0aGUgZWRpdG9yXG4gICAqL1xuICBjb21wdXRlQ29sdW1uKHN0YXJ0Tm9kZSwgb2Zmc2V0KSB7XG4gICAgbGV0IG5vZGUgPSBzdGFydE5vZGU7XG4gICAgbGV0IGNvbCA9IG9mZnNldDtcbiAgICAvLyBGaXJzdCwgbWFrZSBzdXJlIHdlJ3JlIGFjdHVhbGx5IGluIHRoZSBlZGl0b3IuXG4gICAgd2hpbGUgKG5vZGUgJiYgbm9kZS5wYXJlbnROb2RlICE9IHRoaXMuZSkge1xuICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICB9XG4gICAgaWYgKG5vZGUgPT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgXG4gICAgbm9kZSA9IHN0YXJ0Tm9kZTtcbiAgICB3aGlsZSAobm9kZS5wYXJlbnROb2RlICE9IHRoaXMuZSkge1xuICAgICAgaWYgKG5vZGUucHJldmlvdXNTaWJsaW5nKSB7XG4gICAgICAgIG5vZGUgPSBub2RlLnByZXZpb3VzU2libGluZztcbiAgICAgICAgY29sICs9IG5vZGUudGV4dENvbnRlbnQubGVuZ3RoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBET00gbm9kZSBhbmQgb2Zmc2V0IHdpdGhpbiB0aGF0IG5vZGUgZnJvbSBhIHBvc2l0aW9uIGV4cHJlc3NlZCBhcyByb3cgYW5kIGNvbHVtbi5cbiAgICogQHBhcmFtIHtpbnR9IHJvdyBSb3cgKGxpbmUgbnVtYmVyKVxuICAgKiBAcGFyYW0ge2ludH0gY29sIENvbHVtblxuICAgKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCB0d28gcHJvcGVydGllczogbm9kZSBhbmQgb2Zmc2V0LiBvZmZzZXQgbWF5IGJlIG51bGw7XG4gICAqL1xuICBjb21wdXRlTm9kZUFuZE9mZnNldChyb3csIGNvbCwgYmluZFJpZ2h0ID0gZmFsc2UpIHtcbiAgICBpZiAocm93ID49IHRoaXMubGluZUVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgLy8gU2VsZWN0aW9uIHBhc3QgdGhlIGVuZCBvZiB0ZXh0LCBzZXQgc2VsZWN0aW9uIHRvIGVuZCBvZiB0ZXh0XG4gICAgICByb3cgPSB0aGlzLmxpbmVFbGVtZW50cy5sZW5ndGggLSAxO1xuICAgICAgY29sID0gdGhpcy5saW5lc1tyb3ddLmxlbmd0aDtcbiAgICB9IFxuICAgIGlmIChjb2wgPiB0aGlzLmxpbmVzW3Jvd10ubGVuZ3RoKSB7XG4gICAgICBjb2wgPSB0aGlzLmxpbmVzW3Jvd10ubGVuZ3RoO1xuICAgIH1cbiAgICBjb25zdCBwYXJlbnROb2RlID0gdGhpcy5saW5lRWxlbWVudHNbcm93XTtcbiAgICBsZXQgbm9kZSA9IHBhcmVudE5vZGUuZmlyc3RDaGlsZDtcblxuICAgIGxldCBjaGlsZHJlbkNvbXBsZXRlID0gZmFsc2U7XG4gICAgLy8gZGVmYXVsdCByZXR1cm4gdmFsdWVcbiAgICBsZXQgcnYgPSB7bm9kZTogcGFyZW50Tm9kZS5maXJzdENoaWxkID8gcGFyZW50Tm9kZS5maXJzdENoaWxkIDogcGFyZW50Tm9kZSwgb2Zmc2V0OiAwfTtcblxuICAgIHdoaWxlIChub2RlICE9IHBhcmVudE5vZGUpIHtcbiAgICAgIGlmICghY2hpbGRyZW5Db21wbGV0ZSAmJiBub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgICBpZiAobm9kZS5ub2RlVmFsdWUubGVuZ3RoID49IGNvbCkge1xuICAgICAgICAgIGlmIChiaW5kUmlnaHQgJiYgbm9kZS5ub2RlVmFsdWUubGVuZ3RoID09IGNvbCkge1xuICAgICAgICAgICAgLy8gU2VsZWN0aW9uIGlzIGF0IHRoZSBlbmQgb2YgdGhpcyB0ZXh0IG5vZGUsIGJ1dCB3ZSBhcmUgYmluZGluZyByaWdodCAocHJlZmVyIGFuIG9mZnNldCBvZiAwIGluIHRoZSBuZXh0IHRleHQgbm9kZSlcbiAgICAgICAgICAgIC8vIFJlbWVtYmVyIHJldHVybiB2YWx1ZSBpbiBjYXNlIHdlIGRvbid0IGZpbmQgYW5vdGhlciB0ZXh0IG5vZGVcbiAgICAgICAgICAgIHJ2ID0ge25vZGU6IG5vZGUsIG9mZnNldDogY29sfTtcbiAgICAgICAgICAgIGNvbCA9IDA7XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuKHtub2RlOiBub2RlLCBvZmZzZXQ6IGNvbH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2wgLT0gbm9kZS5ub2RlVmFsdWUubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9IFxuICAgICAgaWYgKCFjaGlsZHJlbkNvbXBsZXRlICYmIG5vZGUuZmlyc3RDaGlsZCkge1xuICAgICAgICBub2RlID0gbm9kZS5maXJzdENoaWxkO1xuICAgICAgfSBlbHNlIGlmIChub2RlLm5leHRTaWJsaW5nKSB7XG4gICAgICAgIGNoaWxkcmVuQ29tcGxldGUgPSBmYWxzZTtcbiAgICAgICAgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaGlsZHJlbkNvbXBsZXRlID0gdHJ1ZTtcbiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFaXRoZXIsIHRoZSBwb3NpdGlvbiB3YXMgaW52YWxpZCBhbmQgd2UganVzdCByZXR1cm4gdGhlIGRlZmF1bHQgcmV0dXJuIHZhbHVlXG4gICAgLy8gT3Igd2UgYXJlIGJpbmRpbmcgcmlnaHQgYW5kIHRoZSBzZWxlY3Rpb24gaXMgYXQgdGhlIGVuZCBvZiB0aGUgbGluZVxuICAgIHJldHVybiBydjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZWxlY3Rpb24gYmFzZWQgb24gcm93cyBhbmQgY29sdW1ucyB3aXRoaW4gdGhlIGVkaXRvciBNYXJrZG93biBjb250ZW50LlxuICAgKiBAcGFyYW0ge29iamVjdH0gZm9jdXMgT2JqZWN0IHJlcHJlc2VudGluZyB0aGUgc2VsZWN0aW9uLCBuZWVkcyB0byBoYXZlIHByb3BlcnRpZXMgcm93IGFuZCBjb2wuXG4gICAqIEBwYXJhbSBhbmNob3IgQW5jaG9yIG9mIHRoZSBzZWxlY3Rpb24uIElmIG5vdCBnaXZlbiwgYXNzdW1lcyB0aGUgY3VycmVudCBhbmNob3IuXG4gICAqL1xuICBzZXRTZWxlY3Rpb24oZm9jdXMsIGFuY2hvciA9IG51bGwpIHtcbiAgICBpZiAoIWZvY3VzKSByZXR1cm47XG5cbiAgICBsZXQgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuXG4gICAgbGV0IHtub2RlOiBmb2N1c05vZGUsIG9mZnNldDogZm9jdXNPZmZzZXR9ID0gdGhpcy5jb21wdXRlTm9kZUFuZE9mZnNldChmb2N1cy5yb3csIGZvY3VzLmNvbCwgKGFuY2hvciAmJiBhbmNob3Iucm93ID09IGZvY3VzLnJvdyAmJiBhbmNob3IuY29sID4gZm9jdXMuY29sKSk7IC8vIEJpbmQgc2VsZWN0aW9uIHJpZ2h0IGlmIGFuY2hvciBpcyBpbiB0aGUgc2FtZSByb3cgYW5kIGJlaGluZCB0aGUgZm9jdXNcbiAgICBsZXQgYW5jaG9yTm9kZSA9IG51bGwsIGFuY2hvck9mZnNldCA9IG51bGw7XG4gICAgaWYgKGFuY2hvciAmJiAoYW5jaG9yLnJvdyAhPSBmb2N1cy5yb3cgfHwgYW5jaG9yLmNvbCAhPSBmb2N1cy5jb2wpKSB7XG4gICAgICBsZXQge25vZGUsIG9mZnNldH0gPSB0aGlzLmNvbXB1dGVOb2RlQW5kT2Zmc2V0KGFuY2hvci5yb3csIGFuY2hvci5jb2wsIGZvY3VzLnJvdyA9PSBhbmNob3Iucm93ICYmIGZvY3VzLmNvbCA+IGFuY2hvci5jb2wpO1xuICAgICAgYW5jaG9yTm9kZSA9IG5vZGU7XG4gICAgICBhbmNob3JPZmZzZXQgPSBvZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKGFuY2hvck5vZGUpIHJhbmdlLnNldFN0YXJ0KGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCk7XG4gICAgZWxzZSByYW5nZS5zZXRTdGFydChmb2N1c05vZGUsIGZvY3VzT2Zmc2V0KTtcbiAgICByYW5nZS5zZXRFbmQoZm9jdXNOb2RlLCBmb2N1c09mZnNldCk7XG4gICAgXG4gICAgbGV0IHdpbmRvd1NlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICB3aW5kb3dTZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgd2luZG93U2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKTtcbiAgfVxuXG4gIC8qKiBcbiAgICogRXZlbnQgaGFuZGxlciBmb3IgaW5wdXQgZXZlbnRzIFxuICAgKi9cbiAgaGFuZGxlSW5wdXRFdmVudChldmVudCkge1xuICAgIGxldCBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoKGV2ZW50LmlucHV0VHlwZSA9PSAnaW5zZXJ0UGFyYWdyYXBoJyB8fCBldmVudC5pbnB1dFR5cGUgPT0gJ2luc2VydExpbmVCcmVhaycpICYmIGZvY3VzKSB7XG4gICAgICB0aGlzLmNsZWFyRGlydHlGbGFnKCk7XG4gICAgICB0aGlzLnByb2Nlc3NOZXdQYXJhZ3JhcGgoZm9jdXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMuZS5maXJzdENoaWxkKSB7XG4gICAgICAgIHRoaXMuZS5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz1cIlRNQmxhbmtMaW5lXCI+PGJyPjwvZGl2Pic7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgZm9yIChsZXQgY2hpbGROb2RlID0gdGhpcy5lLmZpcnN0Q2hpbGQ7IGNoaWxkTm9kZTsgY2hpbGROb2RlID0gY2hpbGROb2RlLm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgaWYgKGNoaWxkTm9kZS5ub2RlVHlwZSAhPSAzIHx8IGNoaWxkTm9kZS50YWdOYW1lICE9ICdESVYnKSB7XG4gICAgICAgICAgICAvLyBGb3VuZCBhIGNoaWxkIG5vZGUgdGhhdCdzIGVpdGhlciBub3QgYW4gZWxlbWVudCBvciBub3QgYSBkaXYuIFdyYXAgaXQgaW4gYSBkaXYuXG4gICAgICAgICAgICBsZXQgZGl2V3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgdGhpcy5lLmluc2VydEJlZm9yZShkaXZXcmFwcGVyLCBjaGlsZE5vZGUpO1xuICAgICAgICAgICAgdGhpcy5lLnJlbW92ZUNoaWxkKGNoaWxkTm9kZSk7XG4gICAgICAgICAgICBkaXZXcmFwcGVyLmFwcGVuZENoaWxkKGNoaWxkTm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZUxpbmVDb250ZW50c0FuZEZvcm1hdHRpbmcoKTsgIFxuICAgIH1cbiAgICBpZiAoZm9jdXMpIHRoaXMuc2V0U2VsZWN0aW9uKGZvY3VzKTtcbiAgICB0aGlzLmZpcmVDaGFuZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFdmVudCBoYW5kbGVyIGZvciBcInNlbGVjdGlvbmNoYW5nZVwiIGV2ZW50cy5cbiAgICovXG4gIGhhbmRsZVNlbGVjdGlvbkNoYW5nZUV2ZW50KCkge1xuICAgIHRoaXMuZmlyZVNlbGVjdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIFwic3BsaWNlXCIgbmV3IGxpbmVzIGludG8gdGhlIGFycmF5cyB0aGlzLmxpbmVzLCB0aGlzLmxpbmVEaXJ0eSwgdGhpcy5saW5lVHlwZXMsIGFuZCB0aGUgRE9NIGVsZW1lbnRzIFxuICAgKiB1bmRlcm5lYXRoIHRoZSBlZGl0b3IgZWxlbWVudC5cbiAgICogVGhpcyBtZXRob2QgaXMgZXNzZW50aWFsbHkgQXJyYXkuc3BsaWNlLCBvbmx5IHRoYXQgdGhlIHRoaXJkIHBhcmFtZXRlciB0YWtlcyBhbiB1bi1zcHJlYWQgYXJyYXkgKGFuZCB0aGUgZm9ydGggcGFyYW1ldGVyKVxuICAgKiBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIERPTSBzaG91bGQgYWxzbyBiZSBhZGp1c3RlZC5cbiAgICogXG4gICAqIEBwYXJhbSB7aW50fSBzdGFydExpbmUgUG9zaXRpb24gYXQgd2hpY2ggdG8gc3RhcnQgY2hhbmdpbmcgdGhlIGFycmF5IG9mIGxpbmVzXG4gICAqIEBwYXJhbSB7aW50fSBsaW5lc1RvRGVsZXRlIE51bWJlciBvZiBsaW5lcyB0byBkZWxldGVcbiAgICogQHBhcmFtIHthcnJheX0gbGluZXNUb0luc2VydCBBcnJheSBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgbGluZXMgdG8gYmUgaW5zZXJ0ZWRcbiAgICogQHBhcmFtIHtib29sZWFufSBhZGp1c3RMaW5lRWxlbWVudHMgSWYgdHJ1ZSwgdGhlbiA8ZGl2PiBlbGVtZW50cyBhcmUgYWxzbyBpbnNlcnRlZCBpbiB0aGUgRE9NIGF0IHRoZSByZXNwZWN0aXZlIHBvc2l0aW9uXG4gICAqL1xuICBzcGxpY2VMaW5lcyhzdGFydExpbmUsIGxpbmVzVG9EZWxldGUgPSAwLCBsaW5lc1RvSW5zZXJ0ID0gW10sIGFkanVzdExpbmVFbGVtZW50cyA9IHRydWUpIHtcbiAgICBpZiAoYWRqdXN0TGluZUVsZW1lbnRzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzVG9EZWxldGU7IGkrKykge1xuICAgICAgICB0aGlzLmUucmVtb3ZlQ2hpbGQodGhpcy5lLmNoaWxkTm9kZXNbc3RhcnRMaW5lXSk7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGxldCBpbnNlcnRlZEJsYW5rID0gW107XG4gICAgbGV0IGluc2VydGVkRGlydHkgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXNUb0luc2VydC5sZW5ndGg7IGkrKykge1xuICAgICAgaW5zZXJ0ZWRCbGFuay5wdXNoKCcnKTtcbiAgICAgIGluc2VydGVkRGlydHkucHVzaCh0cnVlKTtcbiAgICAgIGlmIChhZGp1c3RMaW5lRWxlbWVudHMpIHtcbiAgICAgICAgaWYgKHRoaXMuZS5jaGlsZE5vZGVzW3N0YXJ0TGluZV0pIHRoaXMuZS5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksdGhpcy5lLmNoaWxkTm9kZXNbc3RhcnRMaW5lXSk7XG4gICAgICAgIGVsc2UgdGhpcy5lLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxpbmVzLnNwbGljZShzdGFydExpbmUsIGxpbmVzVG9EZWxldGUsIC4uLmxpbmVzVG9JbnNlcnQpO1xuICAgIHRoaXMubGluZVR5cGVzLnNwbGljZShzdGFydExpbmUsIGxpbmVzVG9EZWxldGUsIC4uLmluc2VydGVkQmxhbmspO1xuICAgIHRoaXMubGluZURpcnR5LnNwbGljZShzdGFydExpbmUsIGxpbmVzVG9EZWxldGUsIC4uLmluc2VydGVkRGlydHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV2ZW50IGhhbmRsZXIgZm9yIHRoZSBcInBhc3RlXCIgZXZlbnRcbiAgICovXG4gIGhhbmRsZVBhc3RlKGV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgXG4gICAgLy8gZ2V0IHRleHQgcmVwcmVzZW50YXRpb24gb2YgY2xpcGJvYXJkXG4gICAgbGV0IHRleHQgPSAoZXZlbnQub3JpZ2luYWxFdmVudCB8fCBldmVudCkuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJyk7XG5cbiAgICAvLyBpbnNlcnQgdGV4dCBtYW51YWxseVxuICAgIHRoaXMucGFzdGUodGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogUGFzdGVzIHRoZSB0ZXh0IGF0IHRoZSBjdXJyZW50IHNlbGVjdGlvbiAob3IgYXQgdGhlIGVuZCwgaWYgbm8gY3VycmVudCBzZWxlY3Rpb24pXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFxuICAgKi9cbiAgcGFzdGUodGV4dCwgYW5jaG9yID0gbnVsbCwgZm9jdXMgPSBudWxsKSB7XG4gICAgaWYgKCFhbmNob3IpIGFuY2hvciA9IHRoaXMuZ2V0U2VsZWN0aW9uKHRydWUpO1xuICAgIGlmICghZm9jdXMpIGZvY3VzID0gdGhpcy5nZXRTZWxlY3Rpb24oZmFsc2UpO1xuICAgIGxldCBiZWdpbm5pbmcsIGVuZDtcbiAgICBpZiAoIWZvY3VzKSB7XG4gICAgICBmb2N1cyA9IHsgcm93OiB0aGlzLmxpbmVzLmxlbmd0aCAtIDEsIGNvbDogdGhpcy5saW5lc1t0aGlzLmxpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aCB9OyAvLyBJbnNlcnQgYXQgZW5kXG4gICAgfVxuICAgIGlmICghYW5jaG9yKSB7XG4gICAgICBhbmNob3IgPSBmb2N1cztcbiAgICB9XG4gICAgaWYgKGFuY2hvci5yb3cgPCBmb2N1cy5yb3cgfHwgKGFuY2hvci5yb3cgPT0gZm9jdXMucm93ICYmIGFuY2hvci5jb2wgPD0gZm9jdXMuY29sKSkge1xuICAgICAgYmVnaW5uaW5nID0gYW5jaG9yO1xuICAgICAgZW5kID0gZm9jdXM7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgYmVnaW5uaW5nID0gZm9jdXM7XG4gICAgICBlbmQgPSBhbmNob3I7XG4gICAgfVxuICAgIGxldCBpbnNlcnRlZExpbmVzID0gdGV4dC5zcGxpdCgvKD86XFxyXFxufFxccnxcXG4pLyk7XG4gICAgbGV0IGxpbmVCZWZvcmUgPSB0aGlzLmxpbmVzW2JlZ2lubmluZy5yb3ddLnN1YnN0cigwLCBiZWdpbm5pbmcuY29sKTtcbiAgICBsZXQgbGluZUVuZCA9IHRoaXMubGluZXNbZW5kLnJvd10uc3Vic3RyKGVuZC5jb2wpO1xuICAgIGluc2VydGVkTGluZXNbMF0gPSBsaW5lQmVmb3JlLmNvbmNhdChpbnNlcnRlZExpbmVzWzBdKTtcbiAgICBsZXQgZW5kQ29sUG9zID0gaW5zZXJ0ZWRMaW5lc1tpbnNlcnRlZExpbmVzLmxlbmd0aCAtIDFdLmxlbmd0aDtcbiAgICBpbnNlcnRlZExpbmVzW2luc2VydGVkTGluZXMubGVuZ3RoIC0gMV0gPSBpbnNlcnRlZExpbmVzW2luc2VydGVkTGluZXMubGVuZ3RoIC0gMV0uY29uY2F0KGxpbmVFbmQpO1xuICAgIHRoaXMuc3BsaWNlTGluZXMoYmVnaW5uaW5nLnJvdywgMSArIGVuZC5yb3cgLSBiZWdpbm5pbmcucm93LCBpbnNlcnRlZExpbmVzKTtcbiAgICBmb2N1cy5yb3cgPSBiZWdpbm5pbmcucm93ICsgaW5zZXJ0ZWRMaW5lcy5sZW5ndGggLSAxO1xuICAgIGZvY3VzLmNvbCA9IGVuZENvbFBvcztcbiAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgICB0aGlzLnNldFNlbGVjdGlvbihmb2N1cyk7XG4gICAgdGhpcy5maXJlQ2hhbmdlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZXMgdGhlIChsb3dlc3QgaW4gdGhlIERPTSB0cmVlKSBjb21tb24gYW5jZXN0b3Igb2YgdHdvIERPTSBub2Rlcy5cbiAgICogQHBhcmFtIHtOb2RlfSBub2RlMSB0aGUgZmlyc3Qgbm9kZVxuICAgKiBAcGFyYW0ge05vZGV9IG5vZGUyIHRoZSBzZWNvbmQgbm9kZVxuICAgKiBAcmV0dXJucyB7Tm9kZX0gVGhlIGNvbW1lbiBhbmNlc3RvciBub2RlLCBvciBudWxsIGlmIHRoZXJlIGlzIG5vIGNvbW1vbiBhbmNlc3RvclxuICAgKi9cbiAgY29tcHV0ZUNvbW1vbkFuY2VzdG9yKG5vZGUxLCBub2RlMikge1xuICAgIGlmICghbm9kZTEgfHwgIW5vZGUyKSByZXR1cm4gbnVsbDtcbiAgICBpZiAobm9kZTEgPT0gbm9kZTIpIHJldHVybiBub2RlMTtcbiAgICBjb25zdCBhbmNlc3RyeSA9IChub2RlKSA9PiB7XG4gICAgICBsZXQgYW5jZXN0cnkgPSBbXTtcbiAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgIGFuY2VzdHJ5LnVuc2hpZnQobm9kZSk7XG4gICAgICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG4gICAgICB9XG4gICAgICByZXR1cm4gYW5jZXN0cnk7XG4gICAgfVxuXG4gICAgY29uc3QgYW5jZXN0cnkxID0gYW5jZXN0cnkobm9kZTEpO1xuICAgIGNvbnN0IGFuY2VzdHJ5MiA9IGFuY2VzdHJ5KG5vZGUyKTtcblxuICAgIGlmIChhbmNlc3RyeTFbMF0gIT0gYW5jZXN0cnkyWzBdKSByZXR1cm4gbnVsbDtcbiAgICBsZXQgaTtcbiAgICBmb3IgKGkgPSAwOyBhbmNlc3RyeTFbaV0gPT0gYW5jZXN0cnkyW2ldOyBpKyspO1xuICAgIHJldHVybiBhbmNlc3RyeTFbaS0xXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgKGxvd2VzdCBpbiB0aGUgRE9NIHRyZWUpIGVuY2xvc2luZyBET00gbm9kZSB3aXRoIGEgZ2l2ZW4gY2xhc3MuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmb2N1cyBUaGUgZm9jdXMgc2VsZWN0aW9uIG9iamVjdFxuICAgKiBAcGFyYW0ge29iamVjdH0gYW5jaG9yIFRoZSBhbmNob3Igc2VsZWN0aW9uIG9iamVjdFxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lIFRoZSBjbGFzcyBuYW1lIHRvIGZpbmRcbiAgICogQHJldHVybnMge05vZGV9IFRoZSBlbmNsb3NpbmcgRE9NIG5vZGUgd2l0aCB0aGUgcmVzcGVjdGl2ZSBjbGFzcyAoaW5zaWRlIHRoZSBlZGl0b3IpLCBpZiB0aGVyZSBpcyBvbmU7IG51bGwgb3RoZXJ3aXNlLlxuICAgKi9cbiAgY29tcHV0ZUVuY2xvc2luZ01hcmt1cE5vZGUoZm9jdXMsIGFuY2hvciwgY2xhc3NOYW1lKSB7XG4gICAgbGV0IG5vZGUgPSBudWxsO1xuICAgIGlmICghZm9jdXMpIHJldHVybiBudWxsO1xuICAgIGlmICghYW5jaG9yKSB7XG4gICAgICBub2RlID0gZm9jdXMubm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGZvY3VzLnJvdyAhPSBhbmNob3Iucm93KSByZXR1cm4gbnVsbDtcbiAgICAgIG5vZGUgPSB0aGlzLmNvbXB1dGVDb21tb25BbmNlc3Rvcihmb2N1cy5ub2RlLCBhbmNob3Iubm9kZSk7XG4gICAgfVxuICAgIGlmICghbm9kZSkgcmV0dXJuIG51bGw7XG4gICAgd2hpbGUgKG5vZGUgIT0gdGhpcy5lKSB7XG4gICAgICBpZiAobm9kZS5jbGFzc05hbWUgJiYgbm9kZS5jbGFzc05hbWUuaW5jbHVkZXMoY2xhc3NOYW1lKSkgcmV0dXJuIG5vZGU7XG4gICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgIH1cbiAgICAvLyBBc2NlbmRlZCBhbGwgdGhlIHdheSB0byB0aGUgZWRpdG9yIGVsZW1lbnRcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBzdGF0ZSAodHJ1ZSAvIGZhbHNlKSBvZiBhbGwgY29tbWFuZHMuXG4gICAqIEBwYXJhbSBmb2N1cyBGb2N1cyBvZiB0aGUgc2VsZWN0aW9uLiBJZiBub3QgZ2l2ZW4sIGFzc3VtZXMgdGhlIGN1cnJlbnQgZm9jdXMuXG4gICAqIEBwYXJhbSBhbmNob3IgQW5jaG9yIG9mIHRoZSBzZWxlY3Rpb24uIElmIG5vdCBnaXZlbiwgYXNzdW1lcyB0aGUgY3VycmVudCBhbmNob3IuXG4gICAqL1xuICBnZXRDb21tYW5kU3RhdGUoZm9jdXMgPSBudWxsLCBhbmNob3IgPSBudWxsKSB7XG4gICAgbGV0IGNvbW1hbmRTdGF0ZSA9IHt9O1xuICAgIGlmICghZm9jdXMpIGZvY3VzID0gdGhpcy5nZXRTZWxlY3Rpb24oZmFsc2UpO1xuICAgIGlmICghYW5jaG9yKSBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICBpZiAoIWZvY3VzKSB7XG4gICAgICBmb3IgKGxldCBjbWQgaW4gY29tbWFuZHMpIHtcbiAgICAgICAgY29tbWFuZFN0YXRlW2NtZF0gPSBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbW1hbmRTdGF0ZTtcbiAgICB9XG4gICAgaWYgKCFhbmNob3IpIGFuY2hvciA9IGZvY3VzOyBcbiAgICBcbiAgICBsZXQgc3RhcnQsIGVuZDtcbiAgICBpZiAoYW5jaG9yLnJvdyA8IGZvY3VzLnJvdyB8fCAoYW5jaG9yLnJvdyA9PSBmb2N1cy5yb3cgJiYgYW5jaG9yLmNvbCA8IGZvY3VzLmNvbCkpIHtcbiAgICAgIHN0YXJ0ID0gYW5jaG9yO1xuICAgICAgZW5kID0gZm9jdXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXJ0ID0gZm9jdXM7XG4gICAgICBlbmQgPSBhbmNob3I7XG4gICAgfVxuICAgIGlmIChlbmQucm93ID4gc3RhcnQucm93ICYmIGVuZC5jb2wgPT0gMCkge1xuICAgICAgZW5kLnJvdy0tO1xuICAgICAgZW5kLmNvbCA9IHRoaXMubGluZXNbZW5kLnJvd10ubGVuZ3RoOyAvLyBTZWxlY3Rpb24gdG8gYmVnaW5uaW5nIG9mIG5leHQgbGluZSBpcyBzYWlkIHRvIGVuZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsYXN0IGxpbmVcbiAgICB9XG5cbiAgICBmb3IgKGxldCBjbWQgaW4gY29tbWFuZHMpIHtcbiAgICAgIGlmIChjb21tYW5kc1tjbWRdLnR5cGUgPT0gJ2lubGluZScpIHtcblxuICAgICAgICBpZiAoIWZvY3VzIHx8IGZvY3VzLnJvdyAhPSBhbmNob3Iucm93IHx8ICF0aGlzLmlzSW5saW5lRm9ybWF0dGluZ0FsbG93ZWQoZm9jdXMsIGFuY2hvcikpIHtcbiAgICAgICAgICBjb21tYW5kU3RhdGVbY21kXSA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVGhlIGNvbW1hbmQgc3RhdGUgaXMgdHJ1ZSBpZiB0aGVyZSBpcyBhIHJlc3BlY3RpdmUgZW5jbG9zaW5nIG1hcmt1cCBub2RlIChlLmcuLCB0aGUgc2VsZWN0aW9uIGlzIGVuY2xvc2VkIGluIGEgPGI+Li48L2I+KSAuLi4gXG4gICAgICAgICAgY29tbWFuZFN0YXRlW2NtZF0gPSBcbiAgICAgICAgICAgICEhdGhpcy5jb21wdXRlRW5jbG9zaW5nTWFya3VwTm9kZShmb2N1cywgYW5jaG9yLCBjb21tYW5kc1tjbWRdLmNsYXNzTmFtZSkgfHxcbiAgICAgICAgICAvLyAuLi4gb3IgaWYgaXQncyBhbiBlbXB0eSBzdHJpbmcgcHJlY2VkZWQgYnkgYW5kIGZvbGxvd2VkIGJ5IGZvcm1hdHRpbmcgbWFya2VycywgZS5nLiAqKnwqKiB3aGVyZSB8IGlzIHRoZSBjdXJzb3JcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgZm9jdXMuY29sID09IGFuY2hvci5jb2wgXG4gICAgICAgICAgICAgICYmICEhdGhpcy5saW5lc1tmb2N1cy5yb3ddLnN1YnN0cigwLCBmb2N1cy5jb2wpLm1hdGNoKGNvbW1hbmRzW2NtZF0udW5zZXQucHJlUGF0dGVybilcbiAgICAgICAgICAgICAgJiYgISF0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKGZvY3VzLmNvbCkubWF0Y2goY29tbWFuZHNbY21kXS51bnNldC5wb3N0UGF0dGVybilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gXG4gICAgICBpZiAoY29tbWFuZHNbY21kXS50eXBlID09ICdsaW5lJykge1xuICAgICAgICBpZiAoIWZvY3VzKSB7XG4gICAgICAgICAgY29tbWFuZFN0YXRlW2NtZF0gPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBzdGF0ZSA9IHRoaXMubGluZVR5cGVzW3N0YXJ0LnJvd10gPT0gY29tbWFuZHNbY21kXS5jbGFzc05hbWU7XG4gICAgICAgICAgXG4gICAgICAgICAgZm9yIChsZXQgbGluZSA9IHN0YXJ0LnJvdzsgbGluZSA8PSBlbmQucm93OyBsaW5lICsrKSB7XG4gICAgICAgICAgICBpZiAoKHRoaXMubGluZVR5cGVzW2xpbmVdID09IGNvbW1hbmRzW2NtZF0uY2xhc3NOYW1lKSAhPSBzdGF0ZSkge1xuICAgICAgICAgICAgICBzdGF0ZSA9IG51bGw7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb21tYW5kU3RhdGVbY21kXSA9IHN0YXRlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29tbWFuZFN0YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgYSBjb21tYW5kIHN0YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb21tYW5kIFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN0YXRlIFxuICAgKi9cbiAgc2V0Q29tbWFuZFN0YXRlKGNvbW1hbmQsIHN0YXRlKSB7XG4gICAgaWYgKGNvbW1hbmRzW2NvbW1hbmRdLnR5cGUgPT0gJ2lubGluZScpIHtcbiAgICAgIGxldCBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICAgIGxldCBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKGZhbHNlKTtcbiAgICAgIGlmICghYW5jaG9yKSBhbmNob3IgPSBmb2N1cztcbiAgICAgIGlmICghYW5jaG9yKSByZXR1cm47XG4gICAgICBpZiAoYW5jaG9yLnJvdyAhPSBmb2N1cy5yb3cpIHJldHVybjtcbiAgICAgIGlmICghdGhpcy5pc0lubGluZUZvcm1hdHRpbmdBbGxvd2VkKGZvY3VzLCBhbmNob3IpKSByZXR1cm47IFxuICAgICAgbGV0IG1hcmt1cE5vZGUgPSB0aGlzLmNvbXB1dGVFbmNsb3NpbmdNYXJrdXBOb2RlKGZvY3VzLCBhbmNob3IsIGNvbW1hbmRzW2NvbW1hbmRdLmNsYXNzTmFtZSk7XG4gICAgICB0aGlzLmNsZWFyRGlydHlGbGFnKCk7XG4gICAgICBcbiAgICAgIC8vIEZpcnN0IGNhc2U6IFRoZXJlJ3MgYW4gZW5jbG9zaW5nIG1hcmt1cCBub2RlLCByZW1vdmUgdGhlIG1hcmtlcnMgYXJvdW5kIHRoYXQgbWFya3VwIG5vZGVcbiAgICAgIGlmIChtYXJrdXBOb2RlKSB7XG4gICAgICAgIHRoaXMubGluZURpcnR5W2ZvY3VzLnJvd10gPSB0cnVlO1xuICAgICAgICBjb25zdCBzdGFydENvbCA9IHRoaXMuY29tcHV0ZUNvbHVtbihtYXJrdXBOb2RlLCAwKTtcbiAgICAgICAgY29uc3QgbGVuID0gbWFya3VwTm9kZS50ZXh0Q29udGVudC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGxlZnQgPSB0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKDAsIHN0YXJ0Q29sKS5yZXBsYWNlKGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnByZVBhdHRlcm4sICcnKTtcbiAgICAgICAgY29uc3QgbWlkID0gdGhpcy5saW5lc1tmb2N1cy5yb3ddLnN1YnN0cihzdGFydENvbCwgbGVuKTtcbiAgICAgICAgY29uc3QgcmlnaHQgPSB0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKHN0YXJ0Q29sICsgbGVuKS5yZXBsYWNlKGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnBvc3RQYXR0ZXJuLCAnJyk7XG4gICAgICAgIHRoaXMubGluZXNbZm9jdXMucm93XSA9IGxlZnQuY29uY2F0KG1pZCwgcmlnaHQpO1xuICAgICAgICBhbmNob3IuY29sID0gbGVmdC5sZW5ndGg7XG4gICAgICAgIGZvY3VzLmNvbCA9IGFuY2hvci5jb2wgKyBsZW47XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybWF0dGluZygpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihmb2N1cywgYW5jaG9yKTsgIFxuICAgICAgICB0aGlzLmZpcmVDaGFuZ2UoKTtcblxuICAgICAgLy8gU2Vjb25kIGNhc2U6IEVtcHR5IHNlbGVjdGlvbiB3aXRoIHN1cnJvdW5kaW5nIGZvcm1hdHRpbmcgbWFya2VycywgcmVtb3ZlIHRob3NlXG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBmb2N1cy5jb2wgPT0gYW5jaG9yLmNvbCBcbiAgICAgICAgJiYgISF0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKDAsIGZvY3VzLmNvbCkubWF0Y2goY29tbWFuZHNbY29tbWFuZF0udW5zZXQucHJlUGF0dGVybilcbiAgICAgICAgJiYgISF0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKGZvY3VzLmNvbCkubWF0Y2goY29tbWFuZHNbY29tbWFuZF0udW5zZXQucG9zdFBhdHRlcm4pXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5saW5lRGlydHlbZm9jdXMucm93XSA9IHRydWU7XG4gICAgICAgIGNvbnN0IGxlZnQgPSB0aGlzLmxpbmVzW2ZvY3VzLnJvd10uc3Vic3RyKDAsIGZvY3VzLmNvbCkucmVwbGFjZShjb21tYW5kc1tjb21tYW5kXS51bnNldC5wcmVQYXR0ZXJuLCAnJyk7XG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gdGhpcy5saW5lc1tmb2N1cy5yb3ddLnN1YnN0cihmb2N1cy5jb2wpLnJlcGxhY2UoY29tbWFuZHNbY29tbWFuZF0udW5zZXQucG9zdFBhdHRlcm4sICcnKTtcbiAgICAgICAgdGhpcy5saW5lc1tmb2N1cy5yb3ddID0gbGVmdC5jb25jYXQocmlnaHQpO1xuICAgICAgICBmb2N1cy5jb2wgPSBhbmNob3IuY29sID0gbGVmdC5sZW5ndGg7XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybWF0dGluZygpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihmb2N1cywgYW5jaG9yKTtcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlKCk7XG5cbiAgICAgIC8vIE5vdCBjdXJyZW50bHkgZm9ybWF0dGVkLCBpbnNlcnQgZm9ybWF0dGluZyBtYXJrZXJzXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBcbiAgICAgICAgLy8gVHJpbSBhbnkgc3BhY2VzIGZyb20gdGhlIHNlbGVjdGlvblxuICAgICAgICBsZXQge3N0YXJ0Q29sLCBlbmRDb2x9ID0gZm9jdXMuY29sIDwgYW5jaG9yLmNvbCA/IHtzdGFydENvbDogZm9jdXMuY29sLCBlbmRDb2w6IGFuY2hvci5jb2x9IDoge3N0YXJ0Q29sOiBhbmNob3IuY29sLCBlbmRDb2w6IGZvY3VzLmNvbH07XG5cbiAgICAgICAgbGV0IG1hdGNoID0gdGhpcy5saW5lc1tmb2N1cy5yb3ddLnN1YnN0cihzdGFydENvbCwgZW5kQ29sIC0gc3RhcnRDb2wpLm1hdGNoKC9eKD88bGVhZGluZz5cXHMqKS4qXFxTKD88dHJhaWxpbmc+XFxzKikkLyk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIHN0YXJ0Q29sICs9IG1hdGNoLmdyb3Vwcy5sZWFkaW5nLmxlbmd0aDtcbiAgICAgICAgICBlbmRDb2wgLT0gbWF0Y2guZ3JvdXBzLnRyYWlsaW5nLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvY3VzLmNvbCA9IHN0YXJ0Q29sO1xuICAgICAgICBhbmNob3IuY29sID0gZW5kQ29sO1xuXG4gICAgICAgIC8vIEp1c3QgaW5zZXJ0IG1hcmt1cCBiZWZvcmUgYW5kIGFmdGVyIGFuZCBob3BlIGZvciB0aGUgYmVzdC4gXG4gICAgICAgIHRoaXMud3JhcFNlbGVjdGlvbihjb21tYW5kc1tjb21tYW5kXS5zZXQucHJlLCBjb21tYW5kc1tjb21tYW5kXS5zZXQucG9zdCwgZm9jdXMsIGFuY2hvcik7XG4gICAgICAgIHRoaXMuZmlyZUNoYW5nZSgpO1xuICAgICAgICAvLyBUT0RPIGNsZWFuIHRoaXMgdXAgc28gdGhhdCBtYXJrdXAgcmVtYWlucyBwcm9wZXJseSBuZXN0ZWRcbiAgICAgIH1cblxuICAgIH0gZWxzZSBpZiAoY29tbWFuZHNbY29tbWFuZF0udHlwZSA9PSAnbGluZScpIHtcbiAgICAgIGxldCBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICAgIGxldCBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKGZhbHNlKTtcbiAgICAgIGlmICghYW5jaG9yKSBhbmNob3IgPSBmb2N1cztcbiAgICAgIGlmICghZm9jdXMpIHJldHVybjtcbiAgICAgIHRoaXMuY2xlYXJEaXJ0eUZsYWcoKTtcbiAgICAgIGxldCBzdGFydCA9IGFuY2hvci5yb3cgPiBmb2N1cy5yb3cgPyBmb2N1cyA6IGFuY2hvcjtcbiAgICAgIGxldCBlbmQgPSAgYW5jaG9yLnJvdyA+IGZvY3VzLnJvdyA/IGFuY2hvciA6IGZvY3VzO1xuICAgICAgaWYgKGVuZC5yb3cgPiBzdGFydC5yb3cgJiYgZW5kLmNvbCA9PSAwKSB7XG4gICAgICAgIGVuZC5yb3ctLTtcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgbGluZSA9IHN0YXJ0LnJvdzsgbGluZSA8PSBlbmQucm93OyBsaW5lKyspIHtcbiAgICAgICAgaWYgKHN0YXRlICYmIHRoaXMubGluZVR5cGVzW2xpbmVdICE9IGNvbW1hbmRzW2NvbW1hbmRdLmNsYXNzTmFtZSkge1xuICAgICAgICAgIHRoaXMubGluZXNbbGluZV0gPSB0aGlzLmxpbmVzW2xpbmVdLnJlcGxhY2UoY29tbWFuZHNbY29tbWFuZF0uc2V0LnBhdHRlcm4sIGNvbW1hbmRzW2NvbW1hbmRdLnNldC5yZXBsYWNlbWVudC5yZXBsYWNlKCckIycsIChsaW5lIC0gc3RhcnQucm93ICsgMSkpKTtcbiAgICAgICAgICB0aGlzLmxpbmVEaXJ0eVtsaW5lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzdGF0ZSAmJiB0aGlzLmxpbmVUeXBlc1tsaW5lXSA9PSBjb21tYW5kc1tjb21tYW5kXS5jbGFzc05hbWUpIHtcbiAgICAgICAgICB0aGlzLmxpbmVzW2xpbmVdID0gdGhpcy5saW5lc1tsaW5lXS5yZXBsYWNlKGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnBhdHRlcm4sIGNvbW1hbmRzW2NvbW1hbmRdLnVuc2V0LnJlcGxhY2VtZW50KTtcbiAgICAgICAgICB0aGlzLmxpbmVEaXJ0eVtsaW5lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMudXBkYXRlRm9ybWF0dGluZygpO1xuICAgICAgdGhpcy5zZXRTZWxlY3Rpb24oe3JvdzogZW5kLnJvdywgY29sOiB0aGlzLmxpbmVzW2VuZC5yb3ddLmxlbmd0aH0sIHtyb3c6IHN0YXJ0LnJvdywgY29sOiAwfSk7XG4gICAgICB0aGlzLmZpcmVDaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCBpbmxpbmUgZm9ybWF0dGluZyBpcyBhbGxvd2VkIGF0IHRoZSBjdXJyZW50IGZvY3VzIFxuICAgKiBAcGFyYW0ge29iamVjdH0gZm9jdXMgVGhlIGN1cnJlbnQgZm9jdXNcbiAgICovXG4gIGlzSW5saW5lRm9ybWF0dGluZ0FsbG93ZWQoKSB7XG4gICAgLy8gVE9ETyBSZW1vdmUgcGFyYW1ldGVycyBmcm9tIGFsbCBjYWxsc1xuICAgIGNvbnN0IHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICBpZiAoIXNlbCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgaWYgd2UgY2FuIGZpbmQgYSBjb21tb24gYW5jZXN0b3Igd2l0aCB0aGUgY2xhc3MgYFRNSW5saW5lRm9ybWF0dGVkYCBcblxuICAgIC8vIFNwZWNpYWwgY2FzZTogRW1wdHkgc2VsZWN0aW9uIHJpZ2h0IGJlZm9yZSBgVE1JbmxpbmVGb3JtYXR0ZWRgXG4gICAgaWYgKHNlbC5pc0NvbGxhcHNlZCAmJiBzZWwuZm9jdXNOb2RlLm5vZGVUeXBlID09IDMgJiYgc2VsLmZvY3VzT2Zmc2V0ID09IHNlbC5mb2N1c05vZGUubm9kZVZhbHVlLmxlbmd0aCkge1xuICAgICAgbGV0IG5vZGU7XG4gICAgICBmb3IgKG5vZGUgPSBzZWwuZm9jdXNOb2RlOyBub2RlICYmIG5vZGUubmV4dFNpYmxpbmcgPT0gbnVsbDsgbm9kZSA9IG5vZGUucGFyZW50Tm9kZSk7XG4gICAgICBpZiAobm9kZSAmJiBub2RlLm5leHRTaWJsaW5nLmNsYXNzTmFtZSAmJiBub2RlLm5leHRTaWJsaW5nLmNsYXNzTmFtZS5pbmNsdWRlcygnVE1JbmxpbmVGb3JtYXR0ZWQnKSkgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gTG9vayBmb3IgYSBjb21tb24gYW5jZXN0b3JcbiAgICBsZXQgYW5jZXN0b3IgPSB0aGlzLmNvbXB1dGVDb21tb25BbmNlc3RvcihzZWwuZm9jdXNOb2RlLCBzZWwuYW5jaG9yTm9kZSk7XG4gICAgaWYgKCFhbmNlc3RvcikgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBhbiBhbmNlc3RvciBvZiBjbGFzcyAnVE1JbmxpbmVGb3JtYXR0ZWQnIG9yICdUTUJsYW5rTGluZSdcbiAgICB3aGlsZSAoYW5jZXN0b3IgJiYgYW5jZXN0b3IgIT0gdGhpcy5lKSB7XG4gICAgICBpZiAoYW5jZXN0b3IuY2xhc3NOYW1lICYmIChhbmNlc3Rvci5jbGFzc05hbWUuaW5jbHVkZXMoJ1RNSW5saW5lRm9ybWF0dGVkJykgfHwgYW5jZXN0b3IuY2xhc3NOYW1lLmluY2x1ZGVzKCdUTUJsYW5rTGluZScpKSkgcmV0dXJuIHRydWU7XG4gICAgICBhbmNlc3RvciA9IGFuY2VzdG9yLnBhcmVudE5vZGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyYXBzIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBpbiB0aGUgc3RyaW5ncyBwcmUgYW5kIHBvc3QuIElmIHRoZSBzZWxlY3Rpb24gaXMgbm90IG9uIG9uZSBsaW5lLCByZXR1cm5zLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJlIFRoZSBzdHJpbmcgdG8gaW5zZXJ0IGJlZm9yZSB0aGUgc2VsZWN0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcG9zdCBUaGUgc3RyaW5nIHRvIGluc2VydCBhZnRlciB0aGUgc2VsZWN0aW9uLlxuICAgKiBAcGFyYW0ge29iamVjdH0gZm9jdXMgVGhlIGN1cnJlbnQgc2VsZWN0aW9uIGZvY3VzLiBJZiBudWxsLCBzZWxlY3Rpb24gd2lsbCBiZSBjb21wdXRlZC5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFuY2hvciBUaGUgY3VycmVudCBzZWxlY3Rpb24gZm9jdXMuIElmIG51bGwsIHNlbGVjdGlvbiB3aWxsIGJlIGNvbXB1dGVkLlxuICAgKi9cbiAgd3JhcFNlbGVjdGlvbihwcmUsIHBvc3QsIGZvY3VzID0gbnVsbCwgYW5jaG9yID0gbnVsbCkge1xuICAgIGlmICghZm9jdXMpIGZvY3VzID0gdGhpcy5nZXRTZWxlY3Rpb24oZmFsc2UpO1xuICAgIGlmICghYW5jaG9yKSBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICBpZiAoIWZvY3VzIHx8ICFhbmNob3IgfHwgZm9jdXMucm93ICE9IGFuY2hvci5yb3cpIHJldHVybjtcbiAgICB0aGlzLmxpbmVEaXJ0eVtmb2N1cy5yb3ddID0gdHJ1ZTtcblxuICAgIGNvbnN0IHN0YXJ0Q29sID0gZm9jdXMuY29sIDwgYW5jaG9yLmNvbCA/IGZvY3VzLmNvbCA6IGFuY2hvci5jb2w7XG4gICAgY29uc3QgZW5kQ29sID0gZm9jdXMuY29sIDwgYW5jaG9yLmNvbCA/IGFuY2hvci5jb2wgOiBmb2N1cy5jb2w7XG4gICAgY29uc3QgbGVmdCA9IHRoaXMubGluZXNbZm9jdXMucm93XS5zdWJzdHIoMCwgc3RhcnRDb2wpLmNvbmNhdChwcmUpO1xuICAgIGNvbnN0IG1pZCA9IChlbmRDb2wgPT0gc3RhcnRDb2wgPyAnJyA6IHRoaXMubGluZXNbZm9jdXMucm93XS5zdWJzdHIoc3RhcnRDb2wsIGVuZENvbCAtIHN0YXJ0Q29sKSk7IFxuICAgIGNvbnN0IHJpZ2h0ID0gcG9zdC5jb25jYXQodGhpcy5saW5lc1tmb2N1cy5yb3ddLnN1YnN0cihlbmRDb2wpKTtcbiAgICB0aGlzLmxpbmVzW2ZvY3VzLnJvd10gPSBsZWZ0LmNvbmNhdChtaWQsIHJpZ2h0KTtcbiAgICBhbmNob3IuY29sID0gbGVmdC5sZW5ndGg7XG4gICAgZm9jdXMuY29sID0gYW5jaG9yLmNvbCArIG1pZC5sZW5ndGg7XG5cbiAgICB0aGlzLnVwZGF0ZUZvcm1hdHRpbmcoKTtcbiAgICB0aGlzLnNldFNlbGVjdGlvbihmb2N1cywgYW5jaG9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBjb21tYW5kIHN0YXRlIGZvciBhIGNvbW1hbmQgKHRydWUgPC0+IGZhbHNlKVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29tbWFuZCBUaGUgZWRpdG9yIGNvbW1hbmRcbiAgICovXG4gIHRvZ2dsZUNvbW1hbmRTdGF0ZShjb21tYW5kKSB7XG4gICAgaWYgKCF0aGlzLmxhc3RDb21tYW5kU3RhdGUpIHRoaXMubGFzdENvbW1hbmRTdGF0ZSA9IHRoaXMuZ2V0Q29tbWFuZFN0YXRlKCk7XG4gICAgdGhpcy5zZXRDb21tYW5kU3RhdGUoY29tbWFuZCwgIXRoaXMubGFzdENvbW1hbmRTdGF0ZVtjb21tYW5kXSk7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgYSBjaGFuZ2UgZXZlbnQuIFVwZGF0ZXMgdGhlIGxpbmtlZCB0ZXh0YXJlYSBhbmQgbm90aWZpZXMgYW55IGV2ZW50IGxpc3RlbmVycy5cbiAgICovXG4gIGZpcmVDaGFuZ2UoKSB7XG4gICAgaWYgKCF0aGlzLnRleHRhcmVhICYmICF0aGlzLmxpc3RlbmVycy5jaGFuZ2UubGVuZ3RoKSByZXR1cm47XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0Q29udGVudCgpO1xuICAgIGlmICh0aGlzLnRleHRhcmVhKSB0aGlzLnRleHRhcmVhLnZhbHVlID0gY29udGVudDtcbiAgICBmb3IgKGxldCBsaXN0ZW5lciBvZiB0aGlzLmxpc3RlbmVycy5jaGFuZ2UpIHtcbiAgICAgIGxpc3RlbmVyKHtcbiAgICAgICAgY29udGVudDogY29udGVudCxcbiAgICAgICAgbGluZXNEaXJ0eTogdGhpcy5saW5lc0RpcnR5LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIGEgXCJzZWxlY3Rpb24gY2hhbmdlZFwiIGV2ZW50LlxuICAgKi9cbiAgZmlyZVNlbGVjdGlvbigpIHtcbiAgICBpZiAodGhpcy5saXN0ZW5lcnMuc2VsZWN0aW9uICYmIHRoaXMubGlzdGVuZXJzLnNlbGVjdGlvbi5sZW5ndGgpIHtcbiAgICAgIGxldCBmb2N1cyA9IHRoaXMuZ2V0U2VsZWN0aW9uKGZhbHNlKTtcbiAgICAgIGxldCBhbmNob3IgPSB0aGlzLmdldFNlbGVjdGlvbih0cnVlKTtcbiAgICAgIGxldCBjb21tYW5kU3RhdGUgPSB0aGlzLmdldENvbW1hbmRTdGF0ZShmb2N1cywgYW5jaG9yKTtcbiAgICAgIGlmICh0aGlzLmxhc3RDb21tYW5kU3RhdGUpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmxhc3RDb21tYW5kU3RhdGUsIGNvbW1hbmRTdGF0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxhc3RDb21tYW5kU3RhdGUgPSBPYmplY3QuYXNzaWduKHt9LCBjb21tYW5kU3RhdGUpO1xuICAgICAgfVxuICAgICAgZm9yIChsZXQgbGlzdGVuZXIgb2YgdGhpcy5saXN0ZW5lcnMuc2VsZWN0aW9uKSB7XG4gICAgICAgIGxpc3RlbmVyKHtcbiAgICAgICAgICBmb2N1czogZm9jdXMsXG4gICAgICAgICAgYW5jaG9yOiBhbmNob3IsXG4gICAgICAgICAgY29tbWFuZFN0YXRlOiB0aGlzLmxhc3RDb21tYW5kU3RhdGUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGV2ZW50IGxpc3RlbmVyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSBUaGUgdHlwZSBvZiBldmVudCB0byBsaXN0ZW4gdG8uIENhbiBiZSAnY2hhbmdlJyBvciAnc2VsZWN0aW9uJ1xuICAgKiBAcGFyYW0geyp9IGxpc3RlbmVyIEZ1bmN0aW9uIG9mIHRoZSB0eXBlIChldmVudCkgPT4ge30gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGV2ZW50IG9jY3Vycy5cbiAgICovXG4gIGFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICBpZiAodHlwZS5tYXRjaCgvXig/OmNoYW5nZXxpbnB1dCkkL2kpKSB7XG4gICAgICB0aGlzLmxpc3RlbmVycy5jaGFuZ2UucHVzaChsaXN0ZW5lcik7XG4gICAgfVxuICAgIGlmICh0eXBlLm1hdGNoKC9eKD86c2VsZWN0aW9ufHNlbGVjdGlvbmNoYW5nZSkkL2kpKSB7XG4gICAgICB0aGlzLmxpc3RlbmVycy5zZWxlY3Rpb24ucHVzaChsaXN0ZW5lcik7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVkaXRvcjtcbiJdLCJuYW1lcyI6WyJzdmciLCJibG9ja3F1b3RlIiwiYm9sZCIsImNsZWFyX2Zvcm1hdHRpbmciLCJjb2RlIiwiaDEiLCJoMiIsImhyIiwiaW1hZ2UiLCJpdGFsaWMiLCJsaW5rIiwib2wiLCJzdHJpa2V0aHJvdWdoIiwidWwiLCJpc01hY0xpa2UiLCJ0ZXN0IiwibmF2aWdhdG9yIiwicGxhdGZvcm0iLCJEZWZhdWx0Q29tbWFuZHMiLCJuYW1lIiwiYWN0aW9uIiwiaW5uZXJIVE1MIiwidGl0bGUiLCJob3RrZXkiLCJlZGl0b3IiLCJpc0lubGluZUZvcm1hdHRpbmdBbGxvd2VkIiwid3JhcFNlbGVjdGlvbiIsImVuYWJsZWQiLCJmb2N1cyIsImFuY2hvciIsInBhc3RlIiwiQ29tbWFuZEJhciIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJlIiwiY29tbWFuZHMiLCJidXR0b25zIiwic3RhdGUiLCJob3RrZXlzIiwiZWxlbWVudCIsInRhZ05hbWUiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiYm9keSIsImNyZWF0ZUNvbW1hbmRCYXJFbGVtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImhhbmRsZUtleWRvd24iLCJzZXRFZGl0b3IiLCJwYXJlbnRFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImNvbW1hbmQiLCJlbCIsImFwcGVuZENoaWxkIiwiY29tbWFuZE5hbWUiLCJPYmplY3QiLCJhc3NpZ24iLCJrZXlzIiwic3BsaXQiLCJtb2RpZmllcnMiLCJtb2RpZmllcmV4cGxhbmF0aW9uIiwiaSIsImxlbmd0aCIsInB1c2giLCJtYXRjaCIsImtleSIsInRvTG93ZXJDYXNlIiwiY29uY2F0Iiwiam9pbiIsImhhbmRsZUNsaWNrIiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsInNldENvbW1hbmRTdGF0ZSIsImhhbmRsZVNlbGVjdGlvbiIsImNvbW1hbmRTdGF0ZSIsInVuZGVmaW5lZCIsIm91dGVyIiwibW9kaWZpZXIiLCJjaGVjayIsIml0IiwiTWF0aCIsIm1vZHVsZSIsImdsb2JhbFRoaXMiLCJ3aW5kb3ciLCJzZWxmIiwiZ2xvYmFsIiwidGhpcyIsIkZ1bmN0aW9uIiwiZXhlYyIsImVycm9yIiwiZmFpbHMiLCJyZXF1aXJlIiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJiaW5kIiwiaGFzT3duUHJvcGVydHkiLCJOQVRJVkVfQklORCIsIkZ1bmN0aW9uUHJvdG90eXBlIiwicHJvdG90eXBlIiwiY2FsbCIsInVuY3VycnlUaGlzV2l0aEJpbmQiLCJmbiIsImFwcGx5IiwiYXJndW1lbnRzIiwiZG9jdW1lbnRBbGwiLCJhbGwiLCJJU19IVE1MRERBIiwiJGRvY3VtZW50QWxsIiwiYXJndW1lbnQiLCJpc051bGxPclVuZGVmaW5lZCIsIiRUeXBlRXJyb3IiLCJUeXBlRXJyb3IiLCJyZXF1aXJlT2JqZWN0Q29lcmNpYmxlIiwiJE9iamVjdCIsInVuY3VycnlUaGlzIiwidG9PYmplY3QiLCJoYXNPd24iLCJERVNDUklQVE9SUyIsImdldERlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJFWElTVFMiLCJQUk9QRVIiLCJzb21ldGhpbmciLCJDT05GSUdVUkFCTEUiLCJjb25maWd1cmFibGUiLCJ2YWx1ZSIsIndyaXRhYmxlIiwiZGVmaW5lR2xvYmFsUHJvcGVydHkiLCJTSEFSRUQiLCJzdG9yZSIsImlzQ2FsbGFibGUiLCJmdW5jdGlvblRvU3RyaW5nIiwidG9TdHJpbmciLCJpbnNwZWN0U291cmNlIiwiV2Vha01hcCIsIlN0cmluZyIsImlzT2JqZWN0IiwiYSIsIiRTdHJpbmciLCJhRnVuY3Rpb24iLCJuYW1lc3BhY2UiLCJtZXRob2QiLCJpc1Byb3RvdHlwZU9mIiwidXNlckFnZW50IiwicHJvY2VzcyIsIkRlbm8iLCJ2ZXJzaW9ucyIsInZlcnNpb24iLCJ2OCIsIlY4X1ZFUlNJT04iLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzeW1ib2wiLCJTeW1ib2wiLCJzaGFtIiwiTkFUSVZFX1NZTUJPTCIsIml0ZXJhdG9yIiwiZ2V0QnVpbHRJbiIsIlVTRV9TWU1CT0xfQVNfVUlEIiwiJFN5bWJvbCIsInRyeVRvU3RyaW5nIiwiYUNhbGxhYmxlIiwiViIsIlAiLCJmdW5jIiwiaW5wdXQiLCJwcmVmIiwidmFsIiwidmFsdWVPZiIsIm1vZGUiLCJjb3B5cmlnaHQiLCJsaWNlbnNlIiwic291cmNlIiwiaWQiLCJwb3N0Zml4IiwicmFuZG9tIiwic2hhcmVkIiwidWlkIiwiV2VsbEtub3duU3ltYm9sc1N0b3JlIiwiY3JlYXRlV2VsbEtub3duU3ltYm9sIiwid2l0aG91dFNldHRlciIsImlzU3ltYm9sIiwiZ2V0TWV0aG9kIiwib3JkaW5hcnlUb1ByaW1pdGl2ZSIsIndlbGxLbm93blN5bWJvbCIsIlRPX1BSSU1JVElWRSIsImV4b3RpY1RvUHJpbSIsInJlc3VsdCIsInRvUHJpbWl0aXZlIiwiSUU4X0RPTV9ERUZJTkUiLCJWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyIsImFuT2JqZWN0IiwidG9Qcm9wZXJ0eUtleSIsIiRkZWZpbmVQcm9wZXJ0eSIsIiRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJFTlVNRVJBQkxFIiwiV1JJVEFCTEUiLCJleHBvcnRzIiwiTyIsIkF0dHJpYnV0ZXMiLCJjdXJyZW50IiwiZW51bWVyYWJsZSIsImJpdG1hcCIsImRlZmluZVByb3BlcnR5TW9kdWxlIiwiY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yIiwib2JqZWN0IiwiZiIsIk5BVElWRV9XRUFLX01BUCIsImNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSIsInNoYXJlZEtleSIsIk9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEIiwic2V0IiwiaGFzIiwiZW5mb3JjZSIsImdldHRlckZvciIsIlRZUEUiLCJ0eXBlIiwibWV0YWRhdGEiLCJmYWNhZGUiLCJTVEFURSIsIkNPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FIiwiSW50ZXJuYWxTdGF0ZU1vZHVsZSIsImVuZm9yY2VJbnRlcm5hbFN0YXRlIiwiZ2V0SW50ZXJuYWxTdGF0ZSIsInN0cmluZ1NsaWNlIiwic2xpY2UiLCJyZXBsYWNlIiwiQ09ORklHVVJBQkxFX0xFTkdUSCIsIlRFTVBMQVRFIiwibWFrZUJ1aWx0SW4iLCJvcHRpb25zIiwiZ2V0dGVyIiwic2V0dGVyIiwiYXJpdHkiLCJ0YXJnZXQiLCJkZXNjcmlwdG9yIiwidGhhdCIsImhhc0luZGljZXMiLCJpZ25vcmVDYXNlIiwibXVsdGlsaW5lIiwiZG90QWxsIiwidW5pY29kZSIsInVuaWNvZGVTZXRzIiwic3RpY2t5IiwiZGVmaW5lQnVpbHRJbkFjY2Vzc29yIiwicmVnRXhwRmxhZ3MiLCJSZWdFeHAiLCJSZWdFeHBQcm90b3R5cGUiLCJGT1JDRUQiLCJJTkRJQ0VTX1NVUFBPUlQiLCJjYWxscyIsImV4cGVjdGVkIiwiYWRkR2V0dGVyIiwiY2hyIiwicGFpcnMiLCJyZXBsYWNlbWVudHMiLCJBU0NJSVB1bmN0dWF0aW9uIiwiTm90VHJpZ2dlckNoYXIiLCJTY2hlbWUiLCJFbWFpbCIsIkhUTUxPcGVuVGFnIiwiSFRNTENsb3NlVGFnIiwiSFRNTFRhZ05hbWUiLCJIVE1MQ29tbWVudCIsIkhUTUxQSSIsIkhUTUxEZWNsYXJhdGlvbiIsIkhUTUxDREFUQSIsIkhUTUxBdHRyaWJ1dGUiLCJIVE1MQXR0VmFsdWUiLCJLbm93blRhZyIsInB1bmN0dWF0aW9uTGVhZGluZyIsInB1bmN0dWF0aW9uVHJhaWxpbmciLCJsaW5lR3JhbW1hciIsIlRNSDEiLCJyZWdleHAiLCJyZXBsYWNlbWVudCIsIlRNSDIiLCJUTUgzIiwiVE1INCIsIlRNSDUiLCJUTUg2IiwiVE1CbG9ja3F1b3RlIiwiVE1Db2RlRmVuY2VCYWNrdGlja09wZW4iLCJUTUNvZGVGZW5jZVRpbGRlT3BlbiIsIlRNQ29kZUZlbmNlQmFja3RpY2tDbG9zZSIsIlRNQ29kZUZlbmNlVGlsZGVDbG9zZSIsIlRNQmxhbmtMaW5lIiwiVE1TZXRleHRIMU1hcmtlciIsIlRNU2V0ZXh0SDJNYXJrZXIiLCJUTUhSIiwiVE1VTCIsIlRNT0wiLCJUTUluZGVudGVkQ29kZSIsIlRNTGlua1JlZmVyZW5jZURlZmluaXRpb24iLCJsYWJlbFBsYWNlaG9sZGVyIiwiaHRtbEJsb2NrR3JhbW1hciIsInN0YXJ0IiwiZW5kIiwicGFyYUludGVycnVwdCIsImlubGluZUdyYW1tYXIiLCJlc2NhcGUiLCJhdXRvbGluayIsImh0bWwiLCJsaW5rT3BlbiIsImltYWdlT3BlbiIsImxpbmtMYWJlbCIsImRlZmF1bHQiLCJyZXBsYWNlbWVudFJlZ2V4cCIsImlubGluZVJ1bGVzIiwicnVsZSIsInJlIiwic3RyaW5nIiwiZmxhZ3MiLCJodG1sZXNjYXBlIiwicHJlIiwicG9zdCIsInVuc2V0IiwicHJlUGF0dGVybiIsInBvc3RQYXR0ZXJuIiwicGF0dGVybiIsImgzIiwiaDQiLCJoNSIsImg2IiwiRWRpdG9yIiwidGV4dGFyZWEiLCJsaW5lcyIsImxpbmVFbGVtZW50cyIsImxpbmVUeXBlcyIsImxpbmVDYXB0dXJlcyIsImxpbmVSZXBsYWNlbWVudHMiLCJsaW5rTGFiZWxzIiwibGluZURpcnR5IiwibGFzdENvbW1hbmRTdGF0ZSIsImxpc3RlbmVycyIsImNoYW5nZSIsInNlbGVjdGlvbiIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwicGFyZW50Tm9kZSIsInN0eWxlIiwiZGlzcGxheSIsImNyZWF0ZUVkaXRvckVsZW1lbnQiLCJzZXRDb250ZW50IiwiY29udGVudCIsImNvbnRlbnRFZGl0YWJsZSIsIndoaXRlU3BhY2UiLCJ3ZWJraXRVc2VyTW9kaWZ5IiwibmV4dFNpYmxpbmciLCJpbnNlcnRCZWZvcmUiLCJoYW5kbGVJbnB1dEV2ZW50IiwiaGFuZGxlU2VsZWN0aW9uQ2hhbmdlRXZlbnQiLCJoYW5kbGVQYXN0ZSIsImNoaWxkTm9kZXMiLCJmaXJzdENoaWxkIiwicmVtb3ZlQ2hpbGQiLCJsaW5lTnVtIiwibGUiLCJBcnJheSIsInVwZGF0ZUZvcm1hdHRpbmciLCJmaXJlQ2hhbmdlIiwiZ2V0Q29udGVudCIsInVwZGF0ZUxpbmVUeXBlcyIsInVwZGF0ZUxpbmtMYWJlbHMiLCJhcHBseUxpbmVUeXBlcyIsImwiLCJjYXB0dXJlIiwic3RyIiwicDEiLCJwMiIsInByb2Nlc3NJbmxpbmVTdHlsZXMiLCJjb250ZW50SFRNTCIsInJlbW92ZUF0dHJpYnV0ZSIsImRhdGFzZXQiLCJjb2RlQmxvY2tUeXBlIiwiY29kZUJsb2NrU2VxTGVuZ3RoIiwiaHRtbEJsb2NrIiwibGluZVR5cGUiLCJsaW5lQ2FwdHVyZSIsImxpbmVSZXBsYWNlbWVudCIsImdyb3VwcyIsImh0bWxCbG9ja1R5cGUiLCJoZWFkaW5nTGluZSIsImhlYWRpbmdMaW5lVHlwZSIsInVwZGF0ZUxpbmVDb250ZW50c0FuZEZvcm1hdHRpbmciLCJjbGVhckRpcnR5RmxhZyIsInVwZGF0ZUxpbmVDb250ZW50cyIsInBhcnNlTGlua09ySW1hZ2UiLCJvcmlnaW5hbFN0cmluZyIsImlzSW1hZ2UiLCJ0ZXh0T2Zmc2V0Iiwib3BlbmVyIiwic3Vic3RyIiwiY3VycmVudE9mZnNldCIsImJyYWNrZXRMZXZlbCIsImxpbmtUZXh0IiwibGlua1JlZiIsImxpbmtEZXRhaWxzIiwidGV4dE91dGVyIiwiY2FwIiwibmV4dENoYXIiLCJ0cmltIiwicGFyZW50aGVzaXNMZXZlbCIsImlubGluZU91dGVyIiwidmFsaWQiLCJsYWJlbCIsIm91dHB1dCIsImNoYXJDb3VudCIsInByb2Nlc3NlZCIsInN0YWNrIiwib2Zmc2V0IiwicG90ZW50aWFsTGluayIsInBvdGVudGlhbEltYWdlIiwiZGVsaW1Db3VudCIsImRlbGltU3RyaW5nIiwiY3VycmVudERlbGltaXRlciIsInByZWNlZGluZyIsImZvbGxvd2luZyIsInB1bmN0dWF0aW9uRm9sbG93cyIsInB1bmN0dWF0aW9uUHJlY2VkZXMiLCJ3aGl0ZXNwYWNlRm9sbG93cyIsIndoaXRlc3BhY2VQcmVjZWRlcyIsImNhbk9wZW4iLCJjYW5DbG9zZSIsInN0YWNrUG9pbnRlciIsImRlbGltaXRlciIsImVudHJ5IiwicG9wIiwiY291bnQiLCJjb25zdW1lZCIsImxpbmVEZWx0YSIsImNoaWxkRWxlbWVudENvdW50IiwiZmlyc3RDaGFuZ2VkTGluZSIsInRleHRDb250ZW50IiwibGFzdENoYW5nZWRMaW5lIiwibGluZXNUb0RlbGV0ZSIsImxpbmVzVG9BZGQiLCJzcGxpY2VMaW5lcyIsImxpbmUiLCJjdCIsInByb2Nlc3NOZXdQYXJhZ3JhcGgiLCJzZWwiLCJjb250aW51YWJsZVR5cGUiLCJjaGVja0xpbmUiLCJjb2wiLCJyb3ciLCJwYXJzZUludCIsImdldFNlbGVjdGlvbiIsImdldEFuY2hvciIsInN0YXJ0Tm9kZSIsImFuY2hvck5vZGUiLCJmb2N1c05vZGUiLCJub2RlVHlwZSIsIk5vZGUiLCJURVhUX05PREUiLCJhbmNob3JPZmZzZXQiLCJmb2N1c09mZnNldCIsImNvbXB1dGVDb2x1bW4iLCJub2RlIiwicHJldmlvdXNTaWJsaW5nIiwiY29tcHV0ZU5vZGVBbmRPZmZzZXQiLCJiaW5kUmlnaHQiLCJjaGlsZHJlbkNvbXBsZXRlIiwicnYiLCJub2RlVmFsdWUiLCJzZXRTZWxlY3Rpb24iLCJyYW5nZSIsImNyZWF0ZVJhbmdlIiwic2V0U3RhcnQiLCJzZXRFbmQiLCJ3aW5kb3dTZWxlY3Rpb24iLCJyZW1vdmVBbGxSYW5nZXMiLCJhZGRSYW5nZSIsImlucHV0VHlwZSIsImNoaWxkTm9kZSIsImRpdldyYXBwZXIiLCJmaXJlU2VsZWN0aW9uIiwic3RhcnRMaW5lIiwibGluZXNUb0luc2VydCIsImFkanVzdExpbmVFbGVtZW50cyIsImluc2VydGVkQmxhbmsiLCJpbnNlcnRlZERpcnR5Iiwic3BsaWNlIiwidGV4dCIsIm9yaWdpbmFsRXZlbnQiLCJjbGlwYm9hcmREYXRhIiwiZ2V0RGF0YSIsImJlZ2lubmluZyIsImluc2VydGVkTGluZXMiLCJsaW5lQmVmb3JlIiwibGluZUVuZCIsImVuZENvbFBvcyIsImNvbXB1dGVDb21tb25BbmNlc3RvciIsIm5vZGUxIiwibm9kZTIiLCJhbmNlc3RyeSIsInVuc2hpZnQiLCJhbmNlc3RyeTEiLCJhbmNlc3RyeTIiLCJjb21wdXRlRW5jbG9zaW5nTWFya3VwTm9kZSIsImluY2x1ZGVzIiwiZ2V0Q29tbWFuZFN0YXRlIiwiY21kIiwibWFya3VwTm9kZSIsInN0YXJ0Q29sIiwibGVuIiwibGVmdCIsIm1pZCIsInJpZ2h0IiwiZW5kQ29sIiwibGVhZGluZyIsInRyYWlsaW5nIiwiaXNDb2xsYXBzZWQiLCJhbmNlc3RvciIsInRvZ2dsZUNvbW1hbmRTdGF0ZSIsImxpc3RlbmVyIiwibGluZXNEaXJ0eSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0VBQUEsTUFBTUEsR0FBRyxHQUFHO0VBQ1ZDLEVBQUFBLFVBQVUsRUFBRyxDQUEwUix5UkFBQSxDQUFBO0VBQ3ZTQyxFQUFBQSxJQUFJLEVBQUcsQ0FBeVksd1lBQUEsQ0FBQTtFQUNoWkMsRUFBQUEsZ0JBQWdCLEVBQUcsQ0FBMFgseVhBQUEsQ0FBQTtFQUM3WUMsRUFBQUEsSUFBSSxFQUFHLENBQThVLDZVQUFBLENBQUE7RUFDclZDLEVBQUFBLEVBQUUsRUFBRyxDQUErSiw4SkFBQSxDQUFBO0VBQ3BLQyxFQUFBQSxFQUFFLEVBQUcsQ0FBaUssZ0tBQUEsQ0FBQTtFQUN0S0MsRUFBQUEsRUFBRSxFQUFHLENBQWdJLCtIQUFBLENBQUE7RUFDcklDLEVBQUFBLEtBQUssRUFBRyxDQUE4SCw2SEFBQSxDQUFBO0VBQ3RJQyxFQUFBQSxNQUFNLEVBQUcsQ0FBZ0gsK0dBQUEsQ0FBQTtFQUN6SEMsRUFBQUEsSUFBSSxFQUFHLENBQTB1Qyx5dUNBQUEsQ0FBQTtFQUNqdkNDLEVBQUFBLEVBQUUsRUFBRyxDQUFvdEIsbXRCQUFBLENBQUE7RUFDenRCQyxFQUFBQSxhQUFhLEVBQUcsQ0FBMlgsMFhBQUEsQ0FBQTtFQUMzWUMsRUFBQUEsRUFBRSxFQUFHLENBQUEsMlFBQUEsQ0FBQTtF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