dcl-npc-toolkit 1.1.2-20230608172751.commit-11d3b8b → 1.1.2-20230611212342.commit-1784622

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.
Files changed (2) hide show
  1. package/dist/npc.js +2 -2
  2. package/package.json +2 -2
package/dist/npc.js CHANGED
@@ -341,7 +341,7 @@ export function isActiveNpcSet() {
341
341
  return activeNPC && npcDialogComponent.has(activeNPC);
342
342
  }
343
343
  export function activate(npc) {
344
- if (activeNPC) {
344
+ if (activeNPC != 0) {
345
345
  console.log('we have a current npc, needto remove');
346
346
  endInteraction(activeNPC);
347
347
  }
@@ -466,4 +466,4 @@ export function closeDialogWindow(window) {
466
466
  closeDialog(dialog);
467
467
  }
468
468
  }
469
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25wYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQVUsYUFBYSxFQUFjLFlBQVksRUFBQyxZQUFZLEVBQStCLG1CQUFtQixFQUFDLFNBQVMsRUFBaUIsTUFBTSxjQUFjLENBQUE7QUFDck0sT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzNELE9BQU8sRUFBOEMsV0FBVyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQWUsTUFBTSxTQUFTLENBQUM7QUFDbEgsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6SCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBdUIsSUFBSSxHQUFHLEVBQUUsQ0FBQTtBQUMxRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBcUIsSUFBSSxHQUFHLEVBQUUsQ0FBQTtBQUMzRCxNQUFNLENBQUMsSUFBSSxRQUFRLEdBQVUsQ0FBVyxDQUFBO0FBQ3hDLE1BQU0sQ0FBQyxJQUFJLFNBQVMsR0FBVSxRQUFR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LENBQUMsQ0FBQTtTQUM3QztRQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFBO0tBQ2hDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxNQUFhO0lBQzNDLElBQUksTUFBTSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMzQyxJQUFHLE1BQU0sRUFBQztRQUNOLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtLQUN0QjtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3RFY3MgZnJvbSAnQGRjbC9zZGsvcmVhY3QtZWNzJ1xuaW1wb3J0IHsgQW5pbWF0b3IsIEF2YXRhclNoYXBlLCBlbmdpbmUsIEVudGl0eSwgR2x0ZkNvbnRhaW5lciwgSW5wdXRBY3Rpb24sTWVzaENvbGxpZGVyLE1lc2hSZW5kZXJlcixQQkF2YXRhclNoYXBlLFBCR2x0ZkNvbnRhaW5lcixwb2ludGVyRXZlbnRzU3lzdGVtLFRyYW5zZm9ybSwgVHJhbnNmb3JtVHlwZSB9IGZyb20gJ0BkY2wvc2RrL2VjcydcbmltcG9ydCB7IENvbG9yMywgUXVhdGVybmlvbiwgVmVjdG9yMyB9IGZyb20gJ0BkY2wvc2RrL21hdGgnXG5pbXBvcnQgeyBEaWFsb2csIEZvbGxvd1BhdGhEYXRhLCBJbWFnZURhdGEsIE5QQ0RhdGEsIE5QQ1BhdGhUeXBlLCBOUENTdGF0ZSwgTlBDVHlwZSwgVHJpZ2dlckRhdGEgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gJ0BkY2wtc2RrL3V0aWxzJ1xuaW1wb3J0IHsgSXNGb2xsb3dpbmdQYXRoLCBUcmFja1VzZXJGbGFnIH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IGZhY2VVc2VyU3lzdGVtLCBoYW5kbGVCdWJibGV0eXBpbmcsIGhhbmRsZURpYWxvZ1R5cGluZywgaGFuZGxlUGF0aFRpbWVzLCBpbnB1dExpc3RlbmVyU3lzdGVtIH0gZnJvbSAnLi9zeXN0ZW1zJztcbmltcG9ydCB7IGFkZERpYWxvZywgY2xvc2VEaWFsb2csIGZpbmREaWFsb2dCeU5hbWUsIG5wY0RpYWxvZ0NvbXBvbmVudCwgb3BlbkRpYWxvZyB9IGZyb20gJy4vZGlhbG9nJztcbmltcG9ydCB7IGJ1YmJsZXMsIGNsb3NlQnViYmxlLCBjcmVhdGVEaWFsb2dCdWJibGUsIG9wZW5CdWJibGUgfSBmcm9tICcuL2J1YmJsZSc7XG5pbXBvcnQgeyBkYXJrVGhlbWUsIGxpZ2h0VGhlbWUgfSBmcm9tICcuL3VpJztcblxuZXhwb3J0IGNvbnN0IHdhbGtpbmdUaW1lcnM6IE1hcDxFbnRpdHksbnVtYmVyPiA9IG5ldyBNYXAoKVxuZXhwb3J0IGNvbnN0IG5wY0RhdGFDb21wb25lbnQ6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcbmV4cG9ydCBsZXQgTlVMTF9OUEM6RW50aXR5ID0gMCBhcyBFbnRpdHlcbmV4cG9ydCBsZXQgYWN0aXZlTlBDOkVudGl0eSA9IE5VTExfTlBDXG5leHBvcnQgbGV0IGJsYW5rRGlhbG9nOm51bWJlciA9IDBcblxuZW5naW5lLmFkZFN5c3RlbShoYW5kbGVQYXRoVGltZXMpXG5lbmdpbmUuYWRkU3lzdGVtKGhhbmRsZURpYWxvZ1R5cGluZylcbmVuZ2luZS5hZGRTeXN0ZW0oaGFuZGxlQnViYmxldHlwaW5nKVxuZW5naW5lLmFkZFN5c3RlbShmYWNlVXNlclN5c3RlbSlcbmVuZ2luZS5hZGRTeXN0ZW0oaW5wdXRMaXN0ZW5lclN5c3RlbSlcblxuLy9UT0RPIE1BS0UgaXNDb29sZG93biBhbmQgbm8gbG9uZ2VyIGhhdmUgdG8gdHJhY2sgd2l0aCBtYXAgdG8gcmVtb3ZlIG1lbW9yeSBsZWFrIGlzc3Vlc1xuY29uc3QgaXNDb29sZG93bjogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuY29uc3Qgb25BY3RpdmF0ZUNiczogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuY29uc3Qgb25XYWxrQXdheUNiczogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuY29uc3QgYW5pbVRpbWVyczogTWFwPEVudGl0eSxudW1iZXI+ID0gbmV3IE1hcCgpXG5jb25zdCBwb2ludFJlYWNoZWRDYWxsYmFja3M6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcbmNvbnN0IG9uRmluaXNoQ2FsbGJhY2tzOiBNYXA8RW50aXR5LCBhbnk+ID0gbmV3IE1hcCgpXG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93RGVidWcoZGVidWc6Ym9vbGVhbil7XG4gICAgdXRpbHMudHJpZ2dlcnMuZW5hYmxlRGVidWdEcmF3KGRlYnVnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0YShucGM6RW50aXR5KXtcbiAgICByZXR1cm4gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlKFxuICAgIHRyYW5zZm9ybTogYW55LFxuICAgIGRhdGE6IE5QQ0RhdGFcbil7XG4gICAgbGV0IG5wYyA9IGVuZ2luZS5hZGRFbnRpdHkoKVxuXG4gICAgbGV0IHQ6VHJhbnNmb3JtVHlwZSA9IHtwb3NpdGlvbjogdHJhbnNmb3JtLnBvc2l0aW9uID8gdHJhbnNmb3JtLnBvc2l0aW9uIDogVmVjdG9yMy5jcmVhdGUoMCwwLDApLCByb3RhdGlvbjogdHJhbnNmb3JtLnJvdGF0aW9uID8gdHJhbnNmb3JtLnJvdGF0aW9uIDogUXVhdGVybmlvbi5aZXJvKCksIHNjYWxlOiB0cmFuc2Zvcm0uc2NhbGUgPyB0cmFuc2Zvcm0uc2NhbGUgOiBWZWN0b3IzLk9uZSgpfVxuICAgIFRyYW5zZm9ybS5jcmVhdGUobnBjLCB0KVxuXG4gICAgbnBjRGF0YUNvbXBvbmVudC5zZXQobnBjLHtcbiAgICAgICAgaW50cm9kdWNlZDogZmFsc2UsXG4gICAgICAgIGluQ29vbGRvd246IGZhbHNlLFxuICAgICAgICBjb29sRG93bkR1cmF0aW9uOiBkYXRhICYmIGRhdGEuY29vbERvd25EdXJhdGlvbiA/IGRhdGEuY29vbERvd25EdXJhdGlvbiA6IDUsXG4gICAgICAgIGZhY2VVc2VyOiBkYXRhICYmIGRhdGEuZmFjZVVzZXIgPyBkYXRhLmZhY2VVc2VyIDogdW5kZWZpbmVkLFxuICAgICAgICB3YWxraW5nU3BlZWQ6MixcbiAgICAgICAgd2Fsa2luZ0FuaW06IGRhdGEgJiYgZGF0YS53YWxraW5nQW5pbSA/IGRhdGEud2Fsa2luZ0FuaW0gOiB1bmRlZmluZWQsXG4gICAgICAgIHBhdGhEYXRhOiBkYXRhLnBhdGhEYXRhID8gZGF0YS5wYXRoRGF0YSA6IHVuZGVmaW5lZCxcbiAgICAgICAgY3VycmVudFBhdGhEYXRhOiBbXSxcbiAgICAgICAgbWFudWFsU3RvcDpmYWxzZSxcbiAgICAgICAgcGF0aEluZGV4OjAsXG4gICAgICAgIHN0YXRlOk5QQ1N0YXRlLlNUQU5ESU5HLFxuICAgICAgICBpZGxlQW5pbTogZGF0YSAmJiBkYXRhLmlkbGVBbmltID8gZGF0YS5pZGxlQW5pbSA6IFwiSWRsZVwiLFxuICAgICAgICBidWJibGVIZWlnaHQ6IGRhdGEgJiYgZGF0YS50ZXh0QnViYmxlICYmIGRhdGEuYnViYmxlSGVpZ2h0ID8gZGF0YS5idWJibGVIZWlnaHQgOiB1bmRlZmluZWQsXG4gICAgICAgIGJ1YmJsZVNvdW5kOiBkYXRhLmRpYWxvZ1NvdW5kID8gZGF0YS5kaWFsb2dTb3VuZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgaGFzQnViYmxlOiBkYXRhICYmIGRhdGEudGV4dEJ1YmJsZSA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgdHVyblNwZWVkOiBkYXRhICYmIGRhdGEudHVybmluZ1NwZWVkID8gZGF0YS50dXJuaW5nU3BlZWQgOiAyLFxuICAgICAgICB0aGVtZTogZGF0YS5kYXJrVUkgPyBkYXJrVGhlbWUgOiBsaWdodFRoZW1lXG4gICAgfSlcblxuICAgIGlmKGRhdGEgJiYgZGF0YS5ub1VJKXt9XG4gICAgZWxzZSBpZihkYXRhICYmIGRhdGEucG9ydHJhaXQpe1xuICAgICAgICAgICAgYWRkRGlhbG9nKG5wYywgZGF0YSAmJiBkYXRhLmRpYWxvZ1NvdW5kID8gZGF0YS5kaWFsb2dTb3VuZCA6IHVuZGVmaW5lZCwgdHlwZW9mIGRhdGEucG9ydHJhaXQgPT09IGBzdHJpbmdgID8geyBwYXRoOiBkYXRhLnBvcnRyYWl0IH0gOiBkYXRhLnBvcnRyYWl0KVxuICAgICAgICB9XG4gICAgZWxzZXtcbiAgICAgICAgYWRkRGlhbG9nKG5wYywgZGF0YSAmJiBkYXRhLmRpYWxvZ1NvdW5kID8gZGF0YS5kaWFsb2dTb3VuZCA6IHVuZGVmaW5lZClcbiAgICB9XG5cbiAgICBpZiAoZGF0YSAmJiBkYXRhLnRleHRCdWJibGUpIHtcbiAgICAgICAgY3JlYXRlRGlhbG9nQnViYmxlKG5wYywgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5idWJibGVIZWlnaHQpXG4gICAgICB9XG5cbiAgICBvbkFjdGl2YXRlQ2JzLnNldChucGMsICgpPT57XG4gICAgICAgIGRhdGEub25BY3RpdmF0ZSgpXG4gICAgfSlcblxuICAgIGlmIChkYXRhICYmIGRhdGEuaGFzT3duUHJvcGVydHkoXCJvbldhbGtBd2F5XCIpKSB7XG4gICAgICAgIG9uV2Fsa0F3YXlDYnMuc2V0KG5wYywgKCk9PntcbiAgICAgICAgICAgIGlmKCFkYXRhIHx8ICFkYXRhLmNvbnRpbnVlT25XYWxrQXdheSl7XG4gICAgICAgICAgICAgICAgaWYobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKXtcbiAgICAgICAgICAgICAgICAgICAgbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpLnZpc2libGUgPSBmYWxzZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgICAgaWYobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKXtcbiAgICAgICAgICAgICAgICAgICAgbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpLnZpc2libGUgPSBmYWxzZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRhdGEub25XYWxrQXdheSEoKVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGFkZE5QQ0JvbmVzKG5wYywgZGF0YSlcbiAgICBhZGRDbGlja1JlYWN0aW9ucyhucGMsIGRhdGEpXG4gICAgYWRkVHJpZ2dlckFyZWEobnBjLCBkYXRhKVxuICAgIFxuICAgIGlmIChkYXRhICYmIGRhdGEucGF0aERhdGEgJiYgZGF0YS5wYXRoRGF0YS5zcGVlZCkge1xuICAgICAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICAgICAgbnBjRGF0YS53YWxraW5nU3BlZWQgPSBkYXRhLnBhdGhEYXRhLnNwZWVkXG4gICAgfVxuXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5jb29sRG93bkR1cmF0aW9uKSB7XG4gICAgICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgICAgICBucGNEYXRhLmNvb2xEb3duRHVyYXRpb24gPSBkYXRhLmNvb2xEb3duRHVyYXRpb25cbiAgICB9XG5cbiAgICBpZiAoZGF0YSAmJiBkYXRhLnBhdGhEYXRhKXtcbiAgICAgICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgICAgIG5wY0RhdGEucGF0aERhdGEubG9vcCA9IHRydWVcbiAgICAgICAgZm9sbG93UGF0aChucGMsIG5wY0RhdGEucGF0aERhdGEpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5wY1xufVxuXG5mdW5jdGlvbiBhZGROUENCb25lcyhucGM6RW50aXR5LCBkYXRhOk5QQ0RhdGEpe1xuICAgIGNvbnN0IG1vZGVsSXNTdHJpbmcgPSBkYXRhICYmIGRhdGEubW9kZWwgJiYgdHlwZW9mIGRhdGEubW9kZWwgPT09IGBzdHJpbmdgXG4gICAgY29uc3QgbW9kZWxBdmF0YXJEYXRhOlBCQXZhdGFyU2hhcGV8dW5kZWZpbmVkID0gbW9kZWxJc1N0cmluZyA/IHVuZGVmaW5lZCA6IGRhdGEubW9kZWwgJiYgKGRhdGEubW9kZWwgYXMgYW55KS5ib2R5U2hhcGUgPyBkYXRhLm1vZGVsIGFzIFBCQXZhdGFyU2hhcGUgOiB1bmRlZmluZWRcbiAgICBjb25zdCBtb2RlbEdMVEZEYXRhOlBCR2x0ZkNvbnRhaW5lcnx1bmRlZmluZWQgPSBtb2RlbElzU3RyaW5nID8gdW5kZWZpbmVkIDogZGF0YS5tb2RlbCAmJiAoZGF0YS5tb2RlbCBhcyBhbnkpLnNyYyA/IGRhdGEubW9kZWwgYXMgUEJHbHRmQ29udGFpbmVyIDogdW5kZWZpbmVkXG5cbiAgICBzd2l0Y2goZGF0YS50eXBlKXtcbiAgICAgICAgY2FzZSBOUENUeXBlLkFWQVRBUjpcbiAgICAgICAgICAgIEF2YXRhclNoYXBlLmNyZWF0ZShucGMsIFxuICAgICAgICAgICAgICAgICFkYXRhIHx8ICFkYXRhLm1vZGVsIHx8ICFtb2RlbEF2YXRhckRhdGEgPyBcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IFwibnBjXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJOUENcIixcbiAgICAgICAgICAgICAgICBib2R5U2hhcGU6XCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6QmFzZU1hbGVcIixcbiAgICAgICAgICAgICAgICBlbW90ZXM6IFtdLFxuICAgICAgICAgICAgICAgIHdlYXJhYmxlczogW1xuICAgICAgICAgICAgICAgICAgICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpmX2V5ZXNfMDBcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6Zl9leWVicm93c18wMFwiLFxuICAgICAgICAgICAgICAgICAgICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpmX21vdXRoXzAwXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmNvbWZ5X3Nwb3J0X3NhbmRhbHNcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6c29jY2VyX3BhbnRzXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmVsZWdhbnRfc3dlYXRlclwiLFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIH0gOiBtb2RlbEF2YXRhckRhdGFcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgTlBDVHlwZS5DVVNUT006XG4gICAgICAgICAgICBHbHRmQ29udGFpbmVyLmNyZWF0ZShucGMsIFxuICAgICAgICAgICAgICAgIG1vZGVsSXNTdHJpbmcgJiYgdHlwZW9mIGRhdGEubW9kZWwgPT09IGBzdHJpbmdgID8gXG4gICAgICAgICAgICAgICAgICAgIHsgICBzcmM6IGRhdGEgJiYgZGF0YS5tb2RlbCA/IGRhdGEubW9kZWwgOiBcIlwiICB9XG4gICAgICAgICAgICAgICAgICAgIDogbW9kZWxHTFRGRGF0YVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIEFuaW1hdG9yLmNyZWF0ZShucGMsIHtcbiAgICAgICAgICAgICAgICBzdGF0ZXM6W3tcbiAgICAgICAgICAgICAgICAgICAgbmFtZTpkYXRhICYmIGRhdGEuaWRsZUFuaW0gPyBkYXRhLmlkbGVBbmltIDogJ0lkbGUnLFxuICAgICAgICAgICAgICAgICAgICBjbGlwOmRhdGEgJiYgZGF0YS5pZGxlQW5pbSA/IGRhdGEuaWRsZUFuaW0gOiAnSWRsZScsXG4gICAgICAgICAgICAgICAgICAgIGxvb3A6dHJ1ZVxuICAgICAgICAgICAgICAgIH1dXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICAgICAgICAgIG5wY0RhdGEuaWRsZUFuaW0gPSBkYXRhICYmIGRhdGEuaWRsZUFuaW0gPyBkYXRhLmlkbGVBbmltIDogJ0lkbGUnXG4gICAgICAgICAgICBucGNEYXRhLmxhc3RQbGF5ZWRBbmltID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5pZGxlQW5pbVxuXG4gICAgICAgICAgICBBbmltYXRvci5wbGF5U2luZ2xlQW5pbWF0aW9uKG5wYywgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5pZGxlQW5pbSlcblxuXG4gICAgICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLndhbGtpbmdBbmltKSB7XG4gICAgICAgICAgICAgICAgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS53YWxraW5nQW5pbSA9IGRhdGEud2Fsa2luZ0FuaW1cbiAgICAgICAgICAgICAgICBsZXQgYW5pbWF0aW9ucyA9IEFuaW1hdG9yLmdldE11dGFibGUobnBjKVxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbnMuc3RhdGVzLnB1c2goe25hbWU6ZGF0YS53YWxraW5nQW5pbSwgY2xpcDogZGF0YS53YWxraW5nQW5pbSwgbG9vcDp0cnVlfSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBOUENUeXBlLkJMQU5LOlxuICAgICAgICAgICAgTWVzaFJlbmRlcmVyLnNldEJveChucGMpXG4gICAgICAgICAgICBNZXNoQ29sbGlkZXIuc2V0Qm94KG5wYylcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgfVxufVxuXG5mdW5jdGlvbiBhZGRDbGlja1JlYWN0aW9ucyhucGM6RW50aXR5LCBkYXRhOk5QQ0RhdGEpe1xuICAgIGxldCBhY3RpdmF0ZUJ1dHRvbiA9IGRhdGEgJiYgZGF0YS5vbmx5Q2xpY2tUcmlnZ2VyID8gSW5wdXRBY3Rpb24uSUFfUE9JTlRFUiA6IElucHV0QWN0aW9uLklBX1BSSU1BUllcblxuICAgIHBvaW50ZXJFdmVudHNTeXN0ZW0ub25Qb2ludGVyRG93bihcbiAgICAgICAgbnBjLFxuICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoaXNDb29sZG93bi5oYXMobnBjKSB8fCAobnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpLnZpc2libGUpKSByZXR1cm5cbiAgICAgICAgICAgIGFjdGl2YXRlKG5wYylcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgYnV0dG9uOiBhY3RpdmF0ZUJ1dHRvbixcbiAgICAgICAgICAgIGhvdmVyVGV4dDogZGF0YSAmJiBkYXRhLmhvdmVyVGV4dCA/IGRhdGEuaG92ZXJUZXh0IDogJ1RhbGsnLFxuICAgICAgICAgICAgc2hvd0ZlZWRiYWNrOiBkYXRhICYmIGRhdGEub25seUV4dGVybmFsVHJpZ2dlciA/IGZhbHNlIDogdHJ1ZSxcbiAgICAgICAgfVxuICAgICAgICApXG5cbiAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5vbmx5RXh0ZXJuYWxUcmlnZ2VyKSB7XG4gICAgICAgIHBvaW50ZXJFdmVudHNTeXN0ZW0ucmVtb3ZlT25Qb2ludGVyRG93bihucGMpXG4gICAgICAgIH0gXG59XG5cbmZ1bmN0aW9uIGFkZFRyaWdnZXJBcmVhKG5wYzpFbnRpdHksIGRhdGE6TlBDRGF0YSl7XG5cbiAgICAgICAgbGV0IHRyaWdnZXJEYXRhOiBUcmlnZ2VyRGF0YSA9IHt9XG5cbiAgICAgICAgaWYgKCFkYXRhIHx8IChkYXRhICYmICFkYXRhLm9ubHlFeHRlcm5hbFRyaWdnZXIgJiYgIWRhdGEub25seUNsaWNrVHJpZ2dlciAmJiAhZGF0YS5vbmx5RVRyaWdnZXIpKXtcbiAgICAgICAgb25BY3RpdmF0ZUNicy5zZXQobnBjLCAoKT0+e1xuICAgICAgICAgICAgaWYgKGlzQ29vbGRvd24uaGFzKG5wYykpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhucGMsICcgaW4gY29vbGRvd24nKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIChucGNEaWFsb2dDb21wb25lbnQuaGFzKG5wYykgJiYgbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpLnZpc2libGUpIHx8XG4gICAgICAgICAgICAgICAgKGRhdGEgJiYgZGF0YS5vbmx5RXh0ZXJuYWxUcmlnZ2VyKSB8fFxuICAgICAgICAgICAgICAgIChkYXRhICYmIGRhdGEub25seUNsaWNrVHJpZ2dlcilcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGF0YS5vbkFjdGl2YXRlKClcbiAgICAgICAgfSlcbiAgICAgICAgdHJpZ2dlckRhdGEub25DYW1lcmFFbnRlciA9IG9uQWN0aXZhdGVDYnMuZ2V0KG5wYylcbiAgICAgICAgfVxuXG4gICAgLy8gd2hlbiBleGl0aW5nIHRyaWdnZXJcbiAgICBpZiAoIWRhdGEgfHwgKGRhdGEgJiYgIWRhdGEuY29udGludWVPbldhbGtBd2F5KSkge1xuICAgICAgICB0cmlnZ2VyRGF0YS5vbkNhbWVyYUV4aXQgPSAoKSA9PiB7XG4gICAgICAgICAgICBoYW5kbGVXYWxrQXdheShucGMpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB3aGVuIGVudGVyaW5nIHRyaWdnZXJcbiAgICBpZiAoXG4gICAgICAgICFkYXRhIHx8XG4gICAgICAgIChkYXRhICYmICFkYXRhLm9ubHlFeHRlcm5hbFRyaWdnZXIgJiYgIWRhdGEub25seUNsaWNrVHJpZ2dlciAmJiAhZGF0YS5vbmx5RVRyaWdnZXIpXG4gICAgKSB7XG4gICAgICAgIHRyaWdnZXJEYXRhLm9uQ2FtZXJhRW50ZXIgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNDb29sZG93bi5oYXMobnBjKSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG5wYywgJyBpbiBjb29sZG93bicpXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9IFxuICAgICAgICAgICAgLy8gZWxzZSBpZiAoXG4gICAgICAgICAgICAvLyAgICAgKHRoaXMuZGlhbG9nICYmIHRoaXMuZGlhbG9nLmlzRGlhbG9nT3BlbikgfHxcbiAgICAgICAgICAgIC8vICAgICAoZGF0YSAmJiBkYXRhLm9ubHlFeHRlcm5hbFRyaWdnZXIpIHx8XG4gICAgICAgICAgICAvLyAgICAgKGRhdGEgJiYgZGF0YS5vbmx5Q2xpY2tUcmlnZ2VyKVxuICAgICAgICAgICAgLy8gKSB7XG4gICAgICAgICAgICAvLyAgICAgcmV0dXJuXG4gICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICBhY3RpdmF0ZShucGMpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBhZGQgdHJpZ2dlclxuICAgIGlmICh0cmlnZ2VyRGF0YS5vbkNhbWVyYUVudGVyIHx8IHRyaWdnZXJEYXRhLm9uQ2FtZXJhRXhpdCkge1xuICAgICAgICB1dGlscy50cmlnZ2Vycy5hZGRUcmlnZ2VyKG5wYywyNTQsMSxbe3R5cGU6J3NwaGVyZScsIHBvc2l0aW9uOiBWZWN0b3IzLlplcm8oKSwgcmFkaXVzOiBkYXRhLnJlYWN0RGlzdGFuY2UgIT0gdW5kZWZpbmVkID8gZGF0YS5yZWFjdERpc3RhbmNlIDogNn1dLCB0cmlnZ2VyRGF0YS5vbkNhbWVyYUVudGVyID8gdHJpZ2dlckRhdGEub25DYW1lcmFFbnRlciA6IHVuZGVmaW5lZCwgdHJpZ2dlckRhdGEub25DYW1lcmFFeGl0ID8gdHJpZ2dlckRhdGEub25DYW1lcmFFeGl0IDogdW5kZWZpbmVkLCBDb2xvcjMuUmVkKCkpXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9sbG93UGF0aChucGM6RW50aXR5LCBkYXRhPzpGb2xsb3dQYXRoRGF0YSl7XG4gICAgICAgIFxuICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgIGxldCBwYXRoOmFueVtdID1bXVxuXG4gICAgaWYobnBjRGF0YS5mYWNlVXNlcil7XG4gICAgICAgIGlmKFRyYWNrVXNlckZsYWcuaGFzKG5wYykpe1xuICAgICAgICAgICAgVHJhY2tVc2VyRmxhZy5kZWxldGVGcm9tKG5wYylcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmKG5wY0RhdGEubWFudWFsU3RvcCl7XG4gICAgICAgIGxldCBkdXJhdGlvbiA9IG5wY0RhdGEucGF0aERhdGEudG90YWxEdXJhdGlvblxuICAgICAgICBsZXQgY3VycmVudFRpbWVyOm51bWJlciA9IHdhbGtpbmdUaW1lcnMuZ2V0KG5wYykhXG4gICAgICAgIGNvbnNvbGUubG9nKCdjdXJyZW50IHRpbWUgaXMnLCBjdXJyZW50VGltZXIpXG4gICAgICAgIGlmKGN1cnJlbnRUaW1lcil7XG4gICAgICAgICAgICBkdXJhdGlvbiAtPSBjdXJyZW50VGltZXJcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYXRoOmFueVtdID0gW11cbiAgICAgICAgbnBjRGF0YS5wYXRoRGF0YS5wYXRoLmZvckVhY2goKHA6YW55KT0+e1xuICAgICAgICAgICAgcGF0aC5wdXNoKHApXG4gICAgICAgIH0pXG4gICAgICAgIHBhdGguc3BsaWNlKDAsbnBjRGF0YS5wYXRoSW5kZXgpXG5cbiAgICAgICAgbGV0IHBvcyA9IFRyYW5zZm9ybS5nZXQobnBjKS5wb3NpdGlvblxuICAgICAgICBwYXRoLnVuc2hpZnQoVmVjdG9yMy5jcmVhdGUocG9zLngsIHBvcy55LCBwb3MueikpXG4gICAgICAgIHdhbGtOUEMobnBjLG5wY0RhdGEsIG5wY0RhdGEucGF0aERhdGEucGF0aFR5cGUsIGR1cmF0aW9uLCBwYXRoLCBwb2ludFJlYWNoZWRDYWxsYmFja3MuZ2V0KG5wYyksIG9uRmluaXNoQ2FsbGJhY2tzLmdldChucGMpKSAgICBcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgICAgaWYoZGF0YSl7XG4gICAgICAgICAgICBucGNEYXRhLnBhdGhEYXRhID0gZGF0YVxuICAgIFxuICAgICAgICAgICAgaWYoZGF0YS5zdGFydGluZ1BvaW50KXtcbiAgICAgICAgICAgICAgICBkYXRhLnBhdGg/LnNwbGljZSgwLGRhdGEuc3RhcnRpbmdQb2ludCAtIDEpXG4gICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICBsZXQgcG9zID0gVHJhbnNmb3JtLmdldChucGMpLnBvc2l0aW9uXG4gICAgICAgICAgICBwYXRoLnB1c2goVmVjdG9yMy5jcmVhdGUocG9zLngsIHBvcy55LCBwb3MueikpXG4gICAgICAgICAgICBkYXRhLnBhdGg/LmZvckVhY2goKHApPT57XG4gICAgICAgICAgICAgICAgcGF0aC5wdXNoKHApXG4gICAgICAgICAgICB9KVxuICAgIFxuICAgICAgICAgICAgb25GaW5pc2hDYWxsYmFja3Muc2V0KG5wYywoKT0+e1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdvbiBmaW5pc2hlZCBjYWxsYmFjaycpXG4gICAgICAgICAgICAgICAgaWYoZGF0YSAmJiBkYXRhLm9uRmluaXNoQ2FsbGJhY2sgJiYgIWRhdGEubG9vcCl7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEub25GaW5pc2hDYWxsYmFjaygpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0b3BQYXRoKG5wYylcbiAgICAgICAgICAgIH0pXG4gICAgXG4gICAgICAgICAgICBwb2ludFJlYWNoZWRDYWxsYmFja3Muc2V0KG5wYywgKCk9PntcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnb24gcG9pbnQgcmVhY2hlZCBjYWxsYmFjaycpXG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgICAgICAgICAgICAgZGF0YS5wYXRoSW5kZXggKz0gMVxuICAgICAgICAgICAgICAgIGRhdGEub25SZWFjaGVkUG9pbnRDYWxsYmFjayA/IGRhdGEub25SZWFjaGVkUG9pbnRDYWxsYmFjayA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHdhbGtOUEMobnBjLCBucGNEYXRhLCBkYXRhLnBhdGhUeXBlISwgZGF0YS50b3RhbER1cmF0aW9uLCBwYXRoLCBwb2ludFJlYWNoZWRDYWxsYmFja3MuZ2V0KG5wYyksIG9uRmluaXNoQ2FsbGJhY2tzLmdldChucGMpKVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIGlmKG5wY0RhdGEubWFudWFsU3RvcCl7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3dlIGhhdmUgbWFudWFsIHN0b3AsIG5lZWQgdG8gcGljayBiYWNrIHVwIHdoZXJlIHdlIGxlZnQgb2ZmJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3dlIGFyZSB0cnlpbmcgdG8gZm9sbG93IGEgcGF0aCB3aXRvdXQgc3RhcnRpbmcgb25lIHByaW9yJylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgXG4gICAgfVxuXG4gICBcbiAgICB9XG5cbmZ1bmN0aW9uIHdhbGtOUEMobnBjOkVudGl0eSwgbnBjRGF0YTphbnksIHR5cGU6TlBDUGF0aFR5cGUsIGR1cmF0aW9uOm51bWJlciwgcGF0aDpWZWN0b3IzW10sIHBvaW50UmVhY2hlZENhbGxiYWNrPzphbnksIGZpbmlzaGVkQ2FsbGJhY2s/OmFueSl7XG4gICAgXG4gICAgaWYoSXNGb2xsb3dpbmdQYXRoLmhhcyhucGMpKXtcbiAgICAgICAgSXNGb2xsb3dpbmdQYXRoLmRlbGV0ZUZyb20obnBjKVxuICAgICAgICB3YWxraW5nVGltZXJzLmRlbGV0ZShucGMpXG4gICAgfVxuICAgIElzRm9sbG93aW5nUGF0aC5jcmVhdGUobnBjKVxuXG4gICAgaWYodHlwZSl7XG4gICAgICAgIGlmKHR5cGU9PSBOUENQYXRoVHlwZS5SSUdJRF9QQVRIKXtcbiAgICAgICAgICAgIHV0aWxzLnBhdGhzLnN0YXJ0U3RyYWlnaHRQYXRoKG5wYywgcGF0aCwgZHVyYXRpb24sdHJ1ZSxcbiAgICAgICAgICAgICAgICAoKT0+e2ZpbmlzaGVkQ2FsbGJhY2soKX0sICgpPT57cG9pbnRSZWFjaGVkQ2FsbGJhY2soKX0pXG4gICAgICAgIH1cbiAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIHV0aWxzLnBhdGhzLnN0YXJ0U21vb3RoUGF0aChucGMsIHBhdGgsIGR1cmF0aW9uLCAzMCwgdHJ1ZSwgXG4gICAgICAgICAgICAgICAgKCk9PntmaW5pc2hlZENhbGxiYWNrKCl9LCAoKT0+e3BvaW50UmVhY2hlZENhbGxiYWNrKCl9KVxuICAgICAgICAgICAgfVxuICAgIH1cbiAgICBlbHNle1xuICAgICAgICB1dGlscy5wYXRocy5zdGFydFNtb290aFBhdGgobnBjLCBwYXRoLCBkdXJhdGlvbiwgMjAsIHRydWUsIFxuICAgICAgICAgICAgKCk9PntmaW5pc2hlZENhbGxiYWNrKCl9LCAoKT0+e3BvaW50UmVhY2hlZENhbGxiYWNrKCl9KVxuICAgIH0gICBcblxuICAgIGlmIChucGNEYXRhLndhbGtpbmdBbmltKSB7XG4gICAgICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltLCB0cnVlKVxuICAgICAgICBucGNEYXRhLmxhc3RQbGF5ZWRBbmltID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS53YWxraW5nQW5pbVxuICAgICAgfVxuICAgIG5wY0RhdGEuc3RhdGUgPSBOUENTdGF0ZS5GT0xMT1dQQVRIXG4gICAgbnBjRGF0YS5tYW51YWxTdG9wID0gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0b3BXYWxraW5nKG5wYzpFbnRpdHksIGR1cmF0aW9uPzogbnVtYmVyLCBmaW5pc2hlZD86Ym9vbGVhbikge1xuICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgIG5wY0RhdGEuc3RhdGUgPSBOUENTdGF0ZS5TVEFORElOR1xuICAgIG5wY0RhdGEubWFudWFsU3RvcCA9IHRydWVcblxuICAgIHN0b3BQYXRoKG5wYylcblxuICAgIGlmIChkdXJhdGlvbikge1xuICAgICAgICB1dGlscy50aW1lcnMuc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgLy9pZiAodGhpcy5kaWFsb2cgJiYgdGhpcy5kaWFsb2cuaXNEaWFsb2dPcGVuKSByZXR1cm5cbiAgICAgICAgICAgIGlmKG5wY0RhdGEucGF0aCl7XG4gICAgICAgICAgICAgICAgQW5pbWF0b3Iuc3RvcEFsbEFuaW1hdGlvbnMobnBjLCB0cnVlKVxuICAgICAgICAgICAgICAgIGlmKG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykud2Fsa2luZ0FuaW0pe1xuICAgICAgICAgICAgICAgICAgICBBbmltYXRvci5wbGF5U2luZ2xlQW5pbWF0aW9uKG5wYywgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS53YWxraW5nQW5pbSx0cnVlKVxuICAgICAgICAgICAgICAgICAgICBucGNEYXRhLmxhc3RQbGF5ZWRBbmltID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS53YWxraW5nQW5pbVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgZHVyYXRpb24gPSBucGNEYXRhLnBhdGhEYXRhLnRvdGFsRHVyYXRpb25cbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudFRpbWVyOm51bWJlciA9IHdhbGtpbmdUaW1lcnMuZ2V0KG5wYykhXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2N1cnJlbnQgdGltZSBpcycsIGN1cnJlbnRUaW1lcilcbiAgICAgICAgICAgICAgICBpZihjdXJyZW50VGltZXIpe1xuICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbiAtPSBjdXJyZW50VGltZXJcbiAgICAgICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICAgICAgbGV0IHBhdGg6YW55W10gPSBbXVxuICAgICAgICAgICAgICAgIG5wY0RhdGEucGF0aERhdGEucGF0aC5mb3JFYWNoKChwOmFueSk9PntcbiAgICAgICAgICAgICAgICAgICAgcGF0aC5wdXNoKHApXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBwYXRoLnNwbGljZSgwLG5wY0RhdGEucGF0aEluZGV4KVxuICAgIFxuICAgICAgICAgICAgICAgIGxldCBwb3MgPSBUcmFuc2Zvcm0uZ2V0KG5wYykucG9zaXRpb25cbiAgICAgICAgICAgICAgICBwYXRoLnVuc2hpZnQoVmVjdG9yMy5jcmVhdGUocG9zLngsIHBvcy55LCBwb3MueikpXG4gICAgXG4gICAgICAgICAgICAgICAgLy9ucGNEYXRhLm1hbnVhbFN0b3AgPSBmYWxzZVxuICAgICAgICAgICAgICAgIHdhbGtOUEMobnBjLG5wY0RhdGEsIG5wY0RhdGEucGF0aERhdGEucGF0aFR5cGUsIGR1cmF0aW9uLCBwYXRoLCBwb2ludFJlYWNoZWRDYWxsYmFja3MuZ2V0KG5wYyksIG9uRmluaXNoQ2FsbGJhY2tzLmdldChucGMpKSAgICBcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LGR1cmF0aW9uICogMTAwMClcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdG9wUGF0aChucGM6RW50aXR5KXtcbiAgICB1dGlscy5wYXRocy5zdG9wUGF0aChucGMpXG4gICAgSXNGb2xsb3dpbmdQYXRoLmRlbGV0ZUZyb20obnBjKVxuXG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgaWYgKG5wY0RhdGEud2Fsa2luZ0FuaW0pIHtcbiAgICAgICAgQW5pbWF0b3IucGxheVNpbmdsZUFuaW1hdGlvbihucGMsIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykuaWRsZUFuaW0pXG4gICAgICAgIG5wY0RhdGEubGFzdFBsYXllZEFuaW0gPSBucGNEYXRhLmlkbGVBbmltXG4gICAgfVxuXG4gICAgaWYoIW5wY0RhdGEubWFudWFsU3RvcCl7XG4gICAgICAgIGlmKG5wY0RhdGEucGF0aERhdGEubG9vcCl7XG4gICAgICAgICAgICBucGNEYXRhLnBhdGhJbmRleCA9IDBcbiAgICAgICAgICAgIHdhbGtpbmdUaW1lcnMuZGVsZXRlKG5wYylcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCd3ZSBhcmUgbG9vcGluZyBwYXRoJywgbnBjRGF0YSlcbiAgICAgICAgICAgIGZvbGxvd1BhdGgobnBjLCBucGNEYXRhLnBhdGhEYXRhKVxuICAgICAgICAgICAgY29uc29sZS5sb2cobnBjRGF0YSlcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyTlBDKCl7XG4gICAgYWN0aXZlTlBDID0gTlVMTF9OUENcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEFjdGl2ZU5QQyhucGM6RW50aXR5KXtcbiAgICBhY3RpdmVOUEMgPSBucGNcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gaXNBY3RpdmVOcGNTZXQoKXtcbiAgICByZXR1cm4gYWN0aXZlTlBDICYmIG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMoYWN0aXZlTlBDKVxufVxuICBcblxuLyoqXG4gKiBDYWxscyB0aGUgTlBDJ3MgYWN0aXZhdGlvbiBmdW5jdGlvbiAoc2V0IG9uIE5QQyBkZWZpbml0aW9uKS4gSWYgTlBDIGhhcyBgZmFjZVVzZXJgID0gdHJ1ZSwgaXQgd2lsbCByb3RhdGUgdG8gZmFjZSB0aGUgcGxheWVyLiBJdCBzdGFydHMgYSBjb29sZG93biBjb3VudGVyIHRvIGF2b2lkIHJlYWN0aXZhdGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGl2YXRlKG5wYzpFbnRpdHkpIHtcblxuICAgIGlmKGFjdGl2ZU5QQyl7XG4gICAgICAgIGNvbnNvbGUubG9nKCd3ZSBoYXZlIGEgY3VycmVudCBucGMsIG5lZWR0byByZW1vdmUnKVxuICAgICAgICBlbmRJbnRlcmFjdGlvbihhY3RpdmVOUEMpXG4gICAgICAgIC8vIGNsb3NlRGlhbG9nKGFjdGl2ZU5QQylcbiAgICB9XG5cbiAgICBhY3RpdmVOUEMgPSBucGNcbiAgICBvbkFjdGl2YXRlQ2JzLmdldChucGMpKClcblxuICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgIGlmIChucGNEYXRhLmZhY2VVc2VyKSB7XG4gICAgICAgIGlmKFRyYWNrVXNlckZsYWcuaGFzKG5wYykpe1xuICAgICAgICAgICAgVHJhY2tVc2VyRmxhZy5kZWxldGVGcm9tKG5wYylcbiAgICAgICAgfVxuXG4gICAgICAgIFRyYWNrVXNlckZsYWcuY3JlYXRlKG5wYyx7XG4gICAgICAgICAgICBsb2NrWFpSb3RhdGlvbjp0cnVlLFxuICAgICAgICAgICAgYWN0aXZlOnRydWUsXG4gICAgICAgICAgICByb3RTcGVlZDpucGNEYXRhLnR1cm5TcGVlZFxuICAgICAgICB9KVxuICAgIH1cbiAgICBpc0Nvb2xkb3duLnNldChucGMsIHRydWUpXG4gICAgbnBjRGF0YS5pbkNvb2xkb3duID0gdHJ1ZVxuXG4gICAgdXRpbHMudGltZXJzLnNldFRpbWVvdXQoXG4gICAgICAgIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaXNDb29sZG93bi5kZWxldGUobnBjKVxuICAgICAgICAgICAgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5pbkNvb2xkb3duID0gZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgMTAwMCAqIG5wY0RhdGEuY29vbERvd25EdXJhdGlvblxuICAgIClcbiAgICBjb25zb2xlLmxvZygnYWN0aXZhdGVkIG5wYywnLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpKVxufVxuXG5mdW5jdGlvbiBlbmRJbnRlcmFjdGlvbihucGM6RW50aXR5KSB7XG4gICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgICBucGNEYXRhLnN0YXRlID0gTlBDU3RhdGUuU1RBTkRJTkdcblxuICAgICAgICBpZiAobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKXsvL30gJiYgbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpLnZpc2libGUpIHtcbiAgICAgICAgICAgIGNsb3NlRGlhbG9nKG5wYylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKG5wY0RhdGEuZmFjZVVzZXIpe1xuICAgICAgICAgICAgaWYoVHJhY2tVc2VyRmxhZy5oYXMobnBjKSl7XG4gICAgICAgICAgICAgICAgVHJhY2tVc2VyRmxhZy5kZWxldGVGcm9tKG5wYylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKCdlbmRpbmcgaW50ZXJhY3Rpb24nLCBucGNEYXRhLCBidWJibGVzLmdldChucGMpKVxuICAgICAgICBpZihucGNEYXRhLmhhc0J1YmJsZSAmJiBidWJibGVzLmdldChucGMpLmlzQnViYmxlT3Blbil7XG4gICAgICAgICAgICBjbG9zZUJ1YmJsZShucGMpXG4gICAgICAgIH1cbn1cblxuLyoqXG4gKiBFbmRzIGludGVyYWN0aW9uIGFuZCBjYWxscyB0aGUgb25XYWxrQXdheSBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlV2Fsa0F3YXkobnBjOkVudGl0eSkge1xuICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgIGlmIChucGNEYXRhLnN0YXRlID09IE5QQ1N0YXRlLkZPTExPV1BBVEgpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZW5kSW50ZXJhY3Rpb24obnBjKVxuXG4gICAgaWYgKG9uV2Fsa0F3YXlDYnMuZ2V0KG5wYykpIHtcbiAgICAgICAgb25XYWxrQXdheUNicy5nZXQobnBjKSgpXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGxheUFuaW1hdGlvbihucGM6RW50aXR5LCBhbmltOnN0cmluZywgbm9Mb29wPzpib29sZWFuLCBkdXJhdGlvbj86bnVtYmVyKXtcbiAgICBsZXQgYW5pbWF0aW9ucyA9IEFuaW1hdG9yLmdldE11dGFibGUobnBjKVxuICAgIGlmKGFuaW1hdGlvbnMuc3RhdGVzLmZpbHRlcigoYW5pbWF0aW9uKT0+IGFuaW1hdGlvbi5uYW1lID09PSBhbmltKS5sZW5ndGggPT0gMCl7XG4gICAgICAgIGFuaW1hdGlvbnMuc3RhdGVzLnB1c2goe25hbWU6YW5pbSwgY2xpcDphbmltLCBsb29wOiBub0xvb3A/IGZhbHNlIDogdHJ1ZX0pXG4gICAgfVxuXG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgaWYobnBjRGF0YS5zdGF0ZSA9PSBOUENTdGF0ZS5GT0xMT1dQQVRIKXtcbiAgICAgICAgdXRpbHMucGF0aHMuc3RvcFBhdGgobnBjKVxuICAgIH1cblxuICAgIGlmKGFuaW1UaW1lcnMuaGFzKG5wYykpe1xuICAgICAgICB1dGlscy50aW1lcnMuY2xlYXJUaW1lb3V0KGFuaW1UaW1lcnMuZ2V0KG5wYykgYXMgbnVtYmVyKVxuICAgICAgICBhbmltVGltZXJzLmRlbGV0ZShucGMpXG4gICAgfVxuXG4gICAgQW5pbWF0b3Iuc3RvcEFsbEFuaW1hdGlvbnMobnBjLCB0cnVlKVxuICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBhbmltLCB0cnVlKVxuICAgIGlmKGR1cmF0aW9uKXtcbiAgICAgICAgY29uc29sZS5sb2coJ2hhdmUgYSBkdXJhdGlvbiB0byBwbGF5IGFuaW1hdGlvbicpXG4gICAgICAgIGlmKGFuaW1UaW1lcnMuaGFzKG5wYykpe1xuICAgICAgICAgICAgdXRpbHMudGltZXJzLmNsZWFyVGltZW91dChhbmltVGltZXJzLmdldChucGMpIGFzIG51bWJlcilcbiAgICAgICAgICAgIGFuaW1UaW1lcnMuZGVsZXRlKG5wYylcbiAgICAgICAgfVxuICAgICAgICBhbmltVGltZXJzLnNldChucGMsIHV0aWxzLnRpbWVycy5zZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICBhbmltVGltZXJzLmRlbGV0ZShucGMpXG4gICAgICAgICAgICBBbmltYXRvci5zdG9wQWxsQW5pbWF0aW9ucyhucGMsIHRydWUpXG4gICAgICAgICAgICBpZihucGNEYXRhLmlkbGVBbmltKXtcbiAgICAgICAgICAgICAgICBBbmltYXRvci5wbGF5U2luZ2xlQW5pbWF0aW9uKG5wYywgbnBjRGF0YS5pZGxlQW5pbSlcbiAgICAgICAgICAgICAgICBucGNEYXRhLmxhc3RQbGF5ZWRBbmltID0gbnBjRGF0YS5pZGxlQW5pbVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCAxMDAwICogZHVyYXRpb24pKS8vXG4gICAgfSBcblxuICAgIG5wY0RhdGEubGFzdFBsYXllZEFuaW0gPSBhbmltXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGFuZ2VJZGxlQW5pbShucGM6RW50aXR5LCBhbmltYXRpb246c3RyaW5nLCBwbGF5Pzpib29sZWFuKXtcbiAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICBucGNEYXRhLmlkbGVBbmltID0gYW5pbWF0aW9uXG5cbiAgICBsZXQgYW5pbWF0aW9ucyA9IEFuaW1hdG9yLmdldE11dGFibGUobnBjKVxuICAgIGlmKGFuaW1hdGlvbnMuc3RhdGVzLmZpbHRlcigoYW5pbSk9PiBhbmltLm5hbWUgPT09IGFuaW1hdGlvbikubGVuZ3RoID09IDApe1xuICAgICAgICBhbmltYXRpb25zLnN0YXRlcy5wdXNoKHtuYW1lOmFuaW1hdGlvbiwgY2xpcDphbmltYXRpb24sIGxvb3A6IHRydWV9KVxuICAgIH1cblxuICAgIGlmKHBsYXkpe1xuICAgICAgICBwbGF5QW5pbWF0aW9uKG5wYywgYW5pbWF0aW9uLCB0cnVlKVxuICAgICAgICBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmxhc3RQbGF5ZWRBbmltID0gYW5pbWF0aW9uXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFsa0J1YmJsZShucGM6RW50aXR5LCBzY3JpcHQ6RGlhbG9nW10sIHN0YXJ0SW5kZXg/Om51bWJlciB8IHN0cmluZyl7XG4gICAgb3BlbkJ1YmJsZShucGMsIHNjcmlwdCxzdGFydEluZGV4KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGlhbG9nV2luZG93KGRlZmF1bHRQb3J0cmFpdD86SW1hZ2VEYXRhLCBzb3VuZD86c3RyaW5nKXtcbiAgICBsZXQgZGlhbG9nID0gZW5naW5lLmFkZEVudGl0eSgpXG4gICAgYWRkRGlhbG9nKGRpYWxvZyxzb3VuZCwgZGVmYXVsdFBvcnRyYWl0KVxuICAgIHJldHVybiBkaWFsb2dcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5EaWFsb2dXaW5kb3cobnBjOkVudGl0eSwgZGlhbG9nOkRpYWxvZ1tdLCBzdGFydEluZGV4PzpudW1iZXIgfCBzdHJpbmcpe1xuICAgIGFjdGl2ZU5QQyA9IG5wY1xuXG4gICAgaWYobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKXtcbiAgICAgICAgbGV0IGluZGV4OmFueVxuICAgICAgICBpZiAoIXN0YXJ0SW5kZXgpIHtcbiAgICAgICAgICBpbmRleCA9IDBcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc3RhcnRJbmRleCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICBpbmRleCA9IHN0YXJ0SW5kZXhcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbmRleCA9IGZpbmREaWFsb2dCeU5hbWUoZGlhbG9nLCBzdGFydEluZGV4KVxuICAgICAgICB9XG4gICAgICAgIG9wZW5EaWFsb2cobnBjLGRpYWxvZywgaW5kZXgpXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VEaWFsb2dXaW5kb3cod2luZG93OkVudGl0eSl7XG4gICAgbGV0IGRpYWxvZyA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQod2luZG93KVxuICAgIGlmKHdpbmRvdyl7XG4gICAgICAgIGNsb3NlRGlhbG9nKGRpYWxvZylcbiAgICB9XG59Il19
469
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25wYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQVUsYUFBYSxFQUFjLFlBQVksRUFBQyxZQUFZLEVBQStCLG1CQUFtQixFQUFDLFNBQVMsRUFBaUIsTUFBTSxjQUFjLENBQUE7QUFDck0sT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzNELE9BQU8sRUFBOEMsV0FBVyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQWUsTUFBTSxTQUFTLENBQUM7QUFDbEgsT0FBTyxLQUFLLEtBQUssTUFBTSxnQkFBZ0IsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6SCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBdUIsSUFBSSxHQUFHLEVBQUUsQ0FBQTtBQUMxRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBcUIsSUFBSSxHQUFHLEVBQUUsQ0FBQTtBQUMzRCxNQUFNLENBQUMsSUFBSSxRQUFRLEdBQVUsQ0FBVyxDQUFBO0FBQ3hDLE1BQU0sQ0FBQyxJQUFJLFNBQVMsR0FBVSxRQUFR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LEVBQUUsVUFBVSxDQUFDLENBQUE7U0FDN0M7UUFDRCxVQUFVLENBQUMsR0FBRyxFQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQTtLQUNoQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsTUFBYTtJQUMzQyxJQUFJLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDM0MsSUFBRyxNQUFNLEVBQUM7UUFDTixXQUFXLENBQUMsTUFBTSxDQUFDLENBQUE7S0FDdEI7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0RWNzIGZyb20gJ0BkY2wvc2RrL3JlYWN0LWVjcydcbmltcG9ydCB7IEFuaW1hdG9yLCBBdmF0YXJTaGFwZSwgZW5naW5lLCBFbnRpdHksIEdsdGZDb250YWluZXIsIElucHV0QWN0aW9uLE1lc2hDb2xsaWRlcixNZXNoUmVuZGVyZXIsUEJBdmF0YXJTaGFwZSxQQkdsdGZDb250YWluZXIscG9pbnRlckV2ZW50c1N5c3RlbSxUcmFuc2Zvcm0sIFRyYW5zZm9ybVR5cGUgfSBmcm9tICdAZGNsL3Nkay9lY3MnXG5pbXBvcnQgeyBDb2xvcjMsIFF1YXRlcm5pb24sIFZlY3RvcjMgfSBmcm9tICdAZGNsL3Nkay9tYXRoJ1xuaW1wb3J0IHsgRGlhbG9nLCBGb2xsb3dQYXRoRGF0YSwgSW1hZ2VEYXRhLCBOUENEYXRhLCBOUENQYXRoVHlwZSwgTlBDU3RhdGUsIE5QQ1R5cGUsIFRyaWdnZXJEYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tICdAZGNsLXNkay91dGlscydcbmltcG9ydCB7IElzRm9sbG93aW5nUGF0aCwgVHJhY2tVc2VyRmxhZyB9IGZyb20gJy4vY29tcG9uZW50cyc7XG5pbXBvcnQgeyBmYWNlVXNlclN5c3RlbSwgaGFuZGxlQnViYmxldHlwaW5nLCBoYW5kbGVEaWFsb2dUeXBpbmcsIGhhbmRsZVBhdGhUaW1lcywgaW5wdXRMaXN0ZW5lclN5c3RlbSB9IGZyb20gJy4vc3lzdGVtcyc7XG5pbXBvcnQgeyBhZGREaWFsb2csIGNsb3NlRGlhbG9nLCBmaW5kRGlhbG9nQnlOYW1lLCBucGNEaWFsb2dDb21wb25lbnQsIG9wZW5EaWFsb2cgfSBmcm9tICcuL2RpYWxvZyc7XG5pbXBvcnQgeyBidWJibGVzLCBjbG9zZUJ1YmJsZSwgY3JlYXRlRGlhbG9nQnViYmxlLCBvcGVuQnViYmxlIH0gZnJvbSAnLi9idWJibGUnO1xuaW1wb3J0IHsgZGFya1RoZW1lLCBsaWdodFRoZW1lIH0gZnJvbSAnLi91aSc7XG5cbmV4cG9ydCBjb25zdCB3YWxraW5nVGltZXJzOiBNYXA8RW50aXR5LG51bWJlcj4gPSBuZXcgTWFwKClcbmV4cG9ydCBjb25zdCBucGNEYXRhQ29tcG9uZW50OiBNYXA8RW50aXR5LCBhbnk+ID0gbmV3IE1hcCgpXG5leHBvcnQgbGV0IE5VTExfTlBDOkVudGl0eSA9IDAgYXMgRW50aXR5XG5leHBvcnQgbGV0IGFjdGl2ZU5QQzpFbnRpdHkgPSBOVUxMX05QQ1xuZXhwb3J0IGxldCBibGFua0RpYWxvZzpudW1iZXIgPSAwXG5cbmVuZ2luZS5hZGRTeXN0ZW0oaGFuZGxlUGF0aFRpbWVzKVxuZW5naW5lLmFkZFN5c3RlbShoYW5kbGVEaWFsb2dUeXBpbmcpXG5lbmdpbmUuYWRkU3lzdGVtKGhhbmRsZUJ1YmJsZXR5cGluZylcbmVuZ2luZS5hZGRTeXN0ZW0oZmFjZVVzZXJTeXN0ZW0pXG5lbmdpbmUuYWRkU3lzdGVtKGlucHV0TGlzdGVuZXJTeXN0ZW0pXG5cbi8vVE9ETyBNQUtFIGlzQ29vbGRvd24gYW5kIG5vIGxvbmdlciBoYXZlIHRvIHRyYWNrIHdpdGggbWFwIHRvIHJlbW92ZSBtZW1vcnkgbGVhayBpc3N1ZXNcbmNvbnN0IGlzQ29vbGRvd246IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcbmNvbnN0IG9uQWN0aXZhdGVDYnM6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcbmNvbnN0IG9uV2Fsa0F3YXlDYnM6IE1hcDxFbnRpdHksIGFueT4gPSBuZXcgTWFwKClcbmNvbnN0IGFuaW1UaW1lcnM6IE1hcDxFbnRpdHksbnVtYmVyPiA9IG5ldyBNYXAoKVxuY29uc3QgcG9pbnRSZWFjaGVkQ2FsbGJhY2tzOiBNYXA8RW50aXR5LCBhbnk+ID0gbmV3IE1hcCgpXG5jb25zdCBvbkZpbmlzaENhbGxiYWNrczogTWFwPEVudGl0eSwgYW55PiA9IG5ldyBNYXAoKVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvd0RlYnVnKGRlYnVnOmJvb2xlYW4pe1xuICAgIHV0aWxzLnRyaWdnZXJzLmVuYWJsZURlYnVnRHJhdyhkZWJ1Zylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGEobnBjOkVudGl0eSl7XG4gICAgcmV0dXJuIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZShcbiAgICB0cmFuc2Zvcm06IGFueSxcbiAgICBkYXRhOiBOUENEYXRhXG4pe1xuICAgIGxldCBucGMgPSBlbmdpbmUuYWRkRW50aXR5KClcblxuICAgIGxldCB0OlRyYW5zZm9ybVR5cGUgPSB7cG9zaXRpb246IHRyYW5zZm9ybS5wb3NpdGlvbiA/IHRyYW5zZm9ybS5wb3NpdGlvbiA6IFZlY3RvcjMuY3JlYXRlKDAsMCwwKSwgcm90YXRpb246IHRyYW5zZm9ybS5yb3RhdGlvbiA/IHRyYW5zZm9ybS5yb3RhdGlvbiA6IFF1YXRlcm5pb24uWmVybygpLCBzY2FsZTogdHJhbnNmb3JtLnNjYWxlID8gdHJhbnNmb3JtLnNjYWxlIDogVmVjdG9yMy5PbmUoKX1cbiAgICBUcmFuc2Zvcm0uY3JlYXRlKG5wYywgdClcblxuICAgIG5wY0RhdGFDb21wb25lbnQuc2V0KG5wYyx7XG4gICAgICAgIGludHJvZHVjZWQ6IGZhbHNlLFxuICAgICAgICBpbkNvb2xkb3duOiBmYWxzZSxcbiAgICAgICAgY29vbERvd25EdXJhdGlvbjogZGF0YSAmJiBkYXRhLmNvb2xEb3duRHVyYXRpb24gPyBkYXRhLmNvb2xEb3duRHVyYXRpb24gOiA1LFxuICAgICAgICBmYWNlVXNlcjogZGF0YSAmJiBkYXRhLmZhY2VVc2VyID8gZGF0YS5mYWNlVXNlciA6IHVuZGVmaW5lZCxcbiAgICAgICAgd2Fsa2luZ1NwZWVkOjIsXG4gICAgICAgIHdhbGtpbmdBbmltOiBkYXRhICYmIGRhdGEud2Fsa2luZ0FuaW0gPyBkYXRhLndhbGtpbmdBbmltIDogdW5kZWZpbmVkLFxuICAgICAgICBwYXRoRGF0YTogZGF0YS5wYXRoRGF0YSA/IGRhdGEucGF0aERhdGEgOiB1bmRlZmluZWQsXG4gICAgICAgIGN1cnJlbnRQYXRoRGF0YTogW10sXG4gICAgICAgIG1hbnVhbFN0b3A6ZmFsc2UsXG4gICAgICAgIHBhdGhJbmRleDowLFxuICAgICAgICBzdGF0ZTpOUENTdGF0ZS5TVEFORElORyxcbiAgICAgICAgaWRsZUFuaW06IGRhdGEgJiYgZGF0YS5pZGxlQW5pbSA/IGRhdGEuaWRsZUFuaW0gOiBcIklkbGVcIixcbiAgICAgICAgYnViYmxlSGVpZ2h0OiBkYXRhICYmIGRhdGEudGV4dEJ1YmJsZSAmJiBkYXRhLmJ1YmJsZUhlaWdodCA/IGRhdGEuYnViYmxlSGVpZ2h0IDogdW5kZWZpbmVkLFxuICAgICAgICBidWJibGVTb3VuZDogZGF0YS5kaWFsb2dTb3VuZCA/IGRhdGEuZGlhbG9nU291bmQgOiB1bmRlZmluZWQsXG4gICAgICAgIGhhc0J1YmJsZTogZGF0YSAmJiBkYXRhLnRleHRCdWJibGUgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgIHR1cm5TcGVlZDogZGF0YSAmJiBkYXRhLnR1cm5pbmdTcGVlZCA/IGRhdGEudHVybmluZ1NwZWVkIDogMixcbiAgICAgICAgdGhlbWU6IGRhdGEuZGFya1VJID8gZGFya1RoZW1lIDogbGlnaHRUaGVtZVxuICAgIH0pXG5cbiAgICBpZihkYXRhICYmIGRhdGEubm9VSSl7fVxuICAgIGVsc2UgaWYoZGF0YSAmJiBkYXRhLnBvcnRyYWl0KXtcbiAgICAgICAgICAgIGFkZERpYWxvZyhucGMsIGRhdGEgJiYgZGF0YS5kaWFsb2dTb3VuZCA/IGRhdGEuZGlhbG9nU291bmQgOiB1bmRlZmluZWQsIHR5cGVvZiBkYXRhLnBvcnRyYWl0ID09PSBgc3RyaW5nYCA/IHsgcGF0aDogZGF0YS5wb3J0cmFpdCB9IDogZGF0YS5wb3J0cmFpdClcbiAgICAgICAgfVxuICAgIGVsc2V7XG4gICAgICAgIGFkZERpYWxvZyhucGMsIGRhdGEgJiYgZGF0YS5kaWFsb2dTb3VuZCA/IGRhdGEuZGlhbG9nU291bmQgOiB1bmRlZmluZWQpXG4gICAgfVxuXG4gICAgaWYgKGRhdGEgJiYgZGF0YS50ZXh0QnViYmxlKSB7XG4gICAgICAgIGNyZWF0ZURpYWxvZ0J1YmJsZShucGMsIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykuYnViYmxlSGVpZ2h0KVxuICAgICAgfVxuXG4gICAgb25BY3RpdmF0ZUNicy5zZXQobnBjLCAoKT0+e1xuICAgICAgICBkYXRhLm9uQWN0aXZhdGUoKVxuICAgIH0pXG5cbiAgICBpZiAoZGF0YSAmJiBkYXRhLmhhc093blByb3BlcnR5KFwib25XYWxrQXdheVwiKSkge1xuICAgICAgICBvbldhbGtBd2F5Q2JzLnNldChucGMsICgpPT57XG4gICAgICAgICAgICBpZighZGF0YSB8fCAhZGF0YS5jb250aW51ZU9uV2Fsa0F3YXkpe1xuICAgICAgICAgICAgICAgIGlmKG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMobnBjKSl7XG4gICAgICAgICAgICAgICAgICAgIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKS52aXNpYmxlID0gZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgICAgIGlmKG5wY0RpYWxvZ0NvbXBvbmVudC5oYXMobnBjKSl7XG4gICAgICAgICAgICAgICAgICAgIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKS52aXNpYmxlID0gZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkYXRhLm9uV2Fsa0F3YXkhKClcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBhZGROUENCb25lcyhucGMsIGRhdGEpXG4gICAgYWRkQ2xpY2tSZWFjdGlvbnMobnBjLCBkYXRhKVxuICAgIGFkZFRyaWdnZXJBcmVhKG5wYywgZGF0YSlcbiAgICBcbiAgICBpZiAoZGF0YSAmJiBkYXRhLnBhdGhEYXRhICYmIGRhdGEucGF0aERhdGEuc3BlZWQpIHtcbiAgICAgICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgICAgIG5wY0RhdGEud2Fsa2luZ1NwZWVkID0gZGF0YS5wYXRoRGF0YS5zcGVlZFxuICAgIH1cblxuICAgIGlmIChkYXRhICYmIGRhdGEuY29vbERvd25EdXJhdGlvbikge1xuICAgICAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICAgICAgbnBjRGF0YS5jb29sRG93bkR1cmF0aW9uID0gZGF0YS5jb29sRG93bkR1cmF0aW9uXG4gICAgfVxuXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5wYXRoRGF0YSl7XG4gICAgICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgICAgICBucGNEYXRhLnBhdGhEYXRhLmxvb3AgPSB0cnVlXG4gICAgICAgIGZvbGxvd1BhdGgobnBjLCBucGNEYXRhLnBhdGhEYXRhKVxuICAgIH1cblxuICAgIHJldHVybiBucGNcbn1cblxuZnVuY3Rpb24gYWRkTlBDQm9uZXMobnBjOkVudGl0eSwgZGF0YTpOUENEYXRhKXtcbiAgICBjb25zdCBtb2RlbElzU3RyaW5nID0gZGF0YSAmJiBkYXRhLm1vZGVsICYmIHR5cGVvZiBkYXRhLm1vZGVsID09PSBgc3RyaW5nYFxuICAgIGNvbnN0IG1vZGVsQXZhdGFyRGF0YTpQQkF2YXRhclNoYXBlfHVuZGVmaW5lZCA9IG1vZGVsSXNTdHJpbmcgPyB1bmRlZmluZWQgOiBkYXRhLm1vZGVsICYmIChkYXRhLm1vZGVsIGFzIGFueSkuYm9keVNoYXBlID8gZGF0YS5tb2RlbCBhcyBQQkF2YXRhclNoYXBlIDogdW5kZWZpbmVkXG4gICAgY29uc3QgbW9kZWxHTFRGRGF0YTpQQkdsdGZDb250YWluZXJ8dW5kZWZpbmVkID0gbW9kZWxJc1N0cmluZyA/IHVuZGVmaW5lZCA6IGRhdGEubW9kZWwgJiYgKGRhdGEubW9kZWwgYXMgYW55KS5zcmMgPyBkYXRhLm1vZGVsIGFzIFBCR2x0ZkNvbnRhaW5lciA6IHVuZGVmaW5lZFxuXG4gICAgc3dpdGNoKGRhdGEudHlwZSl7XG4gICAgICAgIGNhc2UgTlBDVHlwZS5BVkFUQVI6XG4gICAgICAgICAgICBBdmF0YXJTaGFwZS5jcmVhdGUobnBjLCBcbiAgICAgICAgICAgICAgICAhZGF0YSB8fCAhZGF0YS5tb2RlbCB8fCAhbW9kZWxBdmF0YXJEYXRhID8gXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiBcIm5wY1wiLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiTlBDXCIsXG4gICAgICAgICAgICAgICAgYm9keVNoYXBlOlwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOkJhc2VNYWxlXCIsXG4gICAgICAgICAgICAgICAgZW1vdGVzOiBbXSxcbiAgICAgICAgICAgICAgICB3ZWFyYWJsZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6Zl9leWVzXzAwXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOmZfZXllYnJvd3NfMDBcIixcbiAgICAgICAgICAgICAgICAgICAgXCJ1cm46ZGVjZW50cmFsYW5kOm9mZi1jaGFpbjpiYXNlLWF2YXRhcnM6Zl9tb3V0aF8wMFwiLFxuICAgICAgICAgICAgICAgICAgICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczpjb21meV9zcG9ydF9zYW5kYWxzXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidXJuOmRlY2VudHJhbGFuZDpvZmYtY2hhaW46YmFzZS1hdmF0YXJzOnNvY2Nlcl9wYW50c1wiLFxuICAgICAgICAgICAgICAgICAgICBcInVybjpkZWNlbnRyYWxhbmQ6b2ZmLWNoYWluOmJhc2UtYXZhdGFyczplbGVnYW50X3N3ZWF0ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9IDogbW9kZWxBdmF0YXJEYXRhXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIE5QQ1R5cGUuQ1VTVE9NOlxuICAgICAgICAgICAgR2x0ZkNvbnRhaW5lci5jcmVhdGUobnBjLCBcbiAgICAgICAgICAgICAgICBtb2RlbElzU3RyaW5nICYmIHR5cGVvZiBkYXRhLm1vZGVsID09PSBgc3RyaW5nYCA/IFxuICAgICAgICAgICAgICAgICAgICB7ICAgc3JjOiBkYXRhICYmIGRhdGEubW9kZWwgPyBkYXRhLm1vZGVsIDogXCJcIiAgfVxuICAgICAgICAgICAgICAgICAgICA6IG1vZGVsR0xURkRhdGFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICBBbmltYXRvci5jcmVhdGUobnBjLCB7XG4gICAgICAgICAgICAgICAgc3RhdGVzOlt7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ZGF0YSAmJiBkYXRhLmlkbGVBbmltID8gZGF0YS5pZGxlQW5pbSA6ICdJZGxlJyxcbiAgICAgICAgICAgICAgICAgICAgY2xpcDpkYXRhICYmIGRhdGEuaWRsZUFuaW0gPyBkYXRhLmlkbGVBbmltIDogJ0lkbGUnLFxuICAgICAgICAgICAgICAgICAgICBsb29wOnRydWVcbiAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgICAgICAgICBucGNEYXRhLmlkbGVBbmltID0gZGF0YSAmJiBkYXRhLmlkbGVBbmltID8gZGF0YS5pZGxlQW5pbSA6ICdJZGxlJ1xuICAgICAgICAgICAgbnBjRGF0YS5sYXN0UGxheWVkQW5pbSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykuaWRsZUFuaW1cblxuICAgICAgICAgICAgQW5pbWF0b3IucGxheVNpbmdsZUFuaW1hdGlvbihucGMsIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykuaWRsZUFuaW0pXG5cblxuICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS53YWxraW5nQW5pbSkge1xuICAgICAgICAgICAgICAgIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykud2Fsa2luZ0FuaW0gPSBkYXRhLndhbGtpbmdBbmltXG4gICAgICAgICAgICAgICAgbGV0IGFuaW1hdGlvbnMgPSBBbmltYXRvci5nZXRNdXRhYmxlKG5wYylcbiAgICAgICAgICAgICAgICBhbmltYXRpb25zLnN0YXRlcy5wdXNoKHtuYW1lOmRhdGEud2Fsa2luZ0FuaW0sIGNsaXA6IGRhdGEud2Fsa2luZ0FuaW0sIGxvb3A6dHJ1ZX0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgTlBDVHlwZS5CTEFOSzpcbiAgICAgICAgICAgIE1lc2hSZW5kZXJlci5zZXRCb3gobnBjKVxuICAgICAgICAgICAgTWVzaENvbGxpZGVyLnNldEJveChucGMpXG4gICAgICAgICAgICBicmVhaztcblxuICAgIH1cbn1cblxuZnVuY3Rpb24gYWRkQ2xpY2tSZWFjdGlvbnMobnBjOkVudGl0eSwgZGF0YTpOUENEYXRhKXtcbiAgICBsZXQgYWN0aXZhdGVCdXR0b24gPSBkYXRhICYmIGRhdGEub25seUNsaWNrVHJpZ2dlciA/IElucHV0QWN0aW9uLklBX1BPSU5URVIgOiBJbnB1dEFjdGlvbi5JQV9QUklNQVJZXG5cbiAgICBwb2ludGVyRXZlbnRzU3lzdGVtLm9uUG9pbnRlckRvd24oXG4gICAgICAgIG5wYyxcbiAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGlzQ29vbGRvd24uaGFzKG5wYykgfHwgKG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKS52aXNpYmxlKSkgcmV0dXJuXG4gICAgICAgICAgICBhY3RpdmF0ZShucGMpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGJ1dHRvbjogYWN0aXZhdGVCdXR0b24sXG4gICAgICAgICAgICBob3ZlclRleHQ6IGRhdGEgJiYgZGF0YS5ob3ZlclRleHQgPyBkYXRhLmhvdmVyVGV4dCA6ICdUYWxrJyxcbiAgICAgICAgICAgIHNob3dGZWVkYmFjazogZGF0YSAmJiBkYXRhLm9ubHlFeHRlcm5hbFRyaWdnZXIgPyBmYWxzZSA6IHRydWUsXG4gICAgICAgIH1cbiAgICAgICAgKVxuXG4gICAgICAgIGlmIChkYXRhICYmIGRhdGEub25seUV4dGVybmFsVHJpZ2dlcikge1xuICAgICAgICBwb2ludGVyRXZlbnRzU3lzdGVtLnJlbW92ZU9uUG9pbnRlckRvd24obnBjKVxuICAgICAgICB9IFxufVxuXG5mdW5jdGlvbiBhZGRUcmlnZ2VyQXJlYShucGM6RW50aXR5LCBkYXRhOk5QQ0RhdGEpe1xuXG4gICAgICAgIGxldCB0cmlnZ2VyRGF0YTogVHJpZ2dlckRhdGEgPSB7fVxuXG4gICAgICAgIGlmICghZGF0YSB8fCAoZGF0YSAmJiAhZGF0YS5vbmx5RXh0ZXJuYWxUcmlnZ2VyICYmICFkYXRhLm9ubHlDbGlja1RyaWdnZXIgJiYgIWRhdGEub25seUVUcmlnZ2VyKSl7XG4gICAgICAgIG9uQWN0aXZhdGVDYnMuc2V0KG5wYywgKCk9PntcbiAgICAgICAgICAgIGlmIChpc0Nvb2xkb3duLmhhcyhucGMpKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cobnBjLCAnIGluIGNvb2xkb3duJylcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH0gXG4gICAgICAgICAgICBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpICYmIG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQobnBjKS52aXNpYmxlKSB8fFxuICAgICAgICAgICAgICAgIChkYXRhICYmIGRhdGEub25seUV4dGVybmFsVHJpZ2dlcikgfHxcbiAgICAgICAgICAgICAgICAoZGF0YSAmJiBkYXRhLm9ubHlDbGlja1RyaWdnZXIpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRhdGEub25BY3RpdmF0ZSgpXG4gICAgICAgIH0pXG4gICAgICAgIHRyaWdnZXJEYXRhLm9uQ2FtZXJhRW50ZXIgPSBvbkFjdGl2YXRlQ2JzLmdldChucGMpXG4gICAgICAgIH1cblxuICAgIC8vIHdoZW4gZXhpdGluZyB0cmlnZ2VyXG4gICAgaWYgKCFkYXRhIHx8IChkYXRhICYmICFkYXRhLmNvbnRpbnVlT25XYWxrQXdheSkpIHtcbiAgICAgICAgdHJpZ2dlckRhdGEub25DYW1lcmFFeGl0ID0gKCkgPT4ge1xuICAgICAgICAgICAgaGFuZGxlV2Fsa0F3YXkobnBjKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gd2hlbiBlbnRlcmluZyB0cmlnZ2VyXG4gICAgaWYgKFxuICAgICAgICAhZGF0YSB8fFxuICAgICAgICAoZGF0YSAmJiAhZGF0YS5vbmx5RXh0ZXJuYWxUcmlnZ2VyICYmICFkYXRhLm9ubHlDbGlja1RyaWdnZXIgJiYgIWRhdGEub25seUVUcmlnZ2VyKVxuICAgICkge1xuICAgICAgICB0cmlnZ2VyRGF0YS5vbkNhbWVyYUVudGVyID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzQ29vbGRvd24uaGFzKG5wYykpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhucGMsICcgaW4gY29vbGRvd24nKVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIC8vIGVsc2UgaWYgKFxuICAgICAgICAgICAgLy8gICAgICh0aGlzLmRpYWxvZyAmJiB0aGlzLmRpYWxvZy5pc0RpYWxvZ09wZW4pIHx8XG4gICAgICAgICAgICAvLyAgICAgKGRhdGEgJiYgZGF0YS5vbmx5RXh0ZXJuYWxUcmlnZ2VyKSB8fFxuICAgICAgICAgICAgLy8gICAgIChkYXRhICYmIGRhdGEub25seUNsaWNrVHJpZ2dlcilcbiAgICAgICAgICAgIC8vICkge1xuICAgICAgICAgICAgLy8gICAgIHJldHVyblxuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgYWN0aXZhdGUobnBjKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gYWRkIHRyaWdnZXJcbiAgICBpZiAodHJpZ2dlckRhdGEub25DYW1lcmFFbnRlciB8fCB0cmlnZ2VyRGF0YS5vbkNhbWVyYUV4aXQpIHtcbiAgICAgICAgdXRpbHMudHJpZ2dlcnMuYWRkVHJpZ2dlcihucGMsMjU0LDEsW3t0eXBlOidzcGhlcmUnLCBwb3NpdGlvbjogVmVjdG9yMy5aZXJvKCksIHJhZGl1czogZGF0YS5yZWFjdERpc3RhbmNlICE9IHVuZGVmaW5lZCA/IGRhdGEucmVhY3REaXN0YW5jZSA6IDZ9XSwgdHJpZ2dlckRhdGEub25DYW1lcmFFbnRlciA/IHRyaWdnZXJEYXRhLm9uQ2FtZXJhRW50ZXIgOiB1bmRlZmluZWQsIHRyaWdnZXJEYXRhLm9uQ2FtZXJhRXhpdCA/IHRyaWdnZXJEYXRhLm9uQ2FtZXJhRXhpdCA6IHVuZGVmaW5lZCwgQ29sb3IzLlJlZCgpKVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvbGxvd1BhdGgobnBjOkVudGl0eSwgZGF0YT86Rm9sbG93UGF0aERhdGEpe1xuICAgICAgICBcbiAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICBsZXQgcGF0aDphbnlbXSA9W11cblxuICAgIGlmKG5wY0RhdGEuZmFjZVVzZXIpe1xuICAgICAgICBpZihUcmFja1VzZXJGbGFnLmhhcyhucGMpKXtcbiAgICAgICAgICAgIFRyYWNrVXNlckZsYWcuZGVsZXRlRnJvbShucGMpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZihucGNEYXRhLm1hbnVhbFN0b3Ape1xuICAgICAgICBsZXQgZHVyYXRpb24gPSBucGNEYXRhLnBhdGhEYXRhLnRvdGFsRHVyYXRpb25cbiAgICAgICAgbGV0IGN1cnJlbnRUaW1lcjpudW1iZXIgPSB3YWxraW5nVGltZXJzLmdldChucGMpIVxuICAgICAgICBjb25zb2xlLmxvZygnY3VycmVudCB0aW1lIGlzJywgY3VycmVudFRpbWVyKVxuICAgICAgICBpZihjdXJyZW50VGltZXIpe1xuICAgICAgICAgICAgZHVyYXRpb24gLT0gY3VycmVudFRpbWVyXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcGF0aDphbnlbXSA9IFtdXG4gICAgICAgIG5wY0RhdGEucGF0aERhdGEucGF0aC5mb3JFYWNoKChwOmFueSk9PntcbiAgICAgICAgICAgIHBhdGgucHVzaChwKVxuICAgICAgICB9KVxuICAgICAgICBwYXRoLnNwbGljZSgwLG5wY0RhdGEucGF0aEluZGV4KVxuXG4gICAgICAgIGxldCBwb3MgPSBUcmFuc2Zvcm0uZ2V0KG5wYykucG9zaXRpb25cbiAgICAgICAgcGF0aC51bnNoaWZ0KFZlY3RvcjMuY3JlYXRlKHBvcy54LCBwb3MueSwgcG9zLnopKVxuICAgICAgICB3YWxrTlBDKG5wYyxucGNEYXRhLCBucGNEYXRhLnBhdGhEYXRhLnBhdGhUeXBlLCBkdXJhdGlvbiwgcGF0aCwgcG9pbnRSZWFjaGVkQ2FsbGJhY2tzLmdldChucGMpLCBvbkZpbmlzaENhbGxiYWNrcy5nZXQobnBjKSkgICAgXG4gICAgfVxuICAgIGVsc2V7XG4gICAgICAgIGlmKGRhdGEpe1xuICAgICAgICAgICAgbnBjRGF0YS5wYXRoRGF0YSA9IGRhdGFcbiAgICBcbiAgICAgICAgICAgIGlmKGRhdGEuc3RhcnRpbmdQb2ludCl7XG4gICAgICAgICAgICAgICAgZGF0YS5wYXRoPy5zcGxpY2UoMCxkYXRhLnN0YXJ0aW5nUG9pbnQgLSAxKVxuICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgbGV0IHBvcyA9IFRyYW5zZm9ybS5nZXQobnBjKS5wb3NpdGlvblxuICAgICAgICAgICAgcGF0aC5wdXNoKFZlY3RvcjMuY3JlYXRlKHBvcy54LCBwb3MueSwgcG9zLnopKVxuICAgICAgICAgICAgZGF0YS5wYXRoPy5mb3JFYWNoKChwKT0+e1xuICAgICAgICAgICAgICAgIHBhdGgucHVzaChwKVxuICAgICAgICAgICAgfSlcbiAgICBcbiAgICAgICAgICAgIG9uRmluaXNoQ2FsbGJhY2tzLnNldChucGMsKCk9PntcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnb24gZmluaXNoZWQgY2FsbGJhY2snKVxuICAgICAgICAgICAgICAgIGlmKGRhdGEgJiYgZGF0YS5vbkZpbmlzaENhbGxiYWNrICYmICFkYXRhLmxvb3Ape1xuICAgICAgICAgICAgICAgICAgICBkYXRhLm9uRmluaXNoQ2FsbGJhY2soKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdG9wUGF0aChucGMpXG4gICAgICAgICAgICB9KVxuICAgIFxuICAgICAgICAgICAgcG9pbnRSZWFjaGVkQ2FsbGJhY2tzLnNldChucGMsICgpPT57XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ29uIHBvaW50IHJlYWNoZWQgY2FsbGJhY2snKVxuICAgICAgICAgICAgICAgIGxldCBkYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgICAgICAgICAgICAgIGRhdGEucGF0aEluZGV4ICs9IDFcbiAgICAgICAgICAgICAgICBkYXRhLm9uUmVhY2hlZFBvaW50Q2FsbGJhY2sgPyBkYXRhLm9uUmVhY2hlZFBvaW50Q2FsbGJhY2sgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB3YWxrTlBDKG5wYywgbnBjRGF0YSwgZGF0YS5wYXRoVHlwZSEsIGRhdGEudG90YWxEdXJhdGlvbiwgcGF0aCwgcG9pbnRSZWFjaGVkQ2FsbGJhY2tzLmdldChucGMpLCBvbkZpbmlzaENhbGxiYWNrcy5nZXQobnBjKSlcbiAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICBpZihucGNEYXRhLm1hbnVhbFN0b3Ape1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd3ZSBoYXZlIG1hbnVhbCBzdG9wLCBuZWVkIHRvIHBpY2sgYmFjayB1cCB3aGVyZSB3ZSBsZWZ0IG9mZicpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd3ZSBhcmUgdHJ5aW5nIHRvIGZvbGxvdyBhIHBhdGggd2l0b3V0IHN0YXJ0aW5nIG9uZSBwcmlvcicpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgIFxuICAgIH1cblxuICAgXG4gICAgfVxuXG5mdW5jdGlvbiB3YWxrTlBDKG5wYzpFbnRpdHksIG5wY0RhdGE6YW55LCB0eXBlOk5QQ1BhdGhUeXBlLCBkdXJhdGlvbjpudW1iZXIsIHBhdGg6VmVjdG9yM1tdLCBwb2ludFJlYWNoZWRDYWxsYmFjaz86YW55LCBmaW5pc2hlZENhbGxiYWNrPzphbnkpe1xuICAgIFxuICAgIGlmKElzRm9sbG93aW5nUGF0aC5oYXMobnBjKSl7XG4gICAgICAgIElzRm9sbG93aW5nUGF0aC5kZWxldGVGcm9tKG5wYylcbiAgICAgICAgd2Fsa2luZ1RpbWVycy5kZWxldGUobnBjKVxuICAgIH1cbiAgICBJc0ZvbGxvd2luZ1BhdGguY3JlYXRlKG5wYylcblxuICAgIGlmKHR5cGUpe1xuICAgICAgICBpZih0eXBlPT0gTlBDUGF0aFR5cGUuUklHSURfUEFUSCl7XG4gICAgICAgICAgICB1dGlscy5wYXRocy5zdGFydFN0cmFpZ2h0UGF0aChucGMsIHBhdGgsIGR1cmF0aW9uLHRydWUsXG4gICAgICAgICAgICAgICAgKCk9PntmaW5pc2hlZENhbGxiYWNrKCl9LCAoKT0+e3BvaW50UmVhY2hlZENhbGxiYWNrKCl9KVxuICAgICAgICB9XG4gICAgICAgIGVsc2V7XG4gICAgICAgICAgICB1dGlscy5wYXRocy5zdGFydFNtb290aFBhdGgobnBjLCBwYXRoLCBkdXJhdGlvbiwgMzAsIHRydWUsIFxuICAgICAgICAgICAgICAgICgpPT57ZmluaXNoZWRDYWxsYmFjaygpfSwgKCk9Pntwb2ludFJlYWNoZWRDYWxsYmFjaygpfSlcbiAgICAgICAgICAgIH1cbiAgICB9XG4gICAgZWxzZXtcbiAgICAgICAgdXRpbHMucGF0aHMuc3RhcnRTbW9vdGhQYXRoKG5wYywgcGF0aCwgZHVyYXRpb24sIDIwLCB0cnVlLCBcbiAgICAgICAgICAgICgpPT57ZmluaXNoZWRDYWxsYmFjaygpfSwgKCk9Pntwb2ludFJlYWNoZWRDYWxsYmFjaygpfSlcbiAgICB9ICAgXG5cbiAgICBpZiAobnBjRGF0YS53YWxraW5nQW5pbSkge1xuICAgICAgICBBbmltYXRvci5wbGF5U2luZ2xlQW5pbWF0aW9uKG5wYywgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS53YWxraW5nQW5pbSwgdHJ1ZSlcbiAgICAgICAgbnBjRGF0YS5sYXN0UGxheWVkQW5pbSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykud2Fsa2luZ0FuaW1cbiAgICAgIH1cbiAgICBucGNEYXRhLnN0YXRlID0gTlBDU3RhdGUuRk9MTE9XUEFUSFxuICAgIG5wY0RhdGEubWFudWFsU3RvcCA9IGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdG9wV2Fsa2luZyhucGM6RW50aXR5LCBkdXJhdGlvbj86IG51bWJlciwgZmluaXNoZWQ/OmJvb2xlYW4pIHtcbiAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICBucGNEYXRhLnN0YXRlID0gTlBDU3RhdGUuU1RBTkRJTkdcbiAgICBucGNEYXRhLm1hbnVhbFN0b3AgPSB0cnVlXG5cbiAgICBzdG9wUGF0aChucGMpXG5cbiAgICBpZiAoZHVyYXRpb24pIHtcbiAgICAgICAgdXRpbHMudGltZXJzLnNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgIC8vaWYgKHRoaXMuZGlhbG9nICYmIHRoaXMuZGlhbG9nLmlzRGlhbG9nT3BlbikgcmV0dXJuXG4gICAgICAgICAgICBpZihucGNEYXRhLnBhdGgpe1xuICAgICAgICAgICAgICAgIEFuaW1hdG9yLnN0b3BBbGxBbmltYXRpb25zKG5wYywgdHJ1ZSlcbiAgICAgICAgICAgICAgICBpZihucGNEYXRhQ29tcG9uZW50LmdldChucGMpLndhbGtpbmdBbmltKXtcbiAgICAgICAgICAgICAgICAgICAgQW5pbWF0b3IucGxheVNpbmdsZUFuaW1hdGlvbihucGMsIG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykud2Fsa2luZ0FuaW0sdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgbnBjRGF0YS5sYXN0UGxheWVkQW5pbSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYykud2Fsa2luZ0FuaW1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IGR1cmF0aW9uID0gbnBjRGF0YS5wYXRoRGF0YS50b3RhbER1cmF0aW9uXG4gICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRUaW1lcjpudW1iZXIgPSB3YWxraW5nVGltZXJzLmdldChucGMpIVxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjdXJyZW50IHRpbWUgaXMnLCBjdXJyZW50VGltZXIpXG4gICAgICAgICAgICAgICAgaWYoY3VycmVudFRpbWVyKXtcbiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb24gLT0gY3VycmVudFRpbWVyXG4gICAgICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgICAgIGxldCBwYXRoOmFueVtdID0gW11cbiAgICAgICAgICAgICAgICBucGNEYXRhLnBhdGhEYXRhLnBhdGguZm9yRWFjaCgocDphbnkpPT57XG4gICAgICAgICAgICAgICAgICAgIHBhdGgucHVzaChwKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgcGF0aC5zcGxpY2UoMCxucGNEYXRhLnBhdGhJbmRleClcbiAgICBcbiAgICAgICAgICAgICAgICBsZXQgcG9zID0gVHJhbnNmb3JtLmdldChucGMpLnBvc2l0aW9uXG4gICAgICAgICAgICAgICAgcGF0aC51bnNoaWZ0KFZlY3RvcjMuY3JlYXRlKHBvcy54LCBwb3MueSwgcG9zLnopKVxuICAgIFxuICAgICAgICAgICAgICAgIC8vbnBjRGF0YS5tYW51YWxTdG9wID0gZmFsc2VcbiAgICAgICAgICAgICAgICB3YWxrTlBDKG5wYyxucGNEYXRhLCBucGNEYXRhLnBhdGhEYXRhLnBhdGhUeXBlLCBkdXJhdGlvbiwgcGF0aCwgcG9pbnRSZWFjaGVkQ2FsbGJhY2tzLmdldChucGMpLCBvbkZpbmlzaENhbGxiYWNrcy5nZXQobnBjKSkgICAgXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxkdXJhdGlvbiAqIDEwMDApXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RvcFBhdGgobnBjOkVudGl0eSl7XG4gICAgdXRpbHMucGF0aHMuc3RvcFBhdGgobnBjKVxuICAgIElzRm9sbG93aW5nUGF0aC5kZWxldGVGcm9tKG5wYylcblxuICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgIGlmIChucGNEYXRhLndhbGtpbmdBbmltKSB7XG4gICAgICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmlkbGVBbmltKVxuICAgICAgICBucGNEYXRhLmxhc3RQbGF5ZWRBbmltID0gbnBjRGF0YS5pZGxlQW5pbVxuICAgIH1cblxuICAgIGlmKCFucGNEYXRhLm1hbnVhbFN0b3Ape1xuICAgICAgICBpZihucGNEYXRhLnBhdGhEYXRhLmxvb3Ape1xuICAgICAgICAgICAgbnBjRGF0YS5wYXRoSW5kZXggPSAwXG4gICAgICAgICAgICB3YWxraW5nVGltZXJzLmRlbGV0ZShucGMpXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnd2UgYXJlIGxvb3BpbmcgcGF0aCcsIG5wY0RhdGEpXG4gICAgICAgICAgICBmb2xsb3dQYXRoKG5wYywgbnBjRGF0YS5wYXRoRGF0YSlcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKG5wY0RhdGEpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhck5QQygpe1xuICAgIGFjdGl2ZU5QQyA9IE5VTExfTlBDXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRBY3RpdmVOUEMobnBjOkVudGl0eSl7XG4gICAgYWN0aXZlTlBDID0gbnBjXG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWN0aXZlTnBjU2V0KCl7XG4gICAgcmV0dXJuIGFjdGl2ZU5QQyAmJiBucGNEaWFsb2dDb21wb25lbnQuaGFzKGFjdGl2ZU5QQylcbn1cbiAgXG5cbi8qKlxuICogQ2FsbHMgdGhlIE5QQydzIGFjdGl2YXRpb24gZnVuY3Rpb24gKHNldCBvbiBOUEMgZGVmaW5pdGlvbikuIElmIE5QQyBoYXMgYGZhY2VVc2VyYCA9IHRydWUsIGl0IHdpbGwgcm90YXRlIHRvIGZhY2UgdGhlIHBsYXllci4gSXQgc3RhcnRzIGEgY29vbGRvd24gY291bnRlciB0byBhdm9pZCByZWFjdGl2YXRpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhY3RpdmF0ZShucGM6RW50aXR5KSB7XG5cbiAgICBpZihhY3RpdmVOUEMgIT0gMCl7XG4gICAgICAgIGNvbnNvbGUubG9nKCd3ZSBoYXZlIGEgY3VycmVudCBucGMsIG5lZWR0byByZW1vdmUnKVxuICAgICAgICBlbmRJbnRlcmFjdGlvbihhY3RpdmVOUEMpXG4gICAgICAgIC8vIGNsb3NlRGlhbG9nKGFjdGl2ZU5QQylcbiAgICB9XG5cbiAgICBhY3RpdmVOUEMgPSBucGNcbiAgICBvbkFjdGl2YXRlQ2JzLmdldChucGMpKClcblxuICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgIGlmIChucGNEYXRhLmZhY2VVc2VyKSB7XG4gICAgICAgIGlmKFRyYWNrVXNlckZsYWcuaGFzKG5wYykpe1xuICAgICAgICAgICAgVHJhY2tVc2VyRmxhZy5kZWxldGVGcm9tKG5wYylcbiAgICAgICAgfVxuXG4gICAgICAgIFRyYWNrVXNlckZsYWcuY3JlYXRlKG5wYyx7XG4gICAgICAgICAgICBsb2NrWFpSb3RhdGlvbjp0cnVlLFxuICAgICAgICAgICAgYWN0aXZlOnRydWUsXG4gICAgICAgICAgICByb3RTcGVlZDpucGNEYXRhLnR1cm5TcGVlZFxuICAgICAgICB9KVxuICAgIH1cbiAgICBpc0Nvb2xkb3duLnNldChucGMsIHRydWUpXG4gICAgbnBjRGF0YS5pbkNvb2xkb3duID0gdHJ1ZVxuXG4gICAgdXRpbHMudGltZXJzLnNldFRpbWVvdXQoXG4gICAgICAgIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaXNDb29sZG93bi5kZWxldGUobnBjKVxuICAgICAgICAgICAgbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKS5pbkNvb2xkb3duID0gZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgMTAwMCAqIG5wY0RhdGEuY29vbERvd25EdXJhdGlvblxuICAgIClcbiAgICBjb25zb2xlLmxvZygnYWN0aXZhdGVkIG5wYywnLCBucGNEYXRhQ29tcG9uZW50LmdldChucGMpKVxufVxuXG5mdW5jdGlvbiBlbmRJbnRlcmFjdGlvbihucGM6RW50aXR5KSB7XG4gICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgICBucGNEYXRhLnN0YXRlID0gTlBDU3RhdGUuU1RBTkRJTkdcblxuICAgICAgICBpZiAobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKXsvL30gJiYgbnBjRGlhbG9nQ29tcG9uZW50LmdldChucGMpLnZpc2libGUpIHtcbiAgICAgICAgICAgIGNsb3NlRGlhbG9nKG5wYylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKG5wY0RhdGEuZmFjZVVzZXIpe1xuICAgICAgICAgICAgaWYoVHJhY2tVc2VyRmxhZy5oYXMobnBjKSl7XG4gICAgICAgICAgICAgICAgVHJhY2tVc2VyRmxhZy5kZWxldGVGcm9tKG5wYylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKCdlbmRpbmcgaW50ZXJhY3Rpb24nLCBucGNEYXRhLCBidWJibGVzLmdldChucGMpKVxuICAgICAgICBpZihucGNEYXRhLmhhc0J1YmJsZSAmJiBidWJibGVzLmdldChucGMpLmlzQnViYmxlT3Blbil7XG4gICAgICAgICAgICBjbG9zZUJ1YmJsZShucGMpXG4gICAgICAgIH1cbn1cblxuLyoqXG4gKiBFbmRzIGludGVyYWN0aW9uIGFuZCBjYWxscyB0aGUgb25XYWxrQXdheSBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlV2Fsa0F3YXkobnBjOkVudGl0eSkge1xuICAgIGxldCBucGNEYXRhID0gbnBjRGF0YUNvbXBvbmVudC5nZXQobnBjKVxuICAgIGlmIChucGNEYXRhLnN0YXRlID09IE5QQ1N0YXRlLkZPTExPV1BBVEgpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgZW5kSW50ZXJhY3Rpb24obnBjKVxuXG4gICAgaWYgKG9uV2Fsa0F3YXlDYnMuZ2V0KG5wYykpIHtcbiAgICAgICAgb25XYWxrQXdheUNicy5nZXQobnBjKSgpXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGxheUFuaW1hdGlvbihucGM6RW50aXR5LCBhbmltOnN0cmluZywgbm9Mb29wPzpib29sZWFuLCBkdXJhdGlvbj86bnVtYmVyKXtcbiAgICBsZXQgYW5pbWF0aW9ucyA9IEFuaW1hdG9yLmdldE11dGFibGUobnBjKVxuICAgIGlmKGFuaW1hdGlvbnMuc3RhdGVzLmZpbHRlcigoYW5pbWF0aW9uKT0+IGFuaW1hdGlvbi5uYW1lID09PSBhbmltKS5sZW5ndGggPT0gMCl7XG4gICAgICAgIGFuaW1hdGlvbnMuc3RhdGVzLnB1c2goe25hbWU6YW5pbSwgY2xpcDphbmltLCBsb29wOiBub0xvb3A/IGZhbHNlIDogdHJ1ZX0pXG4gICAgfVxuXG4gICAgbGV0IG5wY0RhdGEgPSBucGNEYXRhQ29tcG9uZW50LmdldChucGMpXG4gICAgaWYobnBjRGF0YS5zdGF0ZSA9PSBOUENTdGF0ZS5GT0xMT1dQQVRIKXtcbiAgICAgICAgdXRpbHMucGF0aHMuc3RvcFBhdGgobnBjKVxuICAgIH1cblxuICAgIGlmKGFuaW1UaW1lcnMuaGFzKG5wYykpe1xuICAgICAgICB1dGlscy50aW1lcnMuY2xlYXJUaW1lb3V0KGFuaW1UaW1lcnMuZ2V0KG5wYykgYXMgbnVtYmVyKVxuICAgICAgICBhbmltVGltZXJzLmRlbGV0ZShucGMpXG4gICAgfVxuXG4gICAgQW5pbWF0b3Iuc3RvcEFsbEFuaW1hdGlvbnMobnBjLCB0cnVlKVxuICAgIEFuaW1hdG9yLnBsYXlTaW5nbGVBbmltYXRpb24obnBjLCBhbmltLCB0cnVlKVxuICAgIGlmKGR1cmF0aW9uKXtcbiAgICAgICAgY29uc29sZS5sb2coJ2hhdmUgYSBkdXJhdGlvbiB0byBwbGF5IGFuaW1hdGlvbicpXG4gICAgICAgIGlmKGFuaW1UaW1lcnMuaGFzKG5wYykpe1xuICAgICAgICAgICAgdXRpbHMudGltZXJzLmNsZWFyVGltZW91dChhbmltVGltZXJzLmdldChucGMpIGFzIG51bWJlcilcbiAgICAgICAgICAgIGFuaW1UaW1lcnMuZGVsZXRlKG5wYylcbiAgICAgICAgfVxuICAgICAgICBhbmltVGltZXJzLnNldChucGMsIHV0aWxzLnRpbWVycy5zZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICBhbmltVGltZXJzLmRlbGV0ZShucGMpXG4gICAgICAgICAgICBBbmltYXRvci5zdG9wQWxsQW5pbWF0aW9ucyhucGMsIHRydWUpXG4gICAgICAgICAgICBpZihucGNEYXRhLmlkbGVBbmltKXtcbiAgICAgICAgICAgICAgICBBbmltYXRvci5wbGF5U2luZ2xlQW5pbWF0aW9uKG5wYywgbnBjRGF0YS5pZGxlQW5pbSlcbiAgICAgICAgICAgICAgICBucGNEYXRhLmxhc3RQbGF5ZWRBbmltID0gbnBjRGF0YS5pZGxlQW5pbVxuICAgICAgICAgICAgfVxuICAgICAgICB9LCAxMDAwICogZHVyYXRpb24pKS8vXG4gICAgfSBcblxuICAgIG5wY0RhdGEubGFzdFBsYXllZEFuaW0gPSBhbmltXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGFuZ2VJZGxlQW5pbShucGM6RW50aXR5LCBhbmltYXRpb246c3RyaW5nLCBwbGF5Pzpib29sZWFuKXtcbiAgICBsZXQgbnBjRGF0YSA9IG5wY0RhdGFDb21wb25lbnQuZ2V0KG5wYylcbiAgICBucGNEYXRhLmlkbGVBbmltID0gYW5pbWF0aW9uXG5cbiAgICBsZXQgYW5pbWF0aW9ucyA9IEFuaW1hdG9yLmdldE11dGFibGUobnBjKVxuICAgIGlmKGFuaW1hdGlvbnMuc3RhdGVzLmZpbHRlcigoYW5pbSk9PiBhbmltLm5hbWUgPT09IGFuaW1hdGlvbikubGVuZ3RoID09IDApe1xuICAgICAgICBhbmltYXRpb25zLnN0YXRlcy5wdXNoKHtuYW1lOmFuaW1hdGlvbiwgY2xpcDphbmltYXRpb24sIGxvb3A6IHRydWV9KVxuICAgIH1cblxuICAgIGlmKHBsYXkpe1xuICAgICAgICBwbGF5QW5pbWF0aW9uKG5wYywgYW5pbWF0aW9uLCB0cnVlKVxuICAgICAgICBucGNEYXRhQ29tcG9uZW50LmdldChucGMpLmxhc3RQbGF5ZWRBbmltID0gYW5pbWF0aW9uXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGFsa0J1YmJsZShucGM6RW50aXR5LCBzY3JpcHQ6RGlhbG9nW10sIHN0YXJ0SW5kZXg/Om51bWJlciB8IHN0cmluZyl7XG4gICAgb3BlbkJ1YmJsZShucGMsIHNjcmlwdCxzdGFydEluZGV4KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGlhbG9nV2luZG93KGRlZmF1bHRQb3J0cmFpdD86SW1hZ2VEYXRhLCBzb3VuZD86c3RyaW5nKXtcbiAgICBsZXQgZGlhbG9nID0gZW5naW5lLmFkZEVudGl0eSgpXG4gICAgYWRkRGlhbG9nKGRpYWxvZyxzb3VuZCwgZGVmYXVsdFBvcnRyYWl0KVxuICAgIHJldHVybiBkaWFsb2dcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5EaWFsb2dXaW5kb3cobnBjOkVudGl0eSwgZGlhbG9nOkRpYWxvZ1tdLCBzdGFydEluZGV4PzpudW1iZXIgfCBzdHJpbmcpe1xuICAgIGFjdGl2ZU5QQyA9IG5wY1xuXG4gICAgaWYobnBjRGlhbG9nQ29tcG9uZW50LmhhcyhucGMpKXtcbiAgICAgICAgbGV0IGluZGV4OmFueVxuICAgICAgICBpZiAoIXN0YXJ0SW5kZXgpIHtcbiAgICAgICAgICBpbmRleCA9IDBcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc3RhcnRJbmRleCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICBpbmRleCA9IHN0YXJ0SW5kZXhcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbmRleCA9IGZpbmREaWFsb2dCeU5hbWUoZGlhbG9nLCBzdGFydEluZGV4KVxuICAgICAgICB9XG4gICAgICAgIG9wZW5EaWFsb2cobnBjLGRpYWxvZywgaW5kZXgpXG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VEaWFsb2dXaW5kb3cod2luZG93OkVudGl0eSl7XG4gICAgbGV0IGRpYWxvZyA9IG5wY0RpYWxvZ0NvbXBvbmVudC5nZXQod2luZG93KVxuICAgIGlmKHdpbmRvdyl7XG4gICAgICAgIGNsb3NlRGlhbG9nKGRpYWxvZylcbiAgICB9XG59Il19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dcl-npc-toolkit",
3
- "version": "1.1.2-20230608172751.commit-11d3b8b",
3
+ "version": "1.1.2-20230611212342.commit-1784622",
4
4
  "description": "A collection of tools for creating Non-Player-Characters (NPCs). These are capable of having conversations with the player, and play different animations.",
5
5
  "main": "./dist/index.js",
6
6
  "typings": "./dist/index.d.ts",
@@ -33,5 +33,5 @@
33
33
  "files": [
34
34
  "dist"
35
35
  ],
36
- "commit": "11d3b8b1b49910c5888b60ad6a7cfb424367c571"
36
+ "commit": "17846221548f8f959554f0f9118f9d3e29737b40"
37
37
  }