@trudb/tru-common-lib 0.1.280 → 0.1.282

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
1
1
  export class TruCardColumnSearchResultsConfigBase {
2
2
  }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNhcmQtY29sdW1uLXNlYXJjaC1yZXN1bHRzLWNvbmZpZy1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NhcmQtY29sdW1uL2NsYXNzZXMvdHJ1LWNhcmQtY29sdW1uLXNlYXJjaC1yZXN1bHRzLWNvbmZpZy1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sT0FBZ0Isb0NBQW9DO0NBS3pEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5UXVlcnkgfSBmcm9tIFwiYnJlZXplLWNsaWVudFwiO1xyXG5pbXBvcnQgeyBUcnVFbnRpdHlCYXNlIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2UtY2xhc3Nlcy90cnUtZW50aXR5LWJhc2VcIjtcclxuaW1wb3J0IHsgVHJ1Q2FyZENvbHVtbkRhdGEgfSBmcm9tIFwiLi90cnUtY2FyZC1jb2x1bW4tZGF0YVwiO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRydUNhcmRDb2x1bW5TZWFyY2hSZXN1bHRzQ29uZmlnQmFzZSB7XHJcbiAgYWJzdHJhY3Qgcm93RGF0YUVuaGFuY2VyOiAoKSA9PiBUcnVDYXJkQ29sdW1uRGF0YTtcclxuICBhYnN0cmFjdCBjYXJkU29ydDogKGNhcmRzOiBBcnJheTxhbnk+KSA9PiBhbnlcclxuICBhYnN0cmFjdCBxdWVyeT86IChicmVlemVRdWVyeTogRW50aXR5UXVlcnksIHByb3BlcnR5TmFtZTogc3RyaW5nKSA9PiBhbnk7XHJcbiAgYWJzdHJhY3QgY2FyZElkOiAoZW50aXR5OiBUcnVFbnRpdHlCYXNlKSA9PiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xyXG59XHJcbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNhcmQtY29sdW1uLXNlYXJjaC1yZXN1bHRzLWNvbmZpZy1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NhcmQtY29sdW1uL2NsYXNzZXMvdHJ1LWNhcmQtY29sdW1uLXNlYXJjaC1yZXN1bHRzLWNvbmZpZy1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sT0FBZ0Isb0NBQW9DO0NBS3pEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5UXVlcnkgfSBmcm9tIFwiYnJlZXplLWNsaWVudFwiO1xyXG5pbXBvcnQgeyBUcnVFbnRpdHlCYXNlIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2UtY2xhc3Nlcy90cnUtZW50aXR5LWJhc2VcIjtcclxuaW1wb3J0IHsgVHJ1Q2FyZENvbHVtbkRhdGEgfSBmcm9tIFwiLi90cnUtY2FyZC1jb2x1bW4tZGF0YVwiO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRydUNhcmRDb2x1bW5TZWFyY2hSZXN1bHRzQ29uZmlnQmFzZSB7XHJcbiAgYWJzdHJhY3Qgcm93RGF0YUVuaGFuY2VyOiAoKSA9PiBUcnVDYXJkQ29sdW1uRGF0YTtcclxuICBhYnN0cmFjdCBjYXJkU29ydDogKGNhcmRzOiBBcnJheTxhbnk+KSA9PiBhbnlcclxuICBhYnN0cmFjdCBxdWVyeT86IChicmVlemVRdWVyeTogRW50aXR5UXVlcnksIHByb3BlcnR5TmFtZTogc3RyaW5nKSA9PiBhbnk7XHJcbiAgYWJzdHJhY3QgY2FyZElkOiAoZW50aXR5OiBhbnkpID0+IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XHJcbn1cclxuIl19
@@ -719,7 +719,7 @@ class Card {
719
719
  }
720
720
  else {
721
721
  var cardText = document.createElement('p');
722
- let value = this.cardColumn.config.resultConfig.cardId(this.data.$entity);
722
+ let value = this.cardColumn.config.resultConfig.cardId(this.data);
723
723
  if (value)
724
724
  cardText.innerHTML = value;
725
725
  this.cardElement.appendChild(cardText);
@@ -736,4 +736,4 @@ class Card {
736
736
  }
737
737
  };
738
738
  }
739
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNhcmQtY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NhcmQtY29sdW1uL3RydS1jYXJkLWNvbHVtbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9jYXJkLWNvbHVtbi90cnUtY2FyZC1jb2x1bW4uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxLQUFLLENBQUMsTUFBTSxZQUFZLENBQUM7QUFDaEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUtwQyxPQUFPLEVBQWdCLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQVVwRCxNQUFNLE9BQU8sYUFBYTtJQTZDZDtJQUNBO0lBQ0E7SUE5Q0QsTUFBTSxDQUF1QjtJQUM3QixJQUFJLENBQU87SUFFd0IsTUFBTSxDQUFjO0lBRXhELGVBQWUsQ0FBVTtJQUN6QixzQkFBc0IsQ0FBVTtJQUNoQyxjQUFjLENBQVU7SUFDeEIscUJBQXFCLENBQVU7SUFDL0IsV0FBVyxHQUFHLElBQUksQ0FBQztJQUNuQixZQUFZLENBQWlCO0lBRTdCLGlCQUFpQixDQUFXO0lBQzVCLGNBQWMsQ0FBaUI7SUFDL0IsZ0JBQWdCLENBQVU7SUFDMUIsbUJBQW1CLENBQVc7SUFDOUIsbUJBQW1CLENBQVc7SUFFOUIsZUFBZSxDQUFXO0lBQzFCLGlCQUFpQixDQUFXO0lBQzVCLGlCQUFpQixDQUFXO0lBRTVCLFVBQVUsQ0FBc0M7SUFDaEQsUUFBUSxDQUFvQztJQUU1QyxpQkFBaUIsQ0FBVTtJQUMzQixnQkFBZ0IsQ0FBVTtJQUMxQixZQUFZLENBQU07SUFDbEIsUUFBUSxDQUFVO0lBQ2xCLElBQUksR0FBd0IsRUFBRSxDQUFDO0lBRXZDLFdBQVcsR0FBVyxjQUFjLENBQUM7SUFDckMsTUFBTSxHQUFZLEtBQUssQ0FBQztJQUN4QixPQUFPLEdBQVEsRUFBRSxDQUFDO0lBQ2xCLEtBQUssR0FBUSxFQUFFLENBQUM7SUFDaEIsYUFBYSxHQUFRLEVBQUUsQ0FBQztJQUN4QixnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDdEIsYUFBYSxHQUFrQixJQUFJLENBQUM7SUFDcEMsYUFBYSxHQUFnQixFQUFFLENBQUM7SUFDaEMsS0FBSyxDQUFpQjtJQUN0QixlQUFlLENBQWlCO0lBQ2hDLEdBQUcsQ0FBVTtJQUViLFlBQ1UsV0FBMkIsRUFDM0IsZUFBbUMsRUFDbkMsc0JBQWlEO1FBRmpELGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQixvQkFBZSxHQUFmLGVBQWUsQ0FBb0I7UUFDbkMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUEyQjtJQUMzRCxDQUFDO0lBRU8sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUEsNENBQTRDO0lBQ3BFLHNCQUFzQixHQUFHLElBQUksQ0FBQyxDQUFDLDhCQUE4QjtJQUU3RCxtQkFBbUIsR0FBRyxDQUFDLE1BQXFCLEVBQUUsRUFBRTtRQUN0RCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN0RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztJQUVNLG9CQUFvQixHQUFHLENBQUMsTUFBcUIsRUFBRSxFQUFFO1FBRXZELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyw2QkFBZ0QsQ0FBQztRQUN4RixPQUFPLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDckMsQ0FBQyxDQUFBO0lBRU8sZ0JBQWdCLEdBQUcsQ0FBQyxNQUFxQixFQUFFLEVBQUU7UUFFbkQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLDZCQUFnRCxDQUFDO1FBQ3hGLE9BQU8sQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDNUMsQ0FBQyxDQUFBO0lBRU8sbUJBQW1CLEdBQUcsQ0FBQyxNQUFxQixFQUFFLEVBQUU7UUFFdEQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLDZCQUFnRCxDQUFDO1FBQ3hGLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQyxDQUFBO0lBRU8sdUJBQXVCLEdBQUcsQ0FBQyxRQUE4QixFQUFFLFNBQWlCLEVBQUUsRUFBRTtRQUN0RixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBcUIsRUFBRSxFQUFFO1lBRWhELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLEdBQXNCLENBQUM7WUFDdkQsT0FBTyxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBSyxTQUFTLENBQUE7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUE7SUFFTyxLQUFLLEdBQUcsR0FBRyxFQUFFO1FBQ25CLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckYsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV6RixPQUFPLGFBQWEsSUFBSSxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7WUFBQyxhQUFhLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUFDLENBQUM7UUFBQSxDQUFDO1FBQ3pHLE9BQU8sZUFBZSxJQUFJLGVBQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQUMsQ0FBQztRQUNoSCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7WUFBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQUMsQ0FBQztRQUFBLENBQUM7UUFDaEUscUNBQXFDO1FBQ3JDLDZCQUE2QjtJQUMvQixDQUFDLENBQUE7SUFFTyxvQkFBb0IsR0FBRyxDQUFDLElBQXFCLEVBQU8sRUFBRTtRQUM1RCxJQUFJLE9BQU8sR0FBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNoRCxJQUFJLFFBQWdCLENBQUM7WUFDckIsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsUUFBUSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEIsQ0FBQztZQUVELElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDLENBQUE7SUFFTyxpQkFBaUIsQ0FBQyxXQUF1QixFQUFFLE1BQWU7UUFDaEUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLE1BQU07WUFDVCxZQUFZLENBQUMsT0FBTyxDQUFDLGlCQUFpQixHQUFHLE1BQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRTFELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFFMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNsQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksYUFBYSxHQUFlLEVBQUUsQ0FBQztRQUNuQyxJQUFJLFlBQVksR0FBZSxFQUFFLENBQUM7UUFDbEMsSUFBSSxPQUFPLEdBQWUsRUFBRSxDQUFDO1FBRTdCLElBQUksS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25FLElBQUksVUFBVSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUxRixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSztZQUNuQixLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQzs7WUFFNUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBRWxFLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUE7UUFDL0MsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFFMUUsdUJBQXVCO1FBQ3ZCLDZDQUE2QztRQUU3QyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDNUgsMENBQTBDO1lBRTFDLFlBQVksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUMxQyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQzNHLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUMzRCxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUNyQixPQUFPLElBQUksQ0FBQztvQkFDZCxDQUFDO2dCQUNILENBQUM7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBRXBELElBQUksa0JBQWtCLEdBQWUsRUFBRSxDQUFDO1lBQ3hDLElBQUksbUJBQW1CLEdBQWU7Z0JBQ3BDO29CQUNFLFVBQVUsRUFBRSxJQUFJO29CQUNoQixLQUFLLEVBQUUsRUFBRTtpQkFDVjthQUNGLENBQUM7WUFFRixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQzlCLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3JCLElBQUksbUJBQW1CLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUN6RCxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQzt3QkFDNUQsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDN0IsQ0FBQzt5QkFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7d0JBQ3pHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3ZCLENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQzFCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbEMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUM3QixJQUFJLFlBQVksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUN2QyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO3dCQUN0QyxPQUFPLENBQUMsQ0FBQyxHQUFHLEtBQUssTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxHQUFHLENBQUM7b0JBQzVELE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUMsQ0FBQyxDQUFDO2dCQUVILElBQUksWUFBWSxFQUFFLENBQUM7b0JBQ2pCLElBQUksbUJBQW1CLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUMvRCxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDNUQsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUM1RCxDQUFDO2dCQUNILENBQUM7cUJBQU0sSUFDTCxDQUFDLFlBQVk7b0JBQ2IsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7b0JBQ3BDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUMvQyxJQUFJLGNBQWMsR0FBRyxNQUFNLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUMxRCxJQUFJLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUN0RCxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUM3QixjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDO3dCQUNsQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQzFDLENBQUM7b0JBQ0QsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQzlELENBQUM7cUJBQU0sQ0FBQztvQkFDTixtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUN0RSxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxlQUFlLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDZCQUE2QjtnQkFFekQsYUFBYSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQzVDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO29CQUN4RCxJQUFJLENBQUM7d0JBQ0gsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7d0JBRXBDLE9BQU8sSUFBSSxDQUFDO2dCQUNoQixDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDaEMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7b0JBQ3hELElBQUksQ0FBQzt3QkFDSCxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOzt3QkFFcEMsT0FBTyxJQUFJLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDO2dCQUNILGtCQUFrQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDdEQsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7b0JBQ3hELElBQUksQ0FBQzt3QkFDSCxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOzt3QkFFcEMsT0FBTyxJQUFJLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDO2dCQUNILFlBQVksR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUMxQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztvQkFDeEQsSUFBSSxDQUFDO3dCQUNILE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O3dCQUVwQyxPQUFPLElBQUksQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUMvQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQy9CLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakUsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUN6QixNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pFLENBQUMsQ0FBQyxDQUFDO2dCQUVILGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUNwQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pFLENBQUMsQ0FBQyxDQUFDO2dCQUVILG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUNyQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pFLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLGVBQWU7Z0JBQ3RCLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFFL0MsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFdkMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO2dCQUNsRCxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBRWhELElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQ2pELGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRWhELElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1lBQ25DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBRXZCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNiLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFFckQsSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDWCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM5RixJQUFJLHNCQUFzQixHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQztvQkFDaEYsYUFBYSxDQUFDLFVBQVUsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsRixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxXQUFXLEdBQUcsR0FBRyxFQUFFO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBZSxFQUFFLEVBQUU7WUFDaEcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQyxDQUFBO0lBRU8sUUFBUSxHQUFHLENBQUMsVUFBZSxFQUFFLEVBQUU7UUFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxjQUFjLENBQUM7UUFDbEMsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBRWYsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sQ0FDL0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUNqRCxVQUFVLEVBQ1YsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFaEIsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN4QixJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDNUMsQ0FBQztZQUNELFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3hCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUE7SUFFRCxlQUFlLEdBQUcsQ0FBQyxJQUFVLEVBQUUsRUFBRTtRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ25CLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQztnQkFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDekQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELGlEQUFpRDtJQUNuRCxDQUFDLENBQUE7SUFFRCxTQUFTLEdBQUcsQ0FBQyxDQUFNLEVBQUUsSUFBVSxFQUFFLEVBQUU7UUFDakMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXBCLGtDQUFrQztRQUVsQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQzVELENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztZQUN6RCxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbkIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO1FBRW5DLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM1QixDQUFDO1FBRUQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQ3ZDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztRQUM3QixVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7UUFDbkMsVUFBVSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQ3RDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXhDLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLGdCQUFnQixDQUFDO1FBQ3pDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUNsQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFeEIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVoRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQTtJQUVELFFBQVEsR0FBRyxDQUFDLENBQU0sRUFBRSxJQUFVLEVBQUUsRUFBRTtRQUNoQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRW5CLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGdDQUFnQyxDQUFDO1lBQzlELENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1lBQzFELENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztZQUN6RCxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7UUFDckMsQ0FBQzthQUFNLENBQUM7WUFDTixDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUMsQ0FBQTtJQUVELE9BQU8sR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFO1FBQ25CLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUVwQixJQUFJLFFBQVEsR0FBOEIsUUFBUSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pGLE9BQU8sUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBRUQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ25FLE9BQU8sUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0lBRUQsSUFBSSxHQUFHLENBQUMsQ0FBTSxFQUFFLElBQVUsRUFBRSxFQUFFO1FBQzVCLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUVwQixLQUFLLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDeEQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3RCxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN2QyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CO1lBQzFELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUI7WUFDcEQsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNuQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFBQSxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3pCLDRFQUE0RTtRQUM5RSxDQUFDO2FBQU0sQ0FBQztZQUNOLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRSxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLENBQUM7WUFBQyxDQUFDO1lBQUEsQ0FBQztZQUVoRSxtQ0FBbUM7WUFDbkMsb0JBQW9CO1lBQ3BCLHdFQUF3RTtZQUN4RSxrQ0FBa0M7WUFDbEMsNkVBQTZFO1lBQzdFLG9CQUFvQjtZQUNwQix5QkFBeUI7WUFDekIsb0dBQW9HO1lBQ3BHLHdGQUF3RjtZQUN4Riw0QkFBNEI7WUFDNUIsNkVBQTZFO1lBQzdFLE9BQU87WUFDUCxVQUFVO1lBQ1YsdUJBQXVCO1lBQ3ZCLGtHQUFrRztZQUNsRyxzRkFBc0Y7WUFDdEYsMEJBQTBCO1lBQzFCLEdBQUc7UUFDTCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUE7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUNuRCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQztRQUNqRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQ2pELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDO1FBQy9ELElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUE7UUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUM3QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDO1FBQ3ZELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUM7UUFDakQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7UUFDckQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUNuRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztRQUMzRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztRQUUzRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO1FBQ25ELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDO1FBRXZELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUVyQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdkQsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUN2RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztRQUM5RCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQzlDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDckQsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxlQUFlLEdBQUcsQ0FBQyxJQUFVLEVBQUUsRUFBRTtRQUMvQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7WUFDZCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFdkQsaURBQWlEO0lBQ25ELENBQUMsQ0FBQTt1R0EvZVUsYUFBYTsyRkFBYixhQUFhLHlNQ2xCMUIsczVCQW1CQTs7MkZERGEsYUFBYTtrQkFMekIsU0FBUzsrQkFDRSxpQkFBaUI7NEpBS2xCLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRXNDLE1BQU07c0JBQWpELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7QUE4ZTVDLE1BQU0sUUFBUTtJQUtGO0lBQ0E7SUFDQTtJQU5GLG9CQUFvQixDQUFDO0lBQ3JCLHNCQUFzQixDQUFBO0lBRTlCLFlBQ1UsVUFBeUIsRUFDekIsYUFBa0IsRUFDbEIsT0FBWTtRQUZaLGVBQVUsR0FBVixVQUFVLENBQWU7UUFDekIsa0JBQWEsR0FBYixhQUFhLENBQUs7UUFDbEIsWUFBTyxHQUFQLE9BQU8sQ0FBSztRQUNwQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEcsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTVHLElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxNQUFNO1lBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXZDLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNO1lBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTyxXQUFXLEdBQWtCLEVBQUUsQ0FBQztJQUVoQyxVQUFVLEdBQUcsQ0FBQyxVQUFzQixFQUFFLE1BQWUsRUFBRSxFQUFFO1FBQy9ELElBQUksY0FBOEIsQ0FBQztRQUNuQyxJQUFJLE1BQU07WUFDUixjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7O1lBRTdGLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVqRyxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUVqRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRixDQUFDO1FBRUQsY0FBYyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVyQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDbkMsQ0FBQyxDQUFBO0lBRUQsYUFBYSxHQUFHLEdBQUcsRUFBRTtRQUNuQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoRixJQUFJLGVBQWUsQ0FBQztZQUVwQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDN0MsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDL0MsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO29CQUUzRixJQUFJLEtBQUssRUFBRSxDQUFDO3dCQUNWLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO29CQUMzRSxDQUFDO3lCQUFNLENBQUM7d0JBQ04sTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7b0JBQ3hFLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUM3QyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3QixNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsaUNBQWlDLENBQUMsQ0FBQztZQUMzRSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQTtDQUNGO0FBRUQsTUFBTSxNQUFNO0lBWUE7SUFWRixJQUFJLENBQU07SUFDVixLQUFLLEdBQWUsRUFBRSxDQUFDO0lBQ3ZCLE1BQU0sQ0FBVTtJQUNoQixhQUFhLENBQWlCO0lBQzlCLGFBQWEsQ0FBQztJQUV0QixxQkFBcUIsQ0FBaUI7SUFDdEMsZUFBZSxDQUFxQjtJQUVwQyxZQUNVLFVBQXlCLEVBQ2pDLElBQVMsRUFDVCxhQUE2QixFQUM3QixNQUFlLEVBQ2YsS0FBYTtRQUpMLGVBQVUsR0FBVixVQUFVLENBQWU7UUFNakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFFbkMsSUFBSSxhQUFhLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRCxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3RELGFBQWEsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXBDLElBQUksSUFBSSxFQUFFLFFBQVE7WUFDaEIsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUNqRSxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBRW5DLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFHN0UsOENBQThDO1FBRTlDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDeEQsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxPQUFPLEdBQUcsQ0FBQyxJQUFTLEVBQUUsRUFBRTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUMsQ0FBQTtJQUVPLFlBQVksR0FBRyxHQUFHLEVBQUU7UUFDMUIsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNO1lBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRWhFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDOUMsQ0FBQyxDQUFBO0lBRU8sZUFBZSxHQUFHLEdBQUcsRUFBRTtRQUM3QixJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEIsSUFBSSxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLElBQUksZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLG9CQUFvQixDQUFDO1lBQ3RELGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMxRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQy9DLENBQUMsQ0FBQTtJQUVPLHFCQUFxQixHQUFHLEdBQUcsRUFBRTtRQUNuQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSTtZQUNwQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDdkYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUE7SUFFTyxVQUFVLEdBQUcsQ0FBQyxJQUFTLEVBQUUsRUFBRTtRQUNqQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUU1RSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQztZQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQztZQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQ3BELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV0QixJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFBO0lBRU8sU0FBUyxHQUFHLENBQUMsU0FBa0IsRUFBRSxFQUFFO1FBQ3pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7WUFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFBO0lBRU8sa0JBQWtCLEdBQUcsR0FBRyxFQUFFO1FBQ2hDLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQ2xELElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzNDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRXpCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNuQyxJQUFJLFdBQVcsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3BHLElBQUksZ0JBQWdCLENBQUM7b0JBQ3JCLDRCQUE0QjtvQkFDNUIsMERBQTBEO29CQUMxRCxzRkFBc0Y7b0JBQ3RGLE9BQU87b0JBQ1AsVUFBVTtvQkFDVix3RUFBd0U7b0JBQ3hFLEdBQUc7b0JBRUgsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO3dCQUNyQixJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO29CQUM5RSxDQUFDO3lCQUFNLENBQUM7d0JBQ04sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsK0JBQStCLENBQUMsQ0FBQztvQkFDM0UsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQzNDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLCtCQUErQixDQUFDLENBQUM7WUFDOUUsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGlGQUFpRixDQUFDLENBQUM7UUFDMUksSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyRixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUMsQ0FBQTtJQUVELFVBQVUsR0FBRyxHQUFHLEVBQUU7UUFDaEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFFMUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUFDLENBQUM7UUFBQSxDQUFDO1FBRWhELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7Z0JBQ25ELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdEYsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUMsQ0FBQTtDQUNGO0FBRUQsTUFBTSxJQUFJO0lBVUU7SUFURixvQkFBb0IsQ0FBaUI7SUFDckMsSUFBSSxDQUFDO0lBRWIsTUFBTSxDQUFDO0lBQ1AsV0FBVyxDQUFpQjtJQUM1QixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBR2pCLFlBQ1UsVUFBeUIsRUFDakMsTUFBVyxFQUNYLElBQVMsRUFDVCxPQUFnQjtRQUhSLGVBQVUsR0FBVixVQUFVLENBQWU7UUFLakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFakIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUUxRSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTVELElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUV2RCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVTtZQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7O1lBRWhHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUV0SCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDNUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUMzRCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDcEMsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQzFELElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUN2RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFDdkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUU7Z0JBQzFELG9DQUFvQztZQUN0QyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUMzRCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDcEMsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQzFELElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUN2RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxDQUFDLENBQUMsZ0JBQWdCO29CQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQixJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV4RCxJQUFJLE9BQU87WUFDVCxJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQzs7WUFFeEgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELFNBQVMsR0FBRyxDQUFDLFNBQWMsRUFBRSxFQUFFO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1FBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUMsQ0FBQTtJQUVELFVBQVUsR0FBRyxHQUFHLEVBQUU7UUFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRXJDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFFdEIsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDViwwREFBMEQ7WUFDNUQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzNDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDMUUsSUFBSSxLQUFLO29CQUNQLFFBQVEsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2dCQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QyxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFeEMsSUFBSSxzQkFBc0IsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pELHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUM1RCxzQkFBc0IsQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUM7WUFFckQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICd1bmRlcnNjb3JlJztcclxuaW1wb3J0IHsgYnJlZXplIH0gZnJvbSAnYnJlZXplLWNsaWVudCc7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBUcnVEYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1kYXRhLWNvbnRleHQnO1xyXG5pbXBvcnQgeyBUcnVFbnRpdHlCYXNlIH0gZnJvbSAnLi4vLi4vYmFzZS1jbGFzc2VzL3RydS1lbnRpdHktYmFzZSc7XHJcbmltcG9ydCB7IFRydU1vZGVsVHlwZUxvb2t1cCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1tb2RlbC10eXBlLWxvb2t1cCc7XHJcbmltcG9ydCB7IElUcnVDYXJkQ29sdW1uQ29uZmlnIH0gZnJvbSAnLi9jbGFzc2VzL3RydS1jYXJkLWNvbHVtbi1jb25maWcnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZvcmtKb2luLCBza2lwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRydVNlYXJjaFZpZXdFdmVudEhhbmRsZXIgfSBmcm9tICcuLi8uLi9iYXNlLXZpZXdzL3NlYXJjaC9zZXJ2aWNlcy90cnUtc2VhcmNoLXZpZXctZXZlbnQtaGFuZGxlcic7XHJcbmltcG9ydCB7IEhUTUwgfSBmcm9tICduZ3gtZWRpdG9yL2xpYi90cnVzdGVkVHlwZXNVdGlsJztcclxuaW1wb3J0IHsgcmVzdWx0IH0gZnJvbSAnbG9kYXNoJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1LWNhcmQtY29sdW1uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJ1LWNhcmQtY29sdW1uLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RydS1jYXJkLWNvbHVtbi5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1Q2FyZENvbHVtbiB7XHJcbiAgQElucHV0KCkgY29uZmlnITogSVRydUNhcmRDb2x1bW5Db25maWdcclxuICBASW5wdXQoKSBuYW1lITogYW55O1xyXG5cclxuICBAVmlld0NoaWxkKCdjYXJkUG9ydGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIHBvcnRhbCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIHByaXZhdGUgcGFyZW50VGFibGVOYW1lITogc3RyaW5nO1xyXG4gIHByaXZhdGUgcGFyZW50VGFibGVQbHVyYWxMYWJlbCE6IHN0cmluZztcclxuICBwcml2YXRlIGNoaWxkVGFibGVOYW1lITogc3RyaW5nO1xyXG4gIHByaXZhdGUgY2hpbGRUYWJsZVBsdXJhbExhYmVsITogc3RyaW5nO1xyXG4gIHByaXZhdGUgcGFyZW50UXVlcnkgPSBudWxsO1xyXG4gIHByaXZhdGUgbG9ja1Byb3BlcnR5ITogc3RyaW5nIHwgbnVsbDtcclxuICBcclxuICBwcml2YXRlIHVuYXNzaWduZWRWaXNpYmxlITogYm9vbGVhbjtcclxuICBwcml2YXRlIHVuYXNzaWduZWROYW1lITogc3RyaW5nIHwgbnVsbDtcclxuICBwcml2YXRlIHVuYXNzaWduZWRMb2NrZWQhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSB1bmFzc2lnbmVkRHJhZ2dhYmxlITogYm9vbGVhbjtcclxuICBwcml2YXRlIHVuYXNzaWduZWREcm9wcGFibGUhOiBib29sZWFuO1xyXG5cclxuICBwcml2YXRlIGluYWN0aXZlVmlzaWJsZSE6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBpbmFjdGl2ZURyYWdnYWJsZSE6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBpbmFjdGl2ZURyb3BwYWJsZSE6IGJvb2xlYW47XHJcblxyXG4gIHByaXZhdGUgY29sdW1uU29ydDogKChjb2x1bW5zOiBhbnkpID0+IGFueSkgfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBjYXJkU29ydDogKChjYXJkczogYW55KSA9PiBhbnkpIHwgdW5kZWZpbmVkO1xyXG5cclxuICBwcml2YXRlIHJlbGF0ZWRQYXJlbnROYW1lITogc3RyaW5nO1xyXG4gIHByaXZhdGUgcmVsYXRlZENoaWxkTmFtZSE6IHN0cmluZztcclxuICBwcml2YXRlIGluc2VydEJlZm9yZTogYW55O1xyXG4gIHByaXZhdGUgdW5pcXVlSWQhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBzdWJzOiBBcnJheTxTdWJzY3JpcHRpb24+ID0gW107XHJcblxyXG4gIGJ1c3lNZXNzYWdlOiBzdHJpbmcgPSAnUmVuZGVyaW5nLi4uJztcclxuICBpc0J1c3k6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBjb2x1bW5zOiBhbnkgPSBbXTtcclxuICBjYXJkczogYW55ID0gW107XHJcbiAgbG9ja2VkQ29sdW1uczogYW55ID0gW107XHJcbiAgY29sdW1uRmlsdGVyUmVmcyA9IFtdO1xyXG4gIGNhcmRGaWx0ZXJTdHI6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIHNlbGVjdGVkQ2FyZHM6IEFycmF5PENhcmQ+ID0gW107XHJcbiAgY29sb3IhOiBzdHJpbmcgfCBudWxsO1xyXG4gIHVuYXNzaWduZWRDb2xvciE6IHN0cmluZyB8IG51bGw7XHJcbiAga2V5ITogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0LFxyXG4gICAgcHJpdmF0ZSBtb2RlbFR5cGVMb29rdXA6IFRydU1vZGVsVHlwZUxvb2t1cCxcclxuICAgIHByaXZhdGUgc2VhcmNoVmlld0V2ZW50SGFuZGxlcjogVHJ1U2VhcmNoVmlld0V2ZW50SGFuZGxlcikge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXJlbnRUYWJsZU1vZGVsID0gbnVsbDsvL2RhdGFTZXJ2aWNlLm1vZGVsLnRhYmxlc1twYXJlbnRUYWJsZU5hbWVdO1xyXG4gIHByaXZhdGUgdXNlckhhc1BhcmVudFRhYmxlUm9sZSA9IG51bGw7IC8vcGFyZW50VGFibGVNb2RlbC5jYW5EaXNwbGF5O1xyXG5cclxuICBwcml2YXRlIGNyZWF0ZURhdGFGb3JFbnRpdHkgPSAoZW50aXR5OiBUcnVFbnRpdHlCYXNlKSA9PiB7XHJcbiAgICB2YXIgZGF0YSA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5yb3dEYXRhRW5oYW5jZXIoKTtcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgaGFzVW5kZWZpbmVkQ2hpbGRyZW4gPSAoZW50aXR5OiBUcnVFbnRpdHlCYXNlKSA9PiB7XHJcbiAgICB0eXBlIEVudGl0eU9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBlbnRpdHk7XHJcbiAgICBjb25zdCBlbnRpdHlQcm9wZXJ0eU5hbWUgPSB0aGlzLmNvbmZpZy5wYXJlbnRUb0NoaWxkUmVsYXRpb25zaGlwTmFtZSBhcyBFbnRpdHlPYmplY3RLZXk7XHJcbiAgICByZXR1cm4gIWVudGl0eVtlbnRpdHlQcm9wZXJ0eU5hbWVdO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNFbXB0eUNoaWxkcmVuID0gKGVudGl0eTogVHJ1RW50aXR5QmFzZSkgPT4ge1xyXG4gICAgdHlwZSBFbnRpdHlPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgZW50aXR5O1xyXG4gICAgY29uc3QgZW50aXR5UHJvcGVydHlOYW1lID0gdGhpcy5jb25maWcucGFyZW50VG9DaGlsZFJlbGF0aW9uc2hpcE5hbWUgYXMgRW50aXR5T2JqZWN0S2V5O1xyXG4gICAgcmV0dXJuICFlbnRpdHlbZW50aXR5UHJvcGVydHlOYW1lXS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc0luYWN0aXZlQ2hpbGRyZW4gPSAoZW50aXR5OiBUcnVFbnRpdHlCYXNlKSA9PiB7XHJcbiAgICB0eXBlIEVudGl0eU9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBlbnRpdHk7XHJcbiAgICBjb25zdCBlbnRpdHlQcm9wZXJ0eU5hbWUgPSB0aGlzLmNvbmZpZy5wYXJlbnRUb0NoaWxkUmVsYXRpb25zaGlwTmFtZSBhcyBFbnRpdHlPYmplY3RLZXk7XHJcbiAgICByZXR1cm4gXy5ldmVyeShbZW50aXR5UHJvcGVydHlOYW1lXSwgKGNoaWxkOiBhbnkpID0+IHsgcmV0dXJuICFjaGlsZC5hY3RpdmU7IH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYXNBZGRlZFVuc2F2ZWRDaGlsZHJlbiA9IChlbnRpdGllczogQXJyYXk8VHJ1RW50aXR5QmFzZT4sIHBhcmVudFJlZjogbnVtYmVyKSA9PiB7XHJcbiAgICByZXR1cm4gXy5zb21lKGVudGl0aWVzLCAoZW50aXR5OiBUcnVFbnRpdHlCYXNlKSA9PiB7XHJcbiAgICAgIHR5cGUgRW50aXR5T2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgICAgY29uc3QgZW50aXR5UHJvcGVydHlOYW1lID0gdGhpcy5rZXkgYXMgRW50aXR5T2JqZWN0S2V5O1xyXG4gICAgICByZXR1cm4gZW50aXR5W2VudGl0eVByb3BlcnR5TmFtZV0gPT09IHBhcmVudFJlZlxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyID0gKCkgPT4ge1xyXG4gICAgdmFyIGxvY2tlZENvbHVtbnMgPSB0aGlzLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG4gICAgdmFyIHVubG9ja2VkQ29sdW1ucyA9IHRoaXMucG9ydGFsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnVubG9ja2VkLWNvbHVtbnMnKVswXTtcclxuXHJcbiAgICB3aGlsZSAobG9ja2VkQ29sdW1ucyAmJiBsb2NrZWRDb2x1bW5zLmxhc3RDaGlsZCkgeyBsb2NrZWRDb2x1bW5zLnJlbW92ZUNoaWxkKGxvY2tlZENvbHVtbnMubGFzdENoaWxkKTsgfTtcclxuICAgIHdoaWxlICh1bmxvY2tlZENvbHVtbnMgJiYgdW5sb2NrZWRDb2x1bW5zLmxhc3RDaGlsZCkgeyB1bmxvY2tlZENvbHVtbnMucmVtb3ZlQ2hpbGQodW5sb2NrZWRDb2x1bW5zLmxhc3RDaGlsZCk7IH1cclxuICAgIHdoaWxlICh0aGlzLnNlbGVjdGVkQ2FyZHMubGVuZ3RoKSB7IHRoaXMuc2VsZWN0ZWRDYXJkcy5wb3AoKTsgfTtcclxuICAgIC8vdGhpcy5jb25maWcub25TZWxlY3Rpb25DaGFuZ2VkKFtdKTtcclxuICAgIC8vdGhpcy5jb25maWcuY2xlYXJGaWx0ZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFZhbHVlRnJvbVNvcnRQYXRoID0gKGFyZ3M6IFthbnksIHN0cmluZ1tdXSk6IGFueSA9PiB7XHJcbiAgICBsZXQgY3VycmVudDogYW55ID0gYXJnc1swXTtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBhcmdzWzFdLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBwYXJ0TmFtZTogc3RyaW5nO1xyXG4gICAgICBpZiAoaSAhPT0gYXJnc1sxXS5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgcGFydE5hbWUgPSAnbycgKyBhcmdzWzFdW2ldO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBhcnROYW1lID0gYXJnc1sxXVtpXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGN1cnJlbnRbcGFydE5hbWVdKSB7XHJcbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnRbcGFydE5hbWVdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY3VycmVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlSXRlbXNTb3VyY2UobmV3RW50aXRpZXM6IEFycmF5PGFueT4sIHJldmVydDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5jbGVhcigpO1xyXG4gICAgaWYgKCFyZXZlcnQpXHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzY3JvbGxfcG9zaXRpb24nICsgdXVpZHY0KCksICcwJyk7XHJcblxyXG4gICAgdGhpcy5jb2x1bW5GaWx0ZXJSZWZzID0gW107XHJcbiAgICB0aGlzLmNhcmRGaWx0ZXJTdHIgPSBudWxsO1xyXG5cclxuICAgIGlmICghbmV3RW50aXRpZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMubG9ja2VkQ29sdW1ucyA9IFtdO1xyXG4gICAgICB0aGlzLmNvbHVtbnMgPSBbXTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBsb2NrZWRDb2x1bW5zOiBBcnJheTxhbnk+ID0gW107XHJcbiAgICBsZXQgZW1wdHlQYXJlbnRzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgICBsZXQgY29sdW1uczogQXJyYXk8YW55PiA9IFtdO1xyXG5cclxuICAgIGxldCBxdWVyeSA9IG5ldyBicmVlemUuRW50aXR5UXVlcnkoJ1F1ZXJ5JyArIHRoaXMucGFyZW50VGFibGVOYW1lKTtcclxuICAgIGxldCBwYXJlbnRSZWZzID0gbmV3RW50aXRpZXMubWFwKChlOiBhbnkpID0+IHsgcmV0dXJuIGVbdGhpcy5wYXJlbnRUYWJsZU5hbWUgKyAnUmVmJ107IH0pO1xyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZy5xdWVyeSlcclxuICAgICAgcXVlcnkgPSB0aGlzLmNvbmZpZy5xdWVyeShxdWVyeSwgdGhpcy5jb25maWcucGFyZW50VG9DaGlsZFJlbGF0aW9uc2hpcE5hbWUpO1xyXG4gICAgZWxzZVxyXG4gICAgICBxdWVyeSA9IHF1ZXJ5LmV4cGFuZCh0aGlzLmNvbmZpZy5wYXJlbnRUb0NoaWxkUmVsYXRpb25zaGlwTmFtZSk7XHJcblxyXG4gICAgbGV0IHVuaXF1ZVBhcmVudFJlZnMgPSBbLi4ubmV3IFNldChwYXJlbnRSZWZzKV1cclxuICAgIHF1ZXJ5ID0gcXVlcnkud2hlcmUodGhpcy5wYXJlbnRUYWJsZU5hbWUgKyAnUmVmJywgJ2luJywgdW5pcXVlUGFyZW50UmVmcyk7XHJcblxyXG4gICAgLy9pZiAodGhpcy5wYXJlbnRRdWVyeSlcclxuICAgIC8vICBxdWVyeSA9IHF1ZXJpZXNbdGhpcy5wYXJlbnRRdWVyeV0ocXVlcnkpO1xyXG5cclxuICAgIHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuY3VzdG9tU2VhcmNoKHRoaXMubW9kZWxUeXBlTG9va3VwLmdldFR5cGUodGhpcy5wYXJlbnRUYWJsZU5hbWUpLCBxdWVyeSkuc3Vic2NyaWJlKChwYXJlbnRzKSA9PiB7XHJcbiAgICAgIC8vdGhpcy5jb25maWcuYWRkUGFyZW50c1RvRmlsdGVyKHBhcmVudHMpO1xyXG5cclxuICAgICAgZW1wdHlQYXJlbnRzID0gXy5maWx0ZXIocGFyZW50cywgKHBhcmVudCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmhhc1VuZGVmaW5lZENoaWxkcmVuKHBhcmVudCkgfHwgdGhpcy5oYXNFbXB0eUNoaWxkcmVuKHBhcmVudCkgfHwgdGhpcy5oYXNJbmFjdGl2ZUNoaWxkcmVuKHBhcmVudCkpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5oYXNBZGRlZFVuc2F2ZWRDaGlsZHJlbihuZXdFbnRpdGllcywgcGFyZW50LlJlZikpIHtcclxuICAgICAgICAgICAgcGFyZW50WydjYXJkcyddID0gW107XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgICBsZXQgcXVlcnlhYmxlUGFyZW50UmVmcyA9IF8ucGx1Y2socGFyZW50cywgdGhpcy5rZXkpXHJcblxyXG4gICAgICBsZXQgaW5hY3RpdmVXaXRoUGFyZW50OiBBcnJheTxhbnk+ID0gW107XHJcbiAgICAgIGxldCBhY3RpdmVXaXRob3V0UGFyZW50OiBBcnJheTxhbnk+ID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHVuYXNzaWduZWQ6IHRydWUsXHJcbiAgICAgICAgICBjYXJkczogW11cclxuICAgICAgICB9XHJcbiAgICAgIF07XHJcblxyXG4gICAgICBwYXJlbnRzLmZvckVhY2goKHBhcmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgcGFyZW50WydjYXJkcyddID0gW107XHJcbiAgICAgICAgaWYgKHF1ZXJ5YWJsZVBhcmVudFJlZnMuaW5kZXhPZihwYXJlbnRbdGhpcy5rZXldKSAhPT0gLTEpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmxvY2tQcm9wZXJ0eSAhPT0gbnVsbCAmJiBwYXJlbnRbdGhpcy5sb2NrUHJvcGVydHldKSB7XHJcbiAgICAgICAgICAgIGxvY2tlZENvbHVtbnMucHVzaChwYXJlbnQpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmxvY2tQcm9wZXJ0eSA9PT0gbnVsbCB8fCAhcGFyZW50W3RoaXMubG9ja1Byb3BlcnR5XSAmJiAhXy5jb250YWlucyhlbXB0eVBhcmVudHMsIHBhcmVudCkpIHtcclxuICAgICAgICAgICAgY29sdW1ucy5wdXNoKHBhcmVudCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHBhcmVudFsnaW5hY3RpdmUnXSA9IHRydWU7XHJcbiAgICAgICAgICBpbmFjdGl2ZVdpdGhQYXJlbnQucHVzaChwYXJlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBuZXdFbnRpdGllcy5mb3JFYWNoKChlbnRpdHkpID0+IHtcclxuICAgICAgICB2YXIgZW50aXR5UGFyZW50ID0gXy5maW5kKHBhcmVudHMsIChwKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZW50aXR5WydvJyArIHRoaXMucmVsYXRlZFBhcmVudE5hbWVdKVxyXG4gICAgICAgICAgICByZXR1cm4gcC5SZWYgPT09IGVudGl0eVsnbycgKyB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lXS5SZWY7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmIChlbnRpdHlQYXJlbnQpIHtcclxuICAgICAgICAgIGlmIChxdWVyeWFibGVQYXJlbnRSZWZzLmluZGV4T2YoZW50aXR5UGFyZW50W3RoaXMua2V5XSkgIT09IC0xKSB7XHJcbiAgICAgICAgICAgIGVudGl0eVBhcmVudC5jYXJkcy5wdXNoKHRoaXMuY3JlYXRlRGF0YUZvckVudGl0eShlbnRpdHkpKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGVudGl0eVBhcmVudC5jYXJkcy5wdXNoKHRoaXMuY3JlYXRlRGF0YUZvckVudGl0eShlbnRpdHkpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgIWVudGl0eVBhcmVudCAmJlxyXG4gICAgICAgICAgZW50aXR5WydvJyArIHRoaXMucmVsYXRlZFBhcmVudE5hbWVdICYmXHJcbiAgICAgICAgICBlbnRpdHlbJ28nICsgdGhpcy5yZWxhdGVkUGFyZW50TmFtZV0uUmVmID4gMCkge1xyXG4gICAgICAgICAgbGV0IGluYWN0aXZlUGFyZW50ID0gZW50aXR5WydvJyArIHRoaXMucmVsYXRlZFBhcmVudE5hbWVdO1xyXG4gICAgICAgICAgaWYgKGluYWN0aXZlV2l0aFBhcmVudC5pbmRleE9mKGluYWN0aXZlUGFyZW50KSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgaW5hY3RpdmVQYXJlbnRbJ2NhcmRzJ10gPSBbXTtcclxuICAgICAgICAgICAgaW5hY3RpdmVQYXJlbnRbJ2luYWN0aXZlJ10gPSB0cnVlO1xyXG4gICAgICAgICAgICBpbmFjdGl2ZVdpdGhQYXJlbnQucHVzaChpbmFjdGl2ZVBhcmVudCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpbmFjdGl2ZVBhcmVudC5jYXJkcy5wdXNoKHRoaXMuY3JlYXRlRGF0YUZvckVudGl0eShlbnRpdHkpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgYWN0aXZlV2l0aG91dFBhcmVudFswXS5jYXJkcy5wdXNoKHRoaXMuY3JlYXRlRGF0YUZvckVudGl0eShlbnRpdHkpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHRoaXMuY29sdW1uU29ydCkge1xyXG4gICAgICAgIHZhciBjb2x1bW5Tb3J0UGFydHMgPSBbJyddOyAvL3RoaXMuY29sdW1uU29ydC5zcGxpdCgnLycpO1xyXG5cclxuICAgICAgICBsb2NrZWRDb2x1bW5zID0gXy5zb3J0QnkobG9ja2VkQ29sdW1ucywgKG8pID0+IHtcclxuICAgICAgICAgIHZhciB2ID0gdGhpcy5nZXRWYWx1ZUZyb21Tb3J0UGF0aChbbywgY29sdW1uU29ydFBhcnRzXSk7XHJcbiAgICAgICAgICBpZiAodilcclxuICAgICAgICAgICAgcmV0dXJuIF8uaXNTdHJpbmcodikgPyB2LnRyaW0oKSA6IHY7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbHVtbnMgPSBfLnNvcnRCeShjb2x1bW5zLCAobykgPT4ge1xyXG4gICAgICAgICAgdmFyIHYgPSB0aGlzLmdldFZhbHVlRnJvbVNvcnRQYXRoKFtvLCBjb2x1bW5Tb3J0UGFydHNdKTtcclxuICAgICAgICAgIGlmICh2KVxyXG4gICAgICAgICAgICByZXR1cm4gXy5pc1N0cmluZyh2KSA/IHYudHJpbSgpIDogdjtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaW5hY3RpdmVXaXRoUGFyZW50ID0gXy5zb3J0QnkoaW5hY3RpdmVXaXRoUGFyZW50LCAobykgPT4ge1xyXG4gICAgICAgICAgdmFyIHYgPSB0aGlzLmdldFZhbHVlRnJvbVNvcnRQYXRoKFtvLCBjb2x1bW5Tb3J0UGFydHNdKTtcclxuICAgICAgICAgIGlmICh2KVxyXG4gICAgICAgICAgICByZXR1cm4gXy5pc1N0cmluZyh2KSA/IHYudHJpbSgpIDogdjtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZW1wdHlQYXJlbnRzID0gXy5zb3J0QnkoZW1wdHlQYXJlbnRzLCAobykgPT4ge1xyXG4gICAgICAgICAgdmFyIHYgPSB0aGlzLmdldFZhbHVlRnJvbVNvcnRQYXRoKFtvLCBjb2x1bW5Tb3J0UGFydHNdKTtcclxuICAgICAgICAgIGlmICh2KVxyXG4gICAgICAgICAgICByZXR1cm4gXy5pc1N0cmluZyh2KSA/IHYudHJpbSgpIDogdjtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25maWcuY2FyZFNvcnQgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBsb2NrZWRDb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICAgICAgY29sdW1uLmNhcmRzID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmNhcmRTb3J0KGNvbHVtbi5jYXJkcyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgICBjb2x1bW4uY2FyZHMgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuY2FyZFNvcnQoY29sdW1uLmNhcmRzKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaW5hY3RpdmVXaXRoUGFyZW50LmZvckVhY2goKGNvbHVtbikgPT4ge1xyXG4gICAgICAgICAgY29sdW1uLmNhcmRzID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmNhcmRTb3J0KGNvbHVtbi5jYXJkcyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGFjdGl2ZVdpdGhvdXRQYXJlbnQuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgICBjb2x1bW4uY2FyZHMgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuY2FyZFNvcnQoY29sdW1uLmNhcmRzKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuaW5hY3RpdmVWaXNpYmxlKVxyXG4gICAgICAgIGNvbHVtbnMgPSBjb2x1bW5zLmNvbmNhdChpbmFjdGl2ZVdpdGhQYXJlbnQpO1xyXG5cclxuICAgICAgY29sdW1ucyA9IGNvbHVtbnMuY29uY2F0KGVtcHR5UGFyZW50cyk7XHJcblxyXG4gICAgICBpZiAodGhpcy51bmFzc2lnbmVkVmlzaWJsZSAmJiAhdGhpcy51bmFzc2lnbmVkTG9ja2VkKVxyXG4gICAgICAgIGNvbHVtbnMgPSBjb2x1bW5zLmNvbmNhdChhY3RpdmVXaXRob3V0UGFyZW50KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnVuYXNzaWduZWRWaXNpYmxlICYmIHRoaXMudW5hc3NpZ25lZExvY2tlZClcclxuICAgICAgICBsb2NrZWRDb2x1bW5zID0gY29sdW1ucy5jb25jYXQobG9ja2VkQ29sdW1ucyk7XHJcblxyXG4gICAgICB0aGlzLmxvY2tlZENvbHVtbnMgPSBsb2NrZWRDb2x1bW5zO1xyXG4gICAgICB0aGlzLmNvbHVtbnMgPSBjb2x1bW5zO1xyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jbGVhcigpO1xyXG4gICAgICAgIG5ldyBDYXJkVmlldyh0aGlzLCB0aGlzLmxvY2tlZENvbHVtbnMsIHRoaXMuY29sdW1ucyk7XHJcblxyXG4gICAgICAgIGlmIChyZXZlcnQpIHtcclxuICAgICAgICAgIGxldCBjb2x1bW5FbGVtZW50ID0gdGhpcy5wb3J0YWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudHJ1LWNhcmQtcG9ydGFsLWNvbHVtbnMnKVswXTtcclxuICAgICAgICAgIGxldCBwcmV2aW91c1Njcm9sbFBvc2l0aW9uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Njcm9sbF9wb3NpdGlvbicgKyB1dWlkdjQoKSk7XHJcbiAgICAgICAgICBjb2x1bW5FbGVtZW50LnNjcm9sbExlZnQgPSBwcmV2aW91c1Njcm9sbFBvc2l0aW9uID8gK3ByZXZpb3VzU2Nyb2xsUG9zaXRpb24gOiAwO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG8gPSAoKSA9PiB7XHJcbiAgICB0aGlzLnN1YnMucHVzaCh0aGlzLnNlYXJjaFZpZXdFdmVudEhhbmRsZXIub25TZWFyY2goKS5waXBlKHNraXAoMSkpLnN1YnNjcmliZSgoc2V0dXBRdWVyeTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMub25TZWFyY2goc2V0dXBRdWVyeSk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uU2VhcmNoID0gKHNldHVwUXVlcnk6IGFueSkgPT4ge1xyXG4gICAgdGhpcy5pc0J1c3kgPSB0cnVlO1xyXG4gICAgdGhpcy5idXN5TWVzc2FnZSA9ICdTZWFyY2hpbmcuLi4nO1xyXG4gICAgbGV0IGpvaW5zID0gW107XHJcblxyXG4gICAgam9pbnMucHVzaCh0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLnNlYXJjaChcclxuICAgICAgdGhpcy5tb2RlbFR5cGVMb29rdXAuZ2V0VHlwZSh0aGlzLmNoaWxkVGFibGVOYW1lKSxcclxuICAgICAgc2V0dXBRdWVyeSxcclxuICAgICAgbnVsbCwgZmFsc2UpKTtcclxuXHJcbiAgICBmb3JrSm9pbihqb2lucykuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogcmVzdWx0cyA9PiB7XHJcbiAgICAgICAgdGhpcy5jYXJkcyA9IHJlc3VsdHNbMF07XHJcbiAgICAgICAgdGhpcy51cGRhdGVJdGVtc1NvdXJjZShyZXN1bHRzWzBdLCBmYWxzZSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0J1c3kgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmJ1c3lNZXNzYWdlID0gJyc7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlU2VsZWN0aW9uID0gKGNhcmQ6IENhcmQpID0+IHtcclxuICAgIGlmICghY2FyZC5zZWxlY3RlZCkge1xyXG4gICAgICB2YXIgaW5kZXggPSB0aGlzLnNlbGVjdGVkQ2FyZHMuaW5kZXhPZihjYXJkKTtcclxuICAgICAgaWYgKGluZGV4ICE9PSAtMSlcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ2FyZHMuc3BsaWNlKGluZGV4LCAxKTtcclxuXHJcbiAgICAgIGNhcmQuY2FyZEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtc2VsZWN0ZWQnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciBpbmRleCA9IHRoaXMuc2VsZWN0ZWRDYXJkcy5pbmRleE9mKGNhcmQpO1xyXG4gICAgICBpZiAoaW5kZXggPT09IC0xKVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXJkcy5wdXNoKGNhcmQpO1xyXG5cclxuICAgICAgY2FyZC5jYXJkRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0cnUtY2FyZC1zZWxlY3RlZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vc2NvcGUuY29uZmlnLm9uU2VsZWN0aW9uQ2hhbmdlZChzZWxlY3RlZENhcmRzKTtcclxuICB9XHJcblxyXG4gIGRyYWdTdGFydCA9IChlOiBhbnksIGNhcmQ6IENhcmQpID0+IHtcclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgLy9zY29wZS5jb25maWcuY2xvc2VTZWFyY2hQYW5lbCgpO1xyXG5cclxuICAgIGlmICgoY2FyZC5jb2x1bW4uZGF0YS51bmFzc2lnbmVkICYmICF0aGlzLnVuYXNzaWduZWREcmFnZ2FibGUpIHx8XHJcbiAgICAgIChjYXJkLmNvbHVtbi5kYXRhLmluYWN0aXZlICYmICF0aGlzLmluYWN0aXZlRHJhZ2dhYmxlKSkge1xyXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBlLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ21vdmUnO1xyXG5cclxuICAgIGlmICghY2FyZC5zZWxlY3RlZCkge1xyXG4gICAgICBjYXJkLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb24oY2FyZClcclxuICAgIH0gICBcclxuXHJcbiAgICBsZXQgY2xvbmVkTm9kZSA9IGUudGFyZ2V0LmNsb25lTm9kZSh0cnVlKTtcclxuICAgIGNsb25lZE5vZGUuc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XHJcbiAgICBjbG9uZWROb2RlLnN0eWxlLnRvcCA9IFwiMHB4XCI7XHJcbiAgICBjbG9uZWROb2RlLnN0eWxlLmxlZnQgPSBcIi0xMDAwMHB4XCI7XHJcbiAgICBjbG9uZWROb2RlLnN0eWxlLm92ZXJmbG93ID0gJ3Zpc2libGUnO1xyXG4gICAgY2xvbmVkTm9kZS5jbGFzc0xpc3QuYWRkKCdjbG9uZWQtY2FyZCcpO1xyXG5cclxuICAgIHZhciBpbm5lciA9IGNsb25lZE5vZGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInRydS1jYXJkLXBvcnRhbC1jYXJkXCIpWzBdO1xyXG4gICAgaW5uZXIuc3R5bGUudHJhbnNmb3JtID0gXCJyb3RhdGUoLTEwZGVnKVwiO1xyXG4gICAgaW5uZXIuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xyXG4gICAgaW5uZXIuc3R5bGUuekluZGV4ID0gMTA7XHJcblxyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjbG9uZWROb2RlKTtcclxuICAgIGUuZGF0YVRyYW5zZmVyLnNldERyYWdJbWFnZShjbG9uZWROb2RlLCA1MCwgNTApO1xyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZHJhZ092ZXIgPSAoZTogYW55LCBjYXJkOiBDYXJkKSA9PiB7XHJcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDtcclxuICAgIGlmICghdGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygndHJ1LWNhcmQtcG9ydGFsLWNhcmQtY29udGFpbmVyJykgfHxcclxuICAgICAgKGNhcmQuY29sdW1uLmRhdGEudW5hc3NpZ25lZCAmJiAhdGhpcy51bmFzc2lnbmVkRHJvcHBhYmxlKSB8fFxyXG4gICAgICAoY2FyZC5jb2x1bW4uZGF0YS5pbmFjdGl2ZSAmJiAhdGhpcy5pbmFjdGl2ZURyb3BwYWJsZSkpIHtcclxuICAgICAgZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdub25lJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGUuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbW92ZSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkcmFnRW5kID0gKGU6IGFueSkgPT4ge1xyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBsZXQgZWxlbWVudHM6IEhUTUxDb2xsZWN0aW9uT2Y8RWxlbWVudD4gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjbG9uZWQtY2FyZCcpO1xyXG4gICAgd2hpbGUgKGVsZW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZWxlbWVudHNbMF0ucGFyZW50Tm9kZT8ucmVtb3ZlQ2hpbGQoZWxlbWVudHNbMF0pO1xyXG4gICAgfVxyXG5cclxuICAgIGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHJ1LWNhcmQtcGxhY2Vob2xkZXInKTtcclxuICAgIHdoaWxlIChlbGVtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGVsZW1lbnRzWzBdLnBhcmVudE5vZGU/LnJlbW92ZUNoaWxkKGVsZW1lbnRzWzBdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRyb3AgPSAoZTogYW55LCBjYXJkOiBDYXJkKSA9PiB7XHJcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSB0aGlzLnNlbGVjdGVkQ2FyZHMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcclxuICAgICAgbGV0IGluZGV4ID0gY2FyZC5jb2x1bW4uY2FyZHMuaW5kZXhPZih0aGlzLnNlbGVjdGVkQ2FyZHNbaV0pO1xyXG4gICAgICBpZiAoaW5kZXggIT09IC0xKVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXJkc1tpXS51cGRhdGVEYXRhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNhcmQuY29sdW1uLmRhdGEudW5hc3NpZ25lZCAmJiAhdGhpcy51bmFzc2lnbmVkRHJvcHBhYmxlIHx8XHJcbiAgICAgIGNhcmQuY29sdW1uLmRhdGEuaW5hY3RpdmUgJiYgIXRoaXMuaW5hY3RpdmVEcm9wcGFibGUgfHxcclxuICAgICAgIXRoaXMuc2VsZWN0ZWRDYXJkcy5sZW5ndGgpIHtcclxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLmNvbmZpZyA9PT0gbnVsbCkge1xyXG4gICAgICAvL3RoaXMuY29uZmlnLm9uRHJvcChjYXJkLCB0aGlzLnNlbGVjdGVkQ2FyZHMsIHRoaXMuY29uZmlnLCB0aGlzLnBvcnRhbCwgZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VsZWN0ZWRDYXJkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNhcmQuY29sdW1uLmFkZENhcmQodGhpcy5zZWxlY3RlZENhcmRzW2ldKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yICh2YXIgaSA9IHRoaXMuc2VsZWN0ZWRDYXJkcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXJkc1tpXS5jb2x1bW4ucmVtb3ZlQ2FyZCh0aGlzLnNlbGVjdGVkQ2FyZHNbaV0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB3aGlsZSAodGhpcy5zZWxlY3RlZENhcmRzLmxlbmd0aCkgeyB0aGlzLnNlbGVjdGVkQ2FyZHMucG9wKCk7IH07XHJcbiAgICAgIFxyXG4gICAgICAvL2xldCBzYXZlUHJvbWlzZSA9IC5jb25maWcuc2F2ZSgpO1xyXG4gICAgICAvL2lmIChzYXZlUHJvbWlzZSkge1xyXG4gICAgICAvLyAgdGhpcy5wb3J0YWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0cnUtY2FyZC1wb3J0YWwtZGlzYWJsZWQnKTtcclxuICAgICAgLy8gIGF3YWl0IHNhdmVQcm9taXNlLnRoZW4oKCkgPT4ge1xyXG4gICAgICAvLyAgICB0aGlzLnBvcnRhbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3RydS1jYXJkLXBvcnRhbC1kaXNhYmxlZCcpO1xyXG4gICAgICAvLyAgfSkuY2F0Y2goKCkgPT4ge1xyXG4gICAgICAvLyAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIC8vICAgIHZhciBjb2x1bW5FbGVtZW50ID0gdGhpcy5wb3J0YWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudHJ1LWNhcmQtcG9ydGFsLWNvbHVtbnMnKVswXTtcclxuICAgICAgLy8gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Njcm9sbF9wb3NpdGlvbicgKyB0aGlzLnVuaXF1ZUlkLCBjb2x1bW5FbGVtZW50LnNjcm9sbExlZnQpO1xyXG4gICAgICAvLyAgICBzY29wZS5jb25maWcucmV2ZXJ0KCk7XHJcbiAgICAgIC8vICAgIHRoaXMucG9ydGFsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtcG9ydGFsLWRpc2FibGVkJyk7XHJcbiAgICAgIC8vICB9KTtcclxuICAgICAgLy99IGVsc2Uge1xyXG4gICAgICAvLyAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAvLyAgdmFyIGNvbHVtbkVsZW1lbnQgPSB0aGlzLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50cnUtY2FyZC1wb3J0YWwtY29sdW1ucycpWzBdO1xyXG4gICAgICAvLyAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Njcm9sbF9wb3NpdGlvbicgKyB0aGlzLnVuaXF1ZUlkLCBjb2x1bW5FbGVtZW50LnNjcm9sbExlZnQpO1xyXG4gICAgICAvLyAgc2NvcGUuY29uZmlnLnJldmVydCgpO1xyXG4gICAgICAvL31cclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnBhcmVudFRhYmxlTmFtZSA9IHRoaXMuY29uZmlnLnBhcmVudFRhYmxlTmFtZTtcclxuICAgIHRoaXMucGFyZW50VGFibGVQbHVyYWxMYWJlbCA9IHRoaXMuY29uZmlnLnBhcmVudFRhYmxlUGx1cmFsTGFiZWw7XHJcbiAgICB0aGlzLmNoaWxkVGFibGVOYW1lID0gdGhpcy5jb25maWcuY2hpbGRUYWJsZU5hbWU7XHJcbiAgICB0aGlzLmNoaWxkVGFibGVQbHVyYWxMYWJlbCA9IHRoaXMuY29uZmlnLmNoaWxkVGFibGVQbHVyYWxMYWJlbDtcclxuICAgIHRoaXMua2V5ID0gdGhpcy5jb25maWcua2V5O1xyXG4gICAgdGhpcy5wYXJlbnRRdWVyeSA9IG51bGxcclxuICAgIHRoaXMubG9ja1Byb3BlcnR5ID0gdGhpcy5jb25maWcubG9ja1Byb3BlcnR5O1xyXG4gICAgdGhpcy5jb2xvciA9IHRoaXMuY29uZmlnLmNvbG9yO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkVmlzaWJsZSA9IHRoaXMuY29uZmlnLnVuYXNzaWduZWRWaXNpYmxlO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkTmFtZSA9IHRoaXMuY29uZmlnLnVuYXNzaWduZWROYW1lO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkTG9ja2VkID0gdGhpcy5jb25maWcudW5hc3NpZ25lZExvY2tlZDtcclxuICAgIHRoaXMudW5hc3NpZ25lZENvbG9yID0gdGhpcy5jb25maWcudW5hc3NpZ25lZENvbG9yO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkRHJhZ2dhYmxlID0gdGhpcy5jb25maWcudW5hc3NpZ25lZERyYWdnYWJsZTtcclxuICAgIHRoaXMudW5hc3NpZ25lZERyb3BwYWJsZSA9IHRoaXMuY29uZmlnLnVuYXNzaWduZWREcm9wcGFibGU7XHJcblxyXG4gICAgdGhpcy5pbmFjdGl2ZVZpc2libGUgPSB0aGlzLmNvbmZpZy5pbmFjdGl2ZVZpc2libGU7XHJcbiAgICB0aGlzLmluYWN0aXZlRHJhZ2dhYmxlID0gdGhpcy5jb25maWcuaW5hY3RpdmVEcmFnZ2FibGU7XHJcbiAgICB0aGlzLmluYWN0aXZlRHJvcHBhYmxlID0gdGhpcy5jb25maWcuaW5hY3RpdmVEcm9wcGFibGU7XHJcblxyXG4gICAgdGhpcy5jb2x1bW5Tb3J0ID0gdGhpcy5jb25maWcuY29sdW1uU29ydDtcclxuICAgIHRoaXMuY2FyZFNvcnQgPSB0aGlzLmNvbmZpZy5jYXJkU29ydDtcclxuXHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLmtleS5sYXN0SW5kZXhPZih0aGlzLnBhcmVudFRhYmxlTmFtZSk7XHJcbiAgICBsZXQgcHJlZml4ID0gdGhpcy5rZXkuc3Vic3RyaW5nKGluZGV4LCAtMSk7XHJcbiAgICBpZiAocHJlZml4KSB7XHJcbiAgICAgIHRoaXMucmVsYXRlZFBhcmVudE5hbWUgPSBwcmVmaXggKyB0aGlzLnBhcmVudFRhYmxlTmFtZTtcclxuICAgICAgdGhpcy5yZWxhdGVkQ2hpbGROYW1lID0gcHJlZml4ICsgdGhpcy5jaGlsZFRhYmxlUGx1cmFsTGFiZWw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lID0gdGhpcy5wYXJlbnRUYWJsZU5hbWU7XHJcbiAgICAgIHRoaXMucmVsYXRlZENoaWxkTmFtZSA9IHRoaXMuY2hpbGRUYWJsZVBsdXJhbExhYmVsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudW5pcXVlSWQgPSB1dWlkdjQoKTtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG8oKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVNlbGVjdGlvbiA9IChjYXJkOiBDYXJkKSA9PiB7XHJcbiAgICB2YXIgaW5kZXggPSB0aGlzLnNlbGVjdGVkQ2FyZHMuaW5kZXhPZihjYXJkKTtcclxuICAgIGlmIChpbmRleCAhPT0gLTEpXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDYXJkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cclxuICAgIGNhcmQuY2FyZEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtc2VsZWN0ZWQnKTtcclxuXHJcbiAgICAvL3Njb3BlLmNvbmZpZy5vblNlbGVjdGlvbkNoYW5nZWQoc2VsZWN0ZWRDYXJkcyk7XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBDYXJkVmlldyB7XHJcbiAgcHJpdmF0ZSBsb2NrZWRDb2x1bW5zRWxlbWVudDtcclxuICBwcml2YXRlIHVubG9ja2VkQ29sdW1uc0VsZW1lbnRcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNhcmRDb2x1bW46IFRydUNhcmRDb2x1bW4sXHJcbiAgICBwcml2YXRlIGxvY2tlZENvbHVtbnM6IGFueSxcclxuICAgIHByaXZhdGUgY29sdW1uczogYW55KSB7XHJcbiAgICB0aGlzLmxvY2tlZENvbHVtbnNFbGVtZW50ID0gdGhpcy5jYXJkQ29sdW1uLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG4gICAgdGhpcy51bmxvY2tlZENvbHVtbnNFbGVtZW50ID0gdGhpcy5jYXJkQ29sdW1uLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy51bmxvY2tlZC1jb2x1bW5zJylbMF07XHJcblxyXG4gICAgaWYgKGxvY2tlZENvbHVtbnMgJiYgbG9ja2VkQ29sdW1ucy5sZW5ndGgpXHJcbiAgICAgIHRoaXMuYWRkQ29sdW1ucyhsb2NrZWRDb2x1bW5zLCB0cnVlKTtcclxuXHJcbiAgICBpZiAoY29sdW1ucyAmJiBjb2x1bW5zLmxlbmd0aClcclxuICAgICAgdGhpcy5hZGRDb2x1bW5zKGNvbHVtbnMsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29sdW1uVmlld3M6IEFycmF5PENvbHVtbj4gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBhZGRDb2x1bW5zID0gKGNvbHVtbkRhdGE6IEFycmF5PGFueT4sIGxvY2tlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgbGV0IGNvbHVtbnNFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcclxuICAgIGlmIChsb2NrZWQpXHJcbiAgICAgIGNvbHVtbnNFbGVtZW50ID0gdGhpcy5jYXJkQ29sdW1uLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG4gICAgZWxzZVxyXG4gICAgICBjb2x1bW5zRWxlbWVudCA9IHRoaXMuY2FyZENvbHVtbi5wb3J0YWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudW5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG5cclxuICAgIGxldCBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbkRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdGhpcy5jb2x1bW5WaWV3cy5wdXNoKG5ldyBDb2x1bW4odGhpcy5jYXJkQ29sdW1uLCBjb2x1bW5EYXRhW2ldLCBjb2x1bW5zRWxlbWVudCwgbG9ja2VkLCBpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29sdW1uc0VsZW1lbnQuYXBwZW5kQ2hpbGQoZnJhZ21lbnQpO1xyXG5cclxuICAgIHRoaXMuY2FyZENvbHVtbi5idXN5TWVzc2FnZSA9ICcnO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ29sdW1ucyA9ICgpID0+IHtcclxuICAgIGlmICh0aGlzLmNhcmRDb2x1bW4uY29sdW1uRmlsdGVyUmVmcyAmJiB0aGlzLmNhcmRDb2x1bW4uY29sdW1uRmlsdGVyUmVmcy5sZW5ndGgpIHtcclxuICAgICAgbGV0IGZpbHRlcmVkQ29sdW1ucztcclxuXHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdmFyIGNvbHVtbiA9IHRoaXMuY29sdW1uc1tpXTtcclxuXHJcbiAgICAgICAgaWYgKCFjb2x1bW4ubG9ja2VkICYmIGNvbHVtbi5kYXRhLmVudGl0eUFzcGVjdCkge1xyXG4gICAgICAgICAgdmFyIGZvdW5kID0gdGhpcy5jYXJkQ29sdW1uLmNvbHVtbkZpbHRlclJlZnMuZmlsdGVyKHggPT4geCA9PT0gY29sdW1uLmRhdGEuUmVmKS5sZW5ndGggPiAwO1xyXG5cclxuICAgICAgICAgIGlmIChmb3VuZCkge1xyXG4gICAgICAgICAgICBjb2x1bW4uY29sdW1uRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd0cnUtY2FyZC1wb3J0YWwtY29sdW1uLWZpbHRlcmVkJyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb2x1bW4uY29sdW1uRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0cnUtY2FyZC1wb3J0YWwtY29sdW1uLWZpbHRlcmVkJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY29sdW1ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhciBjb2x1bW4gPSB0aGlzLmNvbHVtbnNbaV07XHJcbiAgICAgICAgY29sdW1uLmNvbHVtbkVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtcG9ydGFsLWNvbHVtbi1maWx0ZXJlZCcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBDb2x1bW4ge1xyXG5cclxuICBwcml2YXRlIGRhdGE6IGFueTtcclxuICBwcml2YXRlIGNhcmRzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgcHJpdmF0ZSBsb2NrZWQ6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBwYXJlbnRFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcclxuICBwcml2YXRlIGNvbHVtbkVsZW1lbnQ7XHJcblxyXG4gIGNhcmRTY3JvbGxQb3J0RWxlbWVudDogSFRNTERpdkVsZW1lbnQ7XHJcbiAgc2VsZWN0QWxsQnV0dG9uITogSFRNTEFuY2hvckVsZW1lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjYXJkQ29sdW1uOiBUcnVDYXJkQ29sdW1uLFxyXG4gICAgZGF0YTogYW55LFxyXG4gICAgcGFyZW50RWxlbWVudDogSFRNTERpdkVsZW1lbnQsXHJcbiAgICBsb2NrZWQ6IGJvb2xlYW4sXHJcbiAgICBpbmRleDogbnVtYmVyKSB7XHJcblxyXG4gICAgdGhpcy5sb2NrZWQgPSBsb2NrZWQ7XHJcbiAgICB0aGlzLnBhcmVudEVsZW1lbnQgPSBwYXJlbnRFbGVtZW50O1xyXG5cclxuICAgIGxldCBjb2x1bW5FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICBjb2x1bW5FbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jb2x1bW4nKTtcclxuICAgIGNvbHVtbkVsZW1lbnQuaWQgPSBpbmRleC50b1N0cmluZygpO1xyXG5cclxuICAgIGlmIChkYXRhPy5pbmFjdGl2ZSlcclxuICAgICAgY29sdW1uRWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0cnUtY2FyZC1wb3J0YWwtY29sdW1uLWluYWN0aXZlJyk7XHJcbiAgICBjb2x1bW5FbGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy5jYXJkQ29sdW1uLmNvbmZpZy53aWR0aCArICdweCc7XHJcbiAgICB0aGlzLmNvbHVtbkVsZW1lbnQgPSBjb2x1bW5FbGVtZW50O1xyXG5cclxuICAgIHRoaXMuY2FyZFNjcm9sbFBvcnRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICB0aGlzLmNhcmRTY3JvbGxQb3J0RWxlbWVudC5jbGFzc0xpc3QuYWRkKCd0cnUtY2FyZC1wb3J0YWwtY2FyZC1zY3JvbGwtcG9ydCcpO1xyXG5cclxuXHJcbiAgICAvL3RoaXMuY29sdW1uSGVhZGVyID0gbmV3IENvbHVtbkhlYWRlcihfdGhpcyk7XHJcblxyXG4gICAgdGhpcy5jb2x1bW5FbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY2FyZFNjcm9sbFBvcnRFbGVtZW50KTtcclxuICAgIHRoaXMuY29sdW1uRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdmaWx0ZXItY2FyZHMnLCAoZSkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZURhdGFCeUZpbHRlcigpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVEYXRhKCk7XHJcblxyXG4gICAgdGhpcy5wYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY29sdW1uRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBhZGRDYXJkID0gKGNhcmQ6IGFueSkgPT4ge1xyXG4gICAgY2FyZC5kYXRhLiRlbnRpdHlbdGhpcy5jYXJkQ29sdW1uLmtleV0gPSB0aGlzLmRhdGEuUmVmO1xyXG4gICAgdGhpcy5kYXRhLmNhcmRzLnVuc2hpZnQoY2FyZC5kYXRhKTtcclxuICAgIHRoaXMuY2FyZHMudW5zaGlmdChuZXcgQ2FyZCh0aGlzLmNhcmRDb2x1bW4sIHRoaXMsIGNhcmQuZGF0YSwgdHJ1ZSkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRFbXB0eUNhcmQgPSAoKSA9PiB7XHJcbiAgICBsZXQgZW1wdHlDYXJkcyA9IF8uZmlsdGVyKHRoaXMuY2FyZHMsIGZ1bmN0aW9uIChjYXJkKSB7IHJldHVybiAhY2FyZC5kYXRhIH0pO1xyXG4gICAgaWYgKCFlbXB0eUNhcmRzLmxlbmd0aClcclxuICAgICAgdGhpcy5jYXJkcy5wdXNoKG5ldyBDYXJkKHRoaXMuY2FyZENvbHVtbiwgdGhpcywgbnVsbCwgZmFsc2UpKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdEFsbEJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVFbXB0eUNhcmQgPSAoKSA9PiB7XHJcbiAgICB2YXIgZW1wdHlDYXJkcyA9IF8uZmlsdGVyKHRoaXMuY2FyZHMsIChjYXJkKSA9PiB7IHJldHVybiAhY2FyZC5kYXRhIH0pO1xyXG4gICAgaWYgKGVtcHR5Q2FyZHMubGVuZ3RoKSB7XHJcbiAgICAgIHZhciBlbXB0eUNhcmQgPSBlbXB0eUNhcmRzWzBdO1xyXG4gICAgICB2YXIgZW1wdHlDYXJkRWxlbWVudCA9IGVtcHR5Q2FyZC5jYXJkQ29udGFpbmVyRWxlbWVudDtcclxuICAgICAgZW1wdHlDYXJkRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVtcHR5Q2FyZEVsZW1lbnQpO1xyXG4gICAgICB2YXIgaW5kZXggPSB0aGlzLmNhcmRzLmluZGV4T2YoZW1wdHlDYXJkc1swXSk7XHJcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpXHJcbiAgICAgICAgdGhpcy5jYXJkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0QWxsQnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb2x1bW5Jc1Zpc3VhbGx5RW1wdHkgPSAoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jYXJkcy5ldmVyeShmdW5jdGlvbiAoY2FyZCkge1xyXG4gICAgICByZXR1cm4gY2FyZC5jYXJkQ29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ3RydS1jYXJkLXBvcnRhbC1jYXJkLWZpbHRlcmVkJyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlQ2FyZCA9IChjYXJkOiBhbnkpID0+IHtcclxuICAgIGNhcmQuY2FyZENvbnRhaW5lckVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjYXJkLmNhcmRDb250YWluZXJFbGVtZW50KTtcclxuXHJcbiAgICB2YXIgaW5kZXggPSB0aGlzLmRhdGEuY2FyZHMuaW5kZXhPZihjYXJkLmRhdGEpO1xyXG4gICAgaWYgKGluZGV4ICE9PSAtMSlcclxuICAgICAgdGhpcy5kYXRhLmNhcmRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICBpbmRleCA9IHRoaXMuY2FyZHMuaW5kZXhPZihjYXJkKTtcclxuICAgIGlmIChpbmRleCAhPT0gLTEpXHJcbiAgICAgIHRoaXMuY2FyZHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIGlmICghdGhpcy5jYXJkcy5sZW5ndGggfHwgdGhpcy5jb2x1bW5Jc1Zpc3VhbGx5RW1wdHkoKSlcclxuICAgICAgdGhpcy5hZGRFbXB0eUNhcmQoKTtcclxuXHJcbiAgICBjYXJkID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2VsZWN0QWxsID0gKHNlbGVjdEFsbDogYm9vbGVhbikgPT4ge1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNhcmRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICB0aGlzLmNhcmRzW2ldLnNlbGVjdEFsbChzZWxlY3RBbGwpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVEYXRhQnlGaWx0ZXIgPSAoKSA9PiB7XHJcbiAgICBsZXQgY2FyZEZpbHRlclN0ciA9IHRoaXMuY2FyZENvbHVtbi5jYXJkRmlsdGVyU3RyO1xyXG4gICAgaWYgKGNhcmRGaWx0ZXJTdHIpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNhcmRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdmFyIGNhcmQgPSB0aGlzLmNhcmRzW2ldO1xyXG5cclxuICAgICAgICBpZiAoY2FyZC5kYXRhICYmIGNhcmQuZGF0YS4kZW50aXR5KSB7XHJcbiAgICAgICAgICBsZXQgZmlsdGVyUGFydHMgPSBjYXJkRmlsdGVyU3RyLnNwbGl0KC8oXFxzKykvKS5maWx0ZXIoZnVuY3Rpb24gKHMpIHsgcmV0dXJuIHMudHJpbSgpLmxlbmd0aCA+IDA7IH0pO1xyXG4gICAgICAgICAgbGV0IGNhcmRGaWx0ZXJSZXN1bHQ7XHJcbiAgICAgICAgICAvL2lmIChzY29wZS5jb25maWcuY2FyZElkKSB7XHJcbiAgICAgICAgICAvLyAgY2FyZEZpbHRlclJlc3VsdCA9IGZpbHRlclBhcnRzLmV2ZXJ5KGZ1bmN0aW9uIChwYXJ0KSB7XHJcbiAgICAgICAgICAvLyAgICByZXR1cm4gc2NvcGUuY29uZmlnLmNhcmRJZChjYXJkLmRhdGEuJGVudGl0eSkudG9Mb3dlckNhc2UoKS5pbmRleE9mKHBhcnQpICE9IC0xO1xyXG4gICAgICAgICAgLy8gIH0pO1xyXG4gICAgICAgICAgLy99IGVsc2Uge1xyXG4gICAgICAgICAgLy8gIGNhcmRGaWx0ZXJSZXN1bHQgPSBzY29wZS5jb25maWcuY2FyZEZpbHRlcihjYXJkLmRhdGEsIGNhcmRGaWx0ZXJTdHIpXHJcbiAgICAgICAgICAvL31cclxuXHJcbiAgICAgICAgICBpZiAoY2FyZEZpbHRlclJlc3VsdCkge1xyXG4gICAgICAgICAgICBjYXJkLmNhcmRDb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3RydS1jYXJkLXBvcnRhbC1jYXJkLWZpbHRlcmVkJyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjYXJkLmNhcmRDb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jYXJkLWZpbHRlcmVkJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2FyZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgY2FyZCA9IHRoaXMuY2FyZHNbaV07XHJcbiAgICAgICAgY2FyZC5jYXJkQ29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd0cnUtY2FyZC1wb3J0YWwtY2FyZC1maWx0ZXJlZCcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGNhcmRFbGVtZW50cyA9IHRoaXMuY29sdW1uRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudHJ1LWNhcmQtcG9ydGFsLWNhcmQtY29udGFpbmVyOm5vdCgudHJ1LWNhcmQtcG9ydGFsLWNhcmQtZmlsdGVyZWQpOm5vdCguZW1wdHkpJyk7XHJcbiAgICBpZiAoY2FyZEVsZW1lbnRzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnJlbW92ZUVtcHR5Q2FyZCgpO1xyXG4gICAgICBpZiAoIXRoaXMubG9ja2VkKSB7XHJcbiAgICAgICAgdGhpcy5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLmNvbHVtbkVsZW1lbnQsIHRoaXMucGFyZW50RWxlbWVudC5maXJzdENoaWxkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hZGRFbXB0eUNhcmQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZURhdGEgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNhcmRTY3JvbGxQb3J0RWxlbWVudC5pbm5lckhUTUwgPSAnJztcclxuXHJcbiAgICB3aGlsZSAodGhpcy5jYXJkcy5sZW5ndGgpIHsgdGhpcy5jYXJkcy5wb3AoKTsgfTtcclxuXHJcbiAgICBpZiAodGhpcy5jYXJkQ29sdW1uLmNhcmRzLmxlbmd0aCkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2FyZENvbHVtbi5jYXJkcy5sZW5ndGg7IGkrKylcclxuICAgICAgICB0aGlzLmNhcmRzLnB1c2gobmV3IENhcmQodGhpcy5jYXJkQ29sdW1uLCB0aGlzLCB0aGlzLmNhcmRDb2x1bW4uY2FyZHNbaV0sIGZhbHNlKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZEVtcHR5Q2FyZCgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgQ2FyZCB7XHJcbiAgcHJpdmF0ZSBjYXJkQ29udGFpbmVyRWxlbWVudDogSFRNTERpdkVsZW1lbnQ7XHJcbiAgcHJpdmF0ZSBkYXRhO1xyXG5cclxuICBjb2x1bW47XHJcbiAgY2FyZEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50O1xyXG4gIHNlbGVjdGVkID0gZmFsc2U7XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2FyZENvbHVtbjogVHJ1Q2FyZENvbHVtbixcclxuICAgIGNvbHVtbjogYW55LFxyXG4gICAgZGF0YTogYW55LFxyXG4gICAgZHJvcHBlZDogYm9vbGVhbikge1xyXG5cclxuICAgIHRoaXMuY29sdW1uID0gY29sdW1uO1xyXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcclxuXHJcbiAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jYXJkLWNvbnRhaW5lcicpO1xyXG5cclxuICAgIGlmIChkcm9wcGVkKSB7XHJcbiAgICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnYW5pbWF0ZWQnKTtcclxuICAgICAgdGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdydWJiZXJCYW5kJyk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RyYWdnYWJsZScsICd0cnVlJyk7XHJcbiAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnZHJvcHBhYmxlJywgJ3RydWUnKTtcclxuXHJcbiAgICB0aGlzLmNhcmRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICB0aGlzLmNhcmRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jYXJkJyk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmNvbHVtbi5kYXRhPy51bmFzc2lnbmVkKVxyXG4gICAgICB0aGlzLmNhcmRFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuY2FyZENvbHVtbi5jb2xvciA/IHRoaXMuY2FyZENvbHVtbi5jb2xvciA6ICcjZmZmJztcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5jYXJkRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLmNhcmRDb2x1bW4udW5hc3NpZ25lZENvbG9yID8gdGhpcy5jYXJkQ29sdW1uLnVuYXNzaWduZWRDb2xvciA6ICcjZmZmJztcclxuXHJcbiAgICBpZiAodGhpcy5kYXRhKSB7XHJcbiAgICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ3N0YXJ0JywgKGUpID0+IHtcclxuICAgICAgICB0aGlzLmNhcmRDb2x1bW4uZHJhZ1N0YXJ0KGUsIHRoaXMpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FyZENvbHVtbi5kcmFnT3ZlcihlLCB0aGlzKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbmQnLCAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FyZENvbHVtbi5kcmFnRW5kKGUpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jYXJkQ29sdW1uLmRyb3AoZSwgdGhpcyk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkID0gIXRoaXMuc2VsZWN0ZWQ7XHJcbiAgICAgICAgdGhpcy5jYXJkQ29sdW1uLnVwZGF0ZVNlbGVjdGlvbih0aGlzKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RibGNsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgIC8vZ29Ub0RldGFpbCh0aGlzLmRhdGEuJGVudGl0eS5SZWYpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FyZENvbHVtbi5kcmFnT3ZlcihlLCB0aGlzKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdlbmQnLCAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FyZENvbHVtbi5kcmFnRW5kKGUpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jYXJkQ29sdW1uLmRyb3AoZSwgdGhpcyk7XHJcbiAgICAgICAgaWYgKCFlLmRlZmF1bHRQcmV2ZW50ZWQpXHJcbiAgICAgICAgICB0aGlzLmNvbHVtbi5yZW1vdmVFbXB0eUNhcmQoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51cGRhdGVEYXRhKCk7XHJcblxyXG4gICAgdGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNhcmRFbGVtZW50KTtcclxuXHJcbiAgICBpZiAoZHJvcHBlZClcclxuICAgICAgdGhpcy5jb2x1bW4uY2FyZFNjcm9sbFBvcnRFbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LCB0aGlzLmNvbHVtbi5jYXJkU2Nyb2xsUG9ydEVsZW1lbnQuZmlyc3RDaGlsZCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuY29sdW1uLmNhcmRTY3JvbGxQb3J0RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNhcmRDb250YWluZXJFbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHNlbGVjdEFsbCA9IChzZWxlY3RBbGw6IGFueSkgPT4ge1xyXG4gICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdEFsbDtcclxuICAgIHRoaXMuY2FyZENvbHVtbi51cGRhdGVTZWxlY3Rpb24odGhpcyk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVEYXRhID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jYXJkRWxlbWVudC5pbm5lckhUTUwgPSAnJztcclxuICAgIHRoaXMuY2FyZENvbHVtbi5yZW1vdmVTZWxlY3Rpb24odGhpcylcclxuXHJcbiAgICBpZiAodGhpcy5kYXRhKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgIGlmIChmYWxzZSkge1xyXG4gICAgICAgIC8vc2NvcGUuY29uZmlnLmN1c3RvbUNhcmRWaWV3RmFjdG9yeShfdGhpcywgc2NvcGUuY29uZmlnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YXIgY2FyZFRleHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XHJcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5jYXJkQ29sdW1uLmNvbmZpZy5yZXN1bHRDb25maWcuY2FyZElkKHRoaXMuZGF0YS4kZW50aXR5KTtcclxuICAgICAgICBpZiAodmFsdWUpXHJcbiAgICAgICAgICBjYXJkVGV4dC5pbm5lckhUTUwgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmNhcmRFbGVtZW50LmFwcGVuZENoaWxkKGNhcmRUZXh0KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RyYWdnYWJsZScsICdmYWxzZScpO1xyXG4gICAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2VtcHR5Jyk7XHJcbiAgICAgIHRoaXMuY2FyZEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZW1wdHknKTtcclxuXHJcbiAgICAgIHZhciBjYXJkQ29udGFpbmVyRW1wdHlUZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xyXG4gICAgICBjYXJkQ29udGFpbmVyRW1wdHlUZXh0LmNsYXNzTGlzdC5hZGQoJ2V4Y2x1ZGUtZnJvbS1maWx0ZXInKTtcclxuICAgICAgY2FyZENvbnRhaW5lckVtcHR5VGV4dC5pbm5lckhUTUwgPSAnRHJhZyBpdGVtcyBoZXJlJztcclxuXHJcbiAgICAgIHRoaXMuY2FyZEVsZW1lbnQuYXBwZW5kQ2hpbGQoY2FyZENvbnRhaW5lckVtcHR5VGV4dCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0cnUtY2FyZFwiPlxyXG4gIDxkaXYgKm5nSWY9XCJpc0J1c3lcIlxyXG4gICAgICAgY2xhc3M9XCJ0cnUtY2FyZC1idXN5LWluZGljYXRvclwiPlxyXG4gICAgPHA+U2VhcmNoaW5nIGZvciB7e2NvbmZpZy5jaGlsZFRhYmxlUGx1cmFsTGFiZWx9fS4uLjwvcD5cclxuICA8L2Rpdj5cclxuICA8IS0tPHRydS10b29sYmFyIFtjb25maWddPVwiY29uZmlnLnRvb2xiYXJDb25maWdcIiBjbGFzcz1cIm1haW4tdG9vbGJhclwiPjwvdHJ1LXRvb2xiYXI+LS0+XHJcbiAgPGRpdiBjbGFzcz1cInRydS1jYXJkLXBvcnRhbFwiICNjYXJkUG9ydGFsPlxyXG4gICAgPGRpdiBbbmdTdHlsZV09XCJ7J3dpZHRoJzogKChjb25maWcud2lkdGggKiBsb2NrZWRDb2x1bW5zLmxlbmd0aCkgKyAoMTAgKiBsb2NrZWRDb2x1bW5zLmxlbmd0aCAtIDEpKSArICdweCcgfVwiXHJcbiAgICAgICAgIFtuZ0NsYXNzXT1cInsndHJ1LWNhcmQtcG9ydGFsLWxvY2tlZC1jb2x1bW5zLWRpdmlkZXInOiBsb2NrZWRDb2x1bW5zLmxlbmd0aH1cIlxyXG4gICAgICAgICAqbmdJZj1cImxvY2tlZENvbHVtbnMubGVuZ3RoXCJcclxuICAgICAgICAgY2xhc3M9XCJ0cnUtY2FyZC1wb3J0YWwtbG9ja2VkLWNvbHVtbnMgbG9ja2VkLWNvbHVtbnNcIj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgW25nU3R5bGVdPVwieydsZWZ0JzogbG9ja2VkQ29sdW1ucy5sZW5ndGggPyAoKGNvbmZpZy53aWR0aCAqIGxvY2tlZENvbHVtbnMubGVuZ3RoKSArICgxMCAqIGxvY2tlZENvbHVtbnMubGVuZ3RoIC0gMSkgKyAyMikgKyAncHgnIDogMCB9XCJcclxuICAgICAgICAgY2xhc3M9XCJ0cnUtY2FyZC1wb3J0YWwtY29sdW1ucyB1bmxvY2tlZC1jb2x1bW5zXCI+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
739
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNhcmQtY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NhcmQtY29sdW1uL3RydS1jYXJkLWNvbHVtbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9jYXJkLWNvbHVtbi90cnUtY2FyZC1jb2x1bW4uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxLQUFLLENBQUMsTUFBTSxZQUFZLENBQUM7QUFDaEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUtwQyxPQUFPLEVBQWdCLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7OztBQVVwRCxNQUFNLE9BQU8sYUFBYTtJQTZDZDtJQUNBO0lBQ0E7SUE5Q0QsTUFBTSxDQUF1QjtJQUM3QixJQUFJLENBQU87SUFFd0IsTUFBTSxDQUFjO0lBRXhELGVBQWUsQ0FBVTtJQUN6QixzQkFBc0IsQ0FBVTtJQUNoQyxjQUFjLENBQVU7SUFDeEIscUJBQXFCLENBQVU7SUFDL0IsV0FBVyxHQUFHLElBQUksQ0FBQztJQUNuQixZQUFZLENBQWlCO0lBRTdCLGlCQUFpQixDQUFXO0lBQzVCLGNBQWMsQ0FBaUI7SUFDL0IsZ0JBQWdCLENBQVU7SUFDMUIsbUJBQW1CLENBQVc7SUFDOUIsbUJBQW1CLENBQVc7SUFFOUIsZUFBZSxDQUFXO0lBQzFCLGlCQUFpQixDQUFXO0lBQzVCLGlCQUFpQixDQUFXO0lBRTVCLFVBQVUsQ0FBc0M7SUFDaEQsUUFBUSxDQUFvQztJ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QU8sQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUV4QyxJQUFJLHNCQUFzQixHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekQsc0JBQXNCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQzVELHNCQUFzQixDQUFDLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQztZQUVyRCxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDLENBQUE7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ3VuZGVyc2NvcmUnO1xyXG5pbXBvcnQgeyBicmVlemUgfSBmcm9tICdicmVlemUtY2xpZW50JztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IFRydURhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dCc7XHJcbmltcG9ydCB7IFRydUVudGl0eUJhc2UgfSBmcm9tICcuLi8uLi9iYXNlLWNsYXNzZXMvdHJ1LWVudGl0eS1iYXNlJztcclxuaW1wb3J0IHsgVHJ1TW9kZWxUeXBlTG9va3VwIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LW1vZGVsLXR5cGUtbG9va3VwJztcclxuaW1wb3J0IHsgSVRydUNhcmRDb2x1bW5Db25maWcgfSBmcm9tICcuL2NsYXNzZXMvdHJ1LWNhcmQtY29sdW1uLWNvbmZpZyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZm9ya0pvaW4sIHNraXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVHJ1U2VhcmNoVmlld0V2ZW50SGFuZGxlciB9IGZyb20gJy4uLy4uL2Jhc2Utdmlld3Mvc2VhcmNoL3NlcnZpY2VzL3RydS1zZWFyY2gtdmlldy1ldmVudC1oYW5kbGVyJztcclxuaW1wb3J0IHsgSFRNTCB9IGZyb20gJ25neC1lZGl0b3IvbGliL3RydXN0ZWRUeXBlc1V0aWwnO1xyXG5pbXBvcnQgeyByZXN1bHQgfSBmcm9tICdsb2Rhc2gnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0cnUtY2FyZC1jb2x1bW4nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cnUtY2FyZC1jb2x1bW4uaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJ1LWNhcmQtY29sdW1uLmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVDYXJkQ29sdW1uIHtcclxuICBASW5wdXQoKSBjb25maWchOiBJVHJ1Q2FyZENvbHVtbkNvbmZpZ1xyXG4gIEBJbnB1dCgpIG5hbWUhOiBhbnk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NhcmRQb3J0YWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgcG9ydGFsITogRWxlbWVudFJlZjtcclxuXHJcbiAgcHJpdmF0ZSBwYXJlbnRUYWJsZU5hbWUhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBwYXJlbnRUYWJsZVBsdXJhbExhYmVsITogc3RyaW5nO1xyXG4gIHByaXZhdGUgY2hpbGRUYWJsZU5hbWUhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBjaGlsZFRhYmxlUGx1cmFsTGFiZWwhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBwYXJlbnRRdWVyeSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBsb2NrUHJvcGVydHkhOiBzdHJpbmcgfCBudWxsO1xyXG4gIFxyXG4gIHByaXZhdGUgdW5hc3NpZ25lZFZpc2libGUhOiBib29sZWFuO1xyXG4gIHByaXZhdGUgdW5hc3NpZ25lZE5hbWUhOiBzdHJpbmcgfCBudWxsO1xyXG4gIHByaXZhdGUgdW5hc3NpZ25lZExvY2tlZCE6IHN0cmluZztcclxuICBwcml2YXRlIHVuYXNzaWduZWREcmFnZ2FibGUhOiBib29sZWFuO1xyXG4gIHByaXZhdGUgdW5hc3NpZ25lZERyb3BwYWJsZSE6IGJvb2xlYW47XHJcblxyXG4gIHByaXZhdGUgaW5hY3RpdmVWaXNpYmxlITogYm9vbGVhbjtcclxuICBwcml2YXRlIGluYWN0aXZlRHJhZ2dhYmxlITogYm9vbGVhbjtcclxuICBwcml2YXRlIGluYWN0aXZlRHJvcHBhYmxlITogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBjb2x1bW5Tb3J0OiAoKGNvbHVtbnM6IGFueSkgPT4gYW55KSB8IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIGNhcmRTb3J0OiAoKGNhcmRzOiBhbnkpID0+IGFueSkgfCB1bmRlZmluZWQ7XHJcblxyXG4gIHByaXZhdGUgcmVsYXRlZFBhcmVudE5hbWUhOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZWxhdGVkQ2hpbGROYW1lITogc3RyaW5nO1xyXG4gIHByaXZhdGUgaW5zZXJ0QmVmb3JlOiBhbnk7XHJcbiAgcHJpdmF0ZSB1bmlxdWVJZCE6IHN0cmluZztcclxuICBwcml2YXRlIHN1YnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcclxuXHJcbiAgYnVzeU1lc3NhZ2U6IHN0cmluZyA9ICdSZW5kZXJpbmcuLi4nO1xyXG4gIGlzQnVzeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbHVtbnM6IGFueSA9IFtdO1xyXG4gIGNhcmRzOiBhbnkgPSBbXTtcclxuICBsb2NrZWRDb2x1bW5zOiBhbnkgPSBbXTtcclxuICBjb2x1bW5GaWx0ZXJSZWZzID0gW107XHJcbiAgY2FyZEZpbHRlclN0cjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgc2VsZWN0ZWRDYXJkczogQXJyYXk8Q2FyZD4gPSBbXTtcclxuICBjb2xvciE6IHN0cmluZyB8IG51bGw7XHJcbiAgdW5hc3NpZ25lZENvbG9yITogc3RyaW5nIHwgbnVsbDtcclxuICBrZXkhOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkYXRhQ29udGV4dDogVHJ1RGF0YUNvbnRleHQsXHJcbiAgICBwcml2YXRlIG1vZGVsVHlwZUxvb2t1cDogVHJ1TW9kZWxUeXBlTG9va3VwLFxyXG4gICAgcHJpdmF0ZSBzZWFyY2hWaWV3RXZlbnRIYW5kbGVyOiBUcnVTZWFyY2hWaWV3RXZlbnRIYW5kbGVyKSB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhcmVudFRhYmxlTW9kZWwgPSBudWxsOy8vZGF0YVNlcnZpY2UubW9kZWwudGFibGVzW3BhcmVudFRhYmxlTmFtZV07XHJcbiAgcHJpdmF0ZSB1c2VySGFzUGFyZW50VGFibGVSb2xlID0gbnVsbDsgLy9wYXJlbnRUYWJsZU1vZGVsLmNhbkRpc3BsYXk7XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRGF0YUZvckVudGl0eSA9IChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgIHZhciBkYXRhID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLnJvd0RhdGFFbmhhbmNlcigpO1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBoYXNVbmRlZmluZWRDaGlsZHJlbiA9IChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgIHR5cGUgRW50aXR5T2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgIGNvbnN0IGVudGl0eVByb3BlcnR5TmFtZSA9IHRoaXMuY29uZmlnLnBhcmVudFRvQ2hpbGRSZWxhdGlvbnNoaXBOYW1lIGFzIEVudGl0eU9iamVjdEtleTtcclxuICAgIHJldHVybiAhZW50aXR5W2VudGl0eVByb3BlcnR5TmFtZV07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc0VtcHR5Q2hpbGRyZW4gPSAoZW50aXR5OiBUcnVFbnRpdHlCYXNlKSA9PiB7XHJcbiAgICB0eXBlIEVudGl0eU9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBlbnRpdHk7XHJcbiAgICBjb25zdCBlbnRpdHlQcm9wZXJ0eU5hbWUgPSB0aGlzLmNvbmZpZy5wYXJlbnRUb0NoaWxkUmVsYXRpb25zaGlwTmFtZSBhcyBFbnRpdHlPYmplY3RLZXk7XHJcbiAgICByZXR1cm4gIWVudGl0eVtlbnRpdHlQcm9wZXJ0eU5hbWVdLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFzSW5hY3RpdmVDaGlsZHJlbiA9IChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgIHR5cGUgRW50aXR5T2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIGVudGl0eTtcclxuICAgIGNvbnN0IGVudGl0eVByb3BlcnR5TmFtZSA9IHRoaXMuY29uZmlnLnBhcmVudFRvQ2hpbGRSZWxhdGlvbnNoaXBOYW1lIGFzIEVudGl0eU9iamVjdEtleTtcclxuICAgIHJldHVybiBfLmV2ZXJ5KFtlbnRpdHlQcm9wZXJ0eU5hbWVdLCAoY2hpbGQ6IGFueSkgPT4geyByZXR1cm4gIWNoaWxkLmFjdGl2ZTsgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc0FkZGVkVW5zYXZlZENoaWxkcmVuID0gKGVudGl0aWVzOiBBcnJheTxUcnVFbnRpdHlCYXNlPiwgcGFyZW50UmVmOiBudW1iZXIpID0+IHtcclxuICAgIHJldHVybiBfLnNvbWUoZW50aXRpZXMsIChlbnRpdHk6IFRydUVudGl0eUJhc2UpID0+IHtcclxuICAgICAgdHlwZSBFbnRpdHlPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgZW50aXR5O1xyXG4gICAgICBjb25zdCBlbnRpdHlQcm9wZXJ0eU5hbWUgPSB0aGlzLmtleSBhcyBFbnRpdHlPYmplY3RLZXk7XHJcbiAgICAgIHJldHVybiBlbnRpdHlbZW50aXR5UHJvcGVydHlOYW1lXSA9PT0gcGFyZW50UmVmXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYXIgPSAoKSA9PiB7XHJcbiAgICB2YXIgbG9ja2VkQ29sdW1ucyA9IHRoaXMucG9ydGFsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmxvY2tlZC1jb2x1bW5zJylbMF07XHJcbiAgICB2YXIgdW5sb2NrZWRDb2x1bW5zID0gdGhpcy5wb3J0YWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudW5sb2NrZWQtY29sdW1ucycpWzBdO1xyXG5cclxuICAgIHdoaWxlIChsb2NrZWRDb2x1bW5zICYmIGxvY2tlZENvbHVtbnMubGFzdENoaWxkKSB7IGxvY2tlZENvbHVtbnMucmVtb3ZlQ2hpbGQobG9ja2VkQ29sdW1ucy5sYXN0Q2hpbGQpOyB9O1xyXG4gICAgd2hpbGUgKHVubG9ja2VkQ29sdW1ucyAmJiB1bmxvY2tlZENvbHVtbnMubGFzdENoaWxkKSB7IHVubG9ja2VkQ29sdW1ucy5yZW1vdmVDaGlsZCh1bmxvY2tlZENvbHVtbnMubGFzdENoaWxkKTsgfVxyXG4gICAgd2hpbGUgKHRoaXMuc2VsZWN0ZWRDYXJkcy5sZW5ndGgpIHsgdGhpcy5zZWxlY3RlZENhcmRzLnBvcCgpOyB9O1xyXG4gICAgLy90aGlzLmNvbmZpZy5vblNlbGVjdGlvbkNoYW5nZWQoW10pO1xyXG4gICAgLy90aGlzLmNvbmZpZy5jbGVhckZpbHRlcnMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VmFsdWVGcm9tU29ydFBhdGggPSAoYXJnczogW2FueSwgc3RyaW5nW11dKTogYW55ID0+IHtcclxuICAgIGxldCBjdXJyZW50OiBhbnkgPSBhcmdzWzBdO1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGFyZ3NbMV0ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHBhcnROYW1lOiBzdHJpbmc7XHJcbiAgICAgIGlmIChpICE9PSBhcmdzWzFdLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICBwYXJ0TmFtZSA9ICdvJyArIGFyZ3NbMV1baV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFydE5hbWUgPSBhcmdzWzFdW2ldO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY3VycmVudFtwYXJ0TmFtZV0pIHtcclxuICAgICAgICBjdXJyZW50ID0gY3VycmVudFtwYXJ0TmFtZV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjdXJyZW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVJdGVtc1NvdXJjZShuZXdFbnRpdGllczogQXJyYXk8YW55PiwgcmV2ZXJ0OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmNsZWFyKCk7XHJcbiAgICBpZiAoIXJldmVydClcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3Njcm9sbF9wb3NpdGlvbicgKyB1dWlkdjQoKSwgJzAnKTtcclxuXHJcbiAgICB0aGlzLmNvbHVtbkZpbHRlclJlZnMgPSBbXTtcclxuICAgIHRoaXMuY2FyZEZpbHRlclN0ciA9IG51bGw7XHJcblxyXG4gICAgaWYgKCFuZXdFbnRpdGllcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5sb2NrZWRDb2x1bW5zID0gW107XHJcbiAgICAgIHRoaXMuY29sdW1ucyA9IFtdO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGxvY2tlZENvbHVtbnM6IEFycmF5PGFueT4gPSBbXTtcclxuICAgIGxldCBlbXB0eVBhcmVudHM6IEFycmF5PGFueT4gPSBbXTtcclxuICAgIGxldCBjb2x1bW5zOiBBcnJheTxhbnk+ID0gW107XHJcblxyXG4gICAgbGV0IHF1ZXJ5ID0gbmV3IGJyZWV6ZS5FbnRpdHlRdWVyeSgnUXVlcnknICsgdGhpcy5wYXJlbnRUYWJsZU5hbWUpO1xyXG4gICAgbGV0IHBhcmVudFJlZnMgPSBuZXdFbnRpdGllcy5tYXAoKGU6IGFueSkgPT4geyByZXR1cm4gZVt0aGlzLnBhcmVudFRhYmxlTmFtZSArICdSZWYnXTsgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnLnF1ZXJ5KVxyXG4gICAgICBxdWVyeSA9IHRoaXMuY29uZmlnLnF1ZXJ5KHF1ZXJ5LCB0aGlzLmNvbmZpZy5wYXJlbnRUb0NoaWxkUmVsYXRpb25zaGlwTmFtZSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHF1ZXJ5ID0gcXVlcnkuZXhwYW5kKHRoaXMuY29uZmlnLnBhcmVudFRvQ2hpbGRSZWxhdGlvbnNoaXBOYW1lKTtcclxuXHJcbiAgICBsZXQgdW5pcXVlUGFyZW50UmVmcyA9IFsuLi5uZXcgU2V0KHBhcmVudFJlZnMpXVxyXG4gICAgcXVlcnkgPSBxdWVyeS53aGVyZSh0aGlzLnBhcmVudFRhYmxlTmFtZSArICdSZWYnLCAnaW4nLCB1bmlxdWVQYXJlbnRSZWZzKTtcclxuXHJcbiAgICAvL2lmICh0aGlzLnBhcmVudFF1ZXJ5KVxyXG4gICAgLy8gIHF1ZXJ5ID0gcXVlcmllc1t0aGlzLnBhcmVudFF1ZXJ5XShxdWVyeSk7XHJcblxyXG4gICAgdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5jdXN0b21TZWFyY2godGhpcy5tb2RlbFR5cGVMb29rdXAuZ2V0VHlwZSh0aGlzLnBhcmVudFRhYmxlTmFtZSksIHF1ZXJ5KS5zdWJzY3JpYmUoKHBhcmVudHMpID0+IHtcclxuICAgICAgLy90aGlzLmNvbmZpZy5hZGRQYXJlbnRzVG9GaWx0ZXIocGFyZW50cyk7XHJcblxyXG4gICAgICBlbXB0eVBhcmVudHMgPSBfLmZpbHRlcihwYXJlbnRzLCAocGFyZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFzVW5kZWZpbmVkQ2hpbGRyZW4ocGFyZW50KSB8fCB0aGlzLmhhc0VtcHR5Q2hpbGRyZW4ocGFyZW50KSB8fCB0aGlzLmhhc0luYWN0aXZlQ2hpbGRyZW4ocGFyZW50KSkge1xyXG4gICAgICAgICAgaWYgKCF0aGlzLmhhc0FkZGVkVW5zYXZlZENoaWxkcmVuKG5ld0VudGl0aWVzLCBwYXJlbnQuUmVmKSkge1xyXG4gICAgICAgICAgICBwYXJlbnRbJ2NhcmRzJ10gPSBbXTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCBxdWVyeWFibGVQYXJlbnRSZWZzID0gXy5wbHVjayhwYXJlbnRzLCB0aGlzLmtleSlcclxuXHJcbiAgICAgIGxldCBpbmFjdGl2ZVdpdGhQYXJlbnQ6IEFycmF5PGFueT4gPSBbXTtcclxuICAgICAgbGV0IGFjdGl2ZVdpdGhvdXRQYXJlbnQ6IEFycmF5PGFueT4gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdW5hc3NpZ25lZDogdHJ1ZSxcclxuICAgICAgICAgIGNhcmRzOiBbXVxyXG4gICAgICAgIH1cclxuICAgICAgXTtcclxuXHJcbiAgICAgIHBhcmVudHMuZm9yRWFjaCgocGFyZW50OiBhbnkpID0+IHtcclxuICAgICAgICBwYXJlbnRbJ2NhcmRzJ10gPSBbXTtcclxuICAgICAgICBpZiAocXVlcnlhYmxlUGFyZW50UmVmcy5pbmRleE9mKHBhcmVudFt0aGlzLmtleV0pICE9PSAtMSkge1xyXG4gICAgICAgICAgaWYgKHRoaXMubG9ja1Byb3BlcnR5ICE9PSBudWxsICYmIHBhcmVudFt0aGlzLmxvY2tQcm9wZXJ0eV0pIHtcclxuICAgICAgICAgICAgbG9ja2VkQ29sdW1ucy5wdXNoKHBhcmVudCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubG9ja1Byb3BlcnR5ID09PSBudWxsIHx8ICFwYXJlbnRbdGhpcy5sb2NrUHJvcGVydHldICYmICFfLmNvbnRhaW5zKGVtcHR5UGFyZW50cywgcGFyZW50KSkge1xyXG4gICAgICAgICAgICBjb2x1bW5zLnB1c2gocGFyZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcGFyZW50WydpbmFjdGl2ZSddID0gdHJ1ZTtcclxuICAgICAgICAgIGluYWN0aXZlV2l0aFBhcmVudC5wdXNoKHBhcmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIG5ld0VudGl0aWVzLmZvckVhY2goKGVudGl0eSkgPT4ge1xyXG4gICAgICAgIHZhciBlbnRpdHlQYXJlbnQgPSBfLmZpbmQocGFyZW50cywgKHApID0+IHtcclxuICAgICAgICAgIGlmIChlbnRpdHlbJ28nICsgdGhpcy5yZWxhdGVkUGFyZW50TmFtZV0pXHJcbiAgICAgICAgICAgIHJldHVybiBwLlJlZiA9PT0gZW50aXR5WydvJyArIHRoaXMucmVsYXRlZFBhcmVudE5hbWVdLlJlZjtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKGVudGl0eVBhcmVudCkge1xyXG4gICAgICAgICAgaWYgKHF1ZXJ5YWJsZVBhcmVudFJlZnMuaW5kZXhPZihlbnRpdHlQYXJlbnRbdGhpcy5rZXldKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgZW50aXR5UGFyZW50LmNhcmRzLnB1c2godGhpcy5jcmVhdGVEYXRhRm9yRW50aXR5KGVudGl0eSkpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZW50aXR5UGFyZW50LmNhcmRzLnB1c2godGhpcy5jcmVhdGVEYXRhRm9yRW50aXR5KGVudGl0eSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAhZW50aXR5UGFyZW50ICYmXHJcbiAgICAgICAgICBlbnRpdHlbJ28nICsgdGhpcy5yZWxhdGVkUGFyZW50TmFtZV0gJiZcclxuICAgICAgICAgIGVudGl0eVsnbycgKyB0aGlzLnJlbGF0ZWRQYXJlbnROYW1lXS5SZWYgPiAwKSB7XHJcbiAgICAgICAgICBsZXQgaW5hY3RpdmVQYXJlbnQgPSBlbnRpdHlbJ28nICsgdGhpcy5yZWxhdGVkUGFyZW50TmFtZV07XHJcbiAgICAgICAgICBpZiAoaW5hY3RpdmVXaXRoUGFyZW50LmluZGV4T2YoaW5hY3RpdmVQYXJlbnQpID09PSAtMSkge1xyXG4gICAgICAgICAgICBpbmFjdGl2ZVBhcmVudFsnY2FyZHMnXSA9IFtdO1xyXG4gICAgICAgICAgICBpbmFjdGl2ZVBhcmVudFsnaW5hY3RpdmUnXSA9IHRydWU7XHJcbiAgICAgICAgICAgIGluYWN0aXZlV2l0aFBhcmVudC5wdXNoKGluYWN0aXZlUGFyZW50KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGluYWN0aXZlUGFyZW50LmNhcmRzLnB1c2godGhpcy5jcmVhdGVEYXRhRm9yRW50aXR5KGVudGl0eSkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBhY3RpdmVXaXRob3V0UGFyZW50WzBdLmNhcmRzLnB1c2godGhpcy5jcmVhdGVEYXRhRm9yRW50aXR5KGVudGl0eSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5jb2x1bW5Tb3J0KSB7XHJcbiAgICAgICAgdmFyIGNvbHVtblNvcnRQYXJ0cyA9IFsnJ107IC8vdGhpcy5jb2x1bW5Tb3J0LnNwbGl0KCcvJyk7XHJcblxyXG4gICAgICAgIGxvY2tlZENvbHVtbnMgPSBfLnNvcnRCeShsb2NrZWRDb2x1bW5zLCAobykgPT4ge1xyXG4gICAgICAgICAgdmFyIHYgPSB0aGlzLmdldFZhbHVlRnJvbVNvcnRQYXRoKFtvLCBjb2x1bW5Tb3J0UGFydHNdKTtcclxuICAgICAgICAgIGlmICh2KVxyXG4gICAgICAgICAgICByZXR1cm4gXy5pc1N0cmluZyh2KSA/IHYudHJpbSgpIDogdjtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29sdW1ucyA9IF8uc29ydEJ5KGNvbHVtbnMsIChvKSA9PiB7XHJcbiAgICAgICAgICB2YXIgdiA9IHRoaXMuZ2V0VmFsdWVGcm9tU29ydFBhdGgoW28sIGNvbHVtblNvcnRQYXJ0c10pO1xyXG4gICAgICAgICAgaWYgKHYpXHJcbiAgICAgICAgICAgIHJldHVybiBfLmlzU3RyaW5nKHYpID8gdi50cmltKCkgOiB2O1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpbmFjdGl2ZVdpdGhQYXJlbnQgPSBfLnNvcnRCeShpbmFjdGl2ZVdpdGhQYXJlbnQsIChvKSA9PiB7XHJcbiAgICAgICAgICB2YXIgdiA9IHRoaXMuZ2V0VmFsdWVGcm9tU29ydFBhdGgoW28sIGNvbHVtblNvcnRQYXJ0c10pO1xyXG4gICAgICAgICAgaWYgKHYpXHJcbiAgICAgICAgICAgIHJldHVybiBfLmlzU3RyaW5nKHYpID8gdi50cmltKCkgOiB2O1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9KTtcclxuICAgICAgICBlbXB0eVBhcmVudHMgPSBfLnNvcnRCeShlbXB0eVBhcmVudHMsIChvKSA9PiB7XHJcbiAgICAgICAgICB2YXIgdiA9IHRoaXMuZ2V0VmFsdWVGcm9tU29ydFBhdGgoW28sIGNvbHVtblNvcnRQYXJ0c10pO1xyXG4gICAgICAgICAgaWYgKHYpXHJcbiAgICAgICAgICAgIHJldHVybiBfLmlzU3RyaW5nKHYpID8gdi50cmltKCkgOiB2O1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbmZpZy5jYXJkU29ydCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIGxvY2tlZENvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgICBjb2x1bW4uY2FyZHMgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuY2FyZFNvcnQoY29sdW1uLmNhcmRzKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgICAgIGNvbHVtbi5jYXJkcyA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jYXJkU29ydChjb2x1bW4uY2FyZHMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpbmFjdGl2ZVdpdGhQYXJlbnQuZm9yRWFjaCgoY29sdW1uKSA9PiB7XHJcbiAgICAgICAgICBjb2x1bW4uY2FyZHMgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuY2FyZFNvcnQoY29sdW1uLmNhcmRzKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgYWN0aXZlV2l0aG91dFBhcmVudC5mb3JFYWNoKChjb2x1bW4pID0+IHtcclxuICAgICAgICAgIGNvbHVtbi5jYXJkcyA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jYXJkU29ydChjb2x1bW4uY2FyZHMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5pbmFjdGl2ZVZpc2libGUpXHJcbiAgICAgICAgY29sdW1ucyA9IGNvbHVtbnMuY29uY2F0KGluYWN0aXZlV2l0aFBhcmVudCk7XHJcblxyXG4gICAgICBjb2x1bW5zID0gY29sdW1ucy5jb25jYXQoZW1wdHlQYXJlbnRzKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnVuYXNzaWduZWRWaXNpYmxlICYmICF0aGlzLnVuYXNzaWduZWRMb2NrZWQpXHJcbiAgICAgICAgY29sdW1ucyA9IGNvbHVtbnMuY29uY2F0KGFjdGl2ZVdpdGhvdXRQYXJlbnQpO1xyXG5cclxuICAgICAgaWYgKHRoaXMudW5hc3NpZ25lZFZpc2libGUgJiYgdGhpcy51bmFzc2lnbmVkTG9ja2VkKVxyXG4gICAgICAgIGxvY2tlZENvbHVtbnMgPSBjb2x1bW5zLmNvbmNhdChsb2NrZWRDb2x1bW5zKTtcclxuXHJcbiAgICAgIHRoaXMubG9ja2VkQ29sdW1ucyA9IGxvY2tlZENvbHVtbnM7XHJcbiAgICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmNsZWFyKCk7XHJcbiAgICAgICAgbmV3IENhcmRWaWV3KHRoaXMsIHRoaXMubG9ja2VkQ29sdW1ucywgdGhpcy5jb2x1bW5zKTtcclxuXHJcbiAgICAgICAgaWYgKHJldmVydCkge1xyXG4gICAgICAgICAgbGV0IGNvbHVtbkVsZW1lbnQgPSB0aGlzLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50cnUtY2FyZC1wb3J0YWwtY29sdW1ucycpWzBdO1xyXG4gICAgICAgICAgbGV0IHByZXZpb3VzU2Nyb2xsUG9zaXRpb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc2Nyb2xsX3Bvc2l0aW9uJyArIHV1aWR2NCgpKTtcclxuICAgICAgICAgIGNvbHVtbkVsZW1lbnQuc2Nyb2xsTGVmdCA9IHByZXZpb3VzU2Nyb2xsUG9zaXRpb24gPyArcHJldmlvdXNTY3JvbGxQb3NpdGlvbiA6IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWJzY3JpYmVUbyA9ICgpID0+IHtcclxuICAgIHRoaXMuc3Vicy5wdXNoKHRoaXMuc2VhcmNoVmlld0V2ZW50SGFuZGxlci5vblNlYXJjaCgpLnBpcGUoc2tpcCgxKSkuc3Vic2NyaWJlKChzZXR1cFF1ZXJ5OiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5vblNlYXJjaChzZXR1cFF1ZXJ5KTtcclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25TZWFyY2ggPSAoc2V0dXBRdWVyeTogYW55KSA9PiB7XHJcbiAgICB0aGlzLmlzQnVzeSA9IHRydWU7XHJcbiAgICB0aGlzLmJ1c3lNZXNzYWdlID0gJ1NlYXJjaGluZy4uLic7XHJcbiAgICBsZXQgam9pbnMgPSBbXTtcclxuXHJcbiAgICBqb2lucy5wdXNoKHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuc2VhcmNoKFxyXG4gICAgICB0aGlzLm1vZGVsVHlwZUxvb2t1cC5nZXRUeXBlKHRoaXMuY2hpbGRUYWJsZU5hbWUpLFxyXG4gICAgICBzZXR1cFF1ZXJ5LFxyXG4gICAgICBudWxsLCBmYWxzZSkpO1xyXG5cclxuICAgIGZvcmtKb2luKGpvaW5zKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXN1bHRzID0+IHtcclxuICAgICAgICB0aGlzLmNhcmRzID0gcmVzdWx0c1swXTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUl0ZW1zU291cmNlKHJlc3VsdHNbMF0sIGZhbHNlKTtcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmlzQnVzeSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYnVzeU1lc3NhZ2UgPSAnJztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVTZWxlY3Rpb24gPSAoY2FyZDogQ2FyZCkgPT4ge1xyXG4gICAgaWYgKCFjYXJkLnNlbGVjdGVkKSB7XHJcbiAgICAgIHZhciBpbmRleCA9IHRoaXMuc2VsZWN0ZWRDYXJkcy5pbmRleE9mKGNhcmQpO1xyXG4gICAgICBpZiAoaW5kZXggIT09IC0xKVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDYXJkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cclxuICAgICAgY2FyZC5jYXJkRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd0cnUtY2FyZC1zZWxlY3RlZCcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIGluZGV4ID0gdGhpcy5zZWxlY3RlZENhcmRzLmluZGV4T2YoY2FyZCk7XHJcbiAgICAgIGlmIChpbmRleCA9PT0gLTEpXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhcmRzLnB1c2goY2FyZCk7XHJcblxyXG4gICAgICBjYXJkLmNhcmRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXNlbGVjdGVkJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9zY29wZS5jb25maWcub25TZWxlY3Rpb25DaGFuZ2VkKHNlbGVjdGVkQ2FyZHMpO1xyXG4gIH1cclxuXHJcbiAgZHJhZ1N0YXJ0ID0gKGU6IGFueSwgY2FyZDogQ2FyZCkgPT4ge1xyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICAvL3Njb3BlLmNvbmZpZy5jbG9zZVNlYXJjaFBhbmVsKCk7XHJcblxyXG4gICAgaWYgKChjYXJkLmNvbHVtbi5kYXRhLnVuYXNzaWduZWQgJiYgIXRoaXMudW5hc3NpZ25lZERyYWdnYWJsZSkgfHxcclxuICAgICAgKGNhcmQuY29sdW1uLmRhdGEuaW5hY3RpdmUgJiYgIXRoaXMuaW5hY3RpdmVEcmFnZ2FibGUpKSB7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGUuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnbW92ZSc7XHJcblxyXG4gICAgaWYgKCFjYXJkLnNlbGVjdGVkKSB7XHJcbiAgICAgIGNhcmQuc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbihjYXJkKVxyXG4gICAgfSAgIFxyXG5cclxuICAgIGxldCBjbG9uZWROb2RlID0gZS50YXJnZXQuY2xvbmVOb2RlKHRydWUpO1xyXG4gICAgY2xvbmVkTm9kZS5zdHlsZS5wb3NpdGlvbiA9IFwiYWJzb2x1dGVcIjtcclxuICAgIGNsb25lZE5vZGUuc3R5bGUudG9wID0gXCIwcHhcIjtcclxuICAgIGNsb25lZE5vZGUuc3R5bGUubGVmdCA9IFwiLTEwMDAwcHhcIjtcclxuICAgIGNsb25lZE5vZGUuc3R5bGUub3ZlcmZsb3cgPSAndmlzaWJsZSc7XHJcbiAgICBjbG9uZWROb2RlLmNsYXNzTGlzdC5hZGQoJ2Nsb25lZC1jYXJkJyk7XHJcblxyXG4gICAgdmFyIGlubmVyID0gY2xvbmVkTm9kZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwidHJ1LWNhcmQtcG9ydGFsLWNhcmRcIilbMF07XHJcbiAgICBpbm5lci5zdHlsZS50cmFuc2Zvcm0gPSBcInJvdGF0ZSgtMTBkZWcpXCI7XHJcbiAgICBpbm5lci5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XHJcbiAgICBpbm5lci5zdHlsZS56SW5kZXggPSAxMDtcclxuXHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNsb25lZE5vZGUpO1xyXG4gICAgZS5kYXRhVHJhbnNmZXIuc2V0RHJhZ0ltYWdlKGNsb25lZE5vZGUsIDUwLCA1MCk7XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBkcmFnT3ZlciA9IChlOiBhbnksIGNhcmQ6IENhcmQpID0+IHtcclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xyXG4gICAgaWYgKCF0YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCd0cnUtY2FyZC1wb3J0YWwtY2FyZC1jb250YWluZXInKSB8fFxyXG4gICAgICAoY2FyZC5jb2x1bW4uZGF0YS51bmFzc2lnbmVkICYmICF0aGlzLnVuYXNzaWduZWREcm9wcGFibGUpIHx8XHJcbiAgICAgIChjYXJkLmNvbHVtbi5kYXRhLmluYWN0aXZlICYmICF0aGlzLmluYWN0aXZlRHJvcHBhYmxlKSkge1xyXG4gICAgICBlLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ25vbmUnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdtb3ZlJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRyYWdFbmQgPSAoZTogYW55KSA9PiB7XHJcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGxldCBlbGVtZW50czogSFRNTENvbGxlY3Rpb25PZjxFbGVtZW50PiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2Nsb25lZC1jYXJkJyk7XHJcbiAgICB3aGlsZSAoZWxlbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBlbGVtZW50c1swXS5wYXJlbnROb2RlPy5yZW1vdmVDaGlsZChlbGVtZW50c1swXSk7XHJcbiAgICB9XHJcblxyXG4gICAgZWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCd0cnUtY2FyZC1wbGFjZWhvbGRlcicpO1xyXG4gICAgd2hpbGUgKGVsZW1lbnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZWxlbWVudHNbMF0ucGFyZW50Tm9kZT8ucmVtb3ZlQ2hpbGQoZWxlbWVudHNbMF0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZHJvcCA9IChlOiBhbnksIGNhcmQ6IENhcmQpID0+IHtcclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IHRoaXMuc2VsZWN0ZWRDYXJkcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xyXG4gICAgICBsZXQgaW5kZXggPSBjYXJkLmNvbHVtbi5jYXJkcy5pbmRleE9mKHRoaXMuc2VsZWN0ZWRDYXJkc1tpXSk7XHJcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhcmRzW2ldLnVwZGF0ZURhdGEoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2FyZC5jb2x1bW4uZGF0YS51bmFzc2lnbmVkICYmICF0aGlzLnVuYXNzaWduZWREcm9wcGFibGUgfHxcclxuICAgICAgY2FyZC5jb2x1bW4uZGF0YS5pbmFjdGl2ZSAmJiAhdGhpcy5pbmFjdGl2ZURyb3BwYWJsZSB8fFxyXG4gICAgICAhdGhpcy5zZWxlY3RlZENhcmRzLmxlbmd0aCkge1xyXG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnID09PSBudWxsKSB7XHJcbiAgICAgIC8vdGhpcy5jb25maWcub25Ecm9wKGNhcmQsIHRoaXMuc2VsZWN0ZWRDYXJkcywgdGhpcy5jb25maWcsIHRoaXMucG9ydGFsLCBlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3RlZENhcmRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY2FyZC5jb2x1bW4uYWRkQ2FyZCh0aGlzLnNlbGVjdGVkQ2FyZHNbaV0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IgKHZhciBpID0gdGhpcy5zZWxlY3RlZENhcmRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENhcmRzW2ldLmNvbHVtbi5yZW1vdmVDYXJkKHRoaXMuc2VsZWN0ZWRDYXJkc1tpXSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHdoaWxlICh0aGlzLnNlbGVjdGVkQ2FyZHMubGVuZ3RoKSB7IHRoaXMuc2VsZWN0ZWRDYXJkcy5wb3AoKTsgfTtcclxuICAgICAgXHJcbiAgICAgIC8vbGV0IHNhdmVQcm9taXNlID0gLmNvbmZpZy5zYXZlKCk7XHJcbiAgICAgIC8vaWYgKHNhdmVQcm9taXNlKSB7XHJcbiAgICAgIC8vICB0aGlzLnBvcnRhbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1kaXNhYmxlZCcpO1xyXG4gICAgICAvLyAgYXdhaXQgc2F2ZVByb21pc2UudGhlbigoKSA9PiB7XHJcbiAgICAgIC8vICAgIHRoaXMucG9ydGFsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtcG9ydGFsLWRpc2FibGVkJyk7XHJcbiAgICAgIC8vICB9KS5jYXRjaCgoKSA9PiB7XHJcbiAgICAgIC8vICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgLy8gICAgdmFyIGNvbHVtbkVsZW1lbnQgPSB0aGlzLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50cnUtY2FyZC1wb3J0YWwtY29sdW1ucycpWzBdO1xyXG4gICAgICAvLyAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc2Nyb2xsX3Bvc2l0aW9uJyArIHRoaXMudW5pcXVlSWQsIGNvbHVtbkVsZW1lbnQuc2Nyb2xsTGVmdCk7XHJcbiAgICAgIC8vICAgIHNjb3BlLmNvbmZpZy5yZXZlcnQoKTtcclxuICAgICAgLy8gICAgdGhpcy5wb3J0YWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd0cnUtY2FyZC1wb3J0YWwtZGlzYWJsZWQnKTtcclxuICAgICAgLy8gIH0pO1xyXG4gICAgICAvL30gZWxzZSB7XHJcbiAgICAgIC8vICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIC8vICB2YXIgY29sdW1uRWxlbWVudCA9IHRoaXMucG9ydGFsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRydS1jYXJkLXBvcnRhbC1jb2x1bW5zJylbMF07XHJcbiAgICAgIC8vICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc2Nyb2xsX3Bvc2l0aW9uJyArIHRoaXMudW5pcXVlSWQsIGNvbHVtbkVsZW1lbnQuc2Nyb2xsTGVmdCk7XHJcbiAgICAgIC8vICBzY29wZS5jb25maWcucmV2ZXJ0KCk7XHJcbiAgICAgIC8vfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucGFyZW50VGFibGVOYW1lID0gdGhpcy5jb25maWcucGFyZW50VGFibGVOYW1lO1xyXG4gICAgdGhpcy5wYXJlbnRUYWJsZVBsdXJhbExhYmVsID0gdGhpcy5jb25maWcucGFyZW50VGFibGVQbHVyYWxMYWJlbDtcclxuICAgIHRoaXMuY2hpbGRUYWJsZU5hbWUgPSB0aGlzLmNvbmZpZy5jaGlsZFRhYmxlTmFtZTtcclxuICAgIHRoaXMuY2hpbGRUYWJsZVBsdXJhbExhYmVsID0gdGhpcy5jb25maWcuY2hpbGRUYWJsZVBsdXJhbExhYmVsO1xyXG4gICAgdGhpcy5rZXkgPSB0aGlzLmNvbmZpZy5rZXk7XHJcbiAgICB0aGlzLnBhcmVudFF1ZXJ5ID0gbnVsbFxyXG4gICAgdGhpcy5sb2NrUHJvcGVydHkgPSB0aGlzLmNvbmZpZy5sb2NrUHJvcGVydHk7XHJcbiAgICB0aGlzLmNvbG9yID0gdGhpcy5jb25maWcuY29sb3I7XHJcbiAgICB0aGlzLnVuYXNzaWduZWRWaXNpYmxlID0gdGhpcy5jb25maWcudW5hc3NpZ25lZFZpc2libGU7XHJcbiAgICB0aGlzLnVuYXNzaWduZWROYW1lID0gdGhpcy5jb25maWcudW5hc3NpZ25lZE5hbWU7XHJcbiAgICB0aGlzLnVuYXNzaWduZWRMb2NrZWQgPSB0aGlzLmNvbmZpZy51bmFzc2lnbmVkTG9ja2VkO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkQ29sb3IgPSB0aGlzLmNvbmZpZy51bmFzc2lnbmVkQ29sb3I7XHJcbiAgICB0aGlzLnVuYXNzaWduZWREcmFnZ2FibGUgPSB0aGlzLmNvbmZpZy51bmFzc2lnbmVkRHJhZ2dhYmxlO1xyXG4gICAgdGhpcy51bmFzc2lnbmVkRHJvcHBhYmxlID0gdGhpcy5jb25maWcudW5hc3NpZ25lZERyb3BwYWJsZTtcclxuXHJcbiAgICB0aGlzLmluYWN0aXZlVmlzaWJsZSA9IHRoaXMuY29uZmlnLmluYWN0aXZlVmlzaWJsZTtcclxuICAgIHRoaXMuaW5hY3RpdmVEcmFnZ2FibGUgPSB0aGlzLmNvbmZpZy5pbmFjdGl2ZURyYWdnYWJsZTtcclxuICAgIHRoaXMuaW5hY3RpdmVEcm9wcGFibGUgPSB0aGlzLmNvbmZpZy5pbmFjdGl2ZURyb3BwYWJsZTtcclxuXHJcbiAgICB0aGlzLmNvbHVtblNvcnQgPSB0aGlzLmNvbmZpZy5jb2x1bW5Tb3J0O1xyXG4gICAgdGhpcy5jYXJkU29ydCA9IHRoaXMuY29uZmlnLmNhcmRTb3J0O1xyXG5cclxuICAgIGxldCBpbmRleCA9IHRoaXMua2V5Lmxhc3RJbmRleE9mKHRoaXMucGFyZW50VGFibGVOYW1lKTtcclxuICAgIGxldCBwcmVmaXggPSB0aGlzLmtleS5zdWJzdHJpbmcoaW5kZXgsIC0xKTtcclxuICAgIGlmIChwcmVmaXgpIHtcclxuICAgICAgdGhpcy5yZWxhdGVkUGFyZW50TmFtZSA9IHByZWZpeCArIHRoaXMucGFyZW50VGFibGVOYW1lO1xyXG4gICAgICB0aGlzLnJlbGF0ZWRDaGlsZE5hbWUgPSBwcmVmaXggKyB0aGlzLmNoaWxkVGFibGVQbHVyYWxMYWJlbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucmVsYXRlZFBhcmVudE5hbWUgPSB0aGlzLnBhcmVudFRhYmxlTmFtZTtcclxuICAgICAgdGhpcy5yZWxhdGVkQ2hpbGROYW1lID0gdGhpcy5jaGlsZFRhYmxlUGx1cmFsTGFiZWw7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy51bmlxdWVJZCA9IHV1aWR2NCgpO1xyXG4gICAgdGhpcy5zdWJzY3JpYmVUbygpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlU2VsZWN0aW9uID0gKGNhcmQ6IENhcmQpID0+IHtcclxuICAgIHZhciBpbmRleCA9IHRoaXMuc2VsZWN0ZWRDYXJkcy5pbmRleE9mKGNhcmQpO1xyXG4gICAgaWYgKGluZGV4ICE9PSAtMSlcclxuICAgICAgdGhpcy5zZWxlY3RlZENhcmRzLnNwbGljZShpbmRleCwgMSk7XHJcblxyXG4gICAgY2FyZC5jYXJkRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd0cnUtY2FyZC1zZWxlY3RlZCcpO1xyXG5cclxuICAgIC8vc2NvcGUuY29uZmlnLm9uU2VsZWN0aW9uQ2hhbmdlZChzZWxlY3RlZENhcmRzKTtcclxuICB9XHJcbn1cclxuXHJcbmNsYXNzIENhcmRWaWV3IHtcclxuICBwcml2YXRlIGxvY2tlZENvbHVtbnNFbGVtZW50O1xyXG4gIHByaXZhdGUgdW5sb2NrZWRDb2x1bW5zRWxlbWVudFxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2FyZENvbHVtbjogVHJ1Q2FyZENvbHVtbixcclxuICAgIHByaXZhdGUgbG9ja2VkQ29sdW1uczogYW55LFxyXG4gICAgcHJpdmF0ZSBjb2x1bW5zOiBhbnkpIHtcclxuICAgIHRoaXMubG9ja2VkQ29sdW1uc0VsZW1lbnQgPSB0aGlzLmNhcmRDb2x1bW4ucG9ydGFsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmxvY2tlZC1jb2x1bW5zJylbMF07XHJcbiAgICB0aGlzLnVubG9ja2VkQ29sdW1uc0VsZW1lbnQgPSB0aGlzLmNhcmRDb2x1bW4ucG9ydGFsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnVubG9ja2VkLWNvbHVtbnMnKVswXTtcclxuXHJcbiAgICBpZiAobG9ja2VkQ29sdW1ucyAmJiBsb2NrZWRDb2x1bW5zLmxlbmd0aClcclxuICAgICAgdGhpcy5hZGRDb2x1bW5zKGxvY2tlZENvbHVtbnMsIHRydWUpO1xyXG5cclxuICAgIGlmIChjb2x1bW5zICYmIGNvbHVtbnMubGVuZ3RoKVxyXG4gICAgICB0aGlzLmFkZENvbHVtbnMoY29sdW1ucywgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb2x1bW5WaWV3czogQXJyYXk8Q29sdW1uPiA9IFtdO1xyXG5cclxuICBwcml2YXRlIGFkZENvbHVtbnMgPSAoY29sdW1uRGF0YTogQXJyYXk8YW55PiwgbG9ja2VkOiBib29sZWFuKSA9PiB7XHJcbiAgICBsZXQgY29sdW1uc0VsZW1lbnQ6IEhUTUxEaXZFbGVtZW50O1xyXG4gICAgaWYgKGxvY2tlZClcclxuICAgICAgY29sdW1uc0VsZW1lbnQgPSB0aGlzLmNhcmRDb2x1bW4ucG9ydGFsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmxvY2tlZC1jb2x1bW5zJylbMF07XHJcbiAgICBlbHNlXHJcbiAgICAgIGNvbHVtbnNFbGVtZW50ID0gdGhpcy5jYXJkQ29sdW1uLnBvcnRhbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy51bmxvY2tlZC1jb2x1bW5zJylbMF07XHJcblxyXG4gICAgbGV0IGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1uRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICB0aGlzLmNvbHVtblZpZXdzLnB1c2gobmV3IENvbHVtbih0aGlzLmNhcmRDb2x1bW4sIGNvbHVtbkRhdGFbaV0sIGNvbHVtbnNFbGVtZW50LCBsb2NrZWQsIGkpKTtcclxuICAgIH1cclxuXHJcbiAgICBjb2x1bW5zRWxlbWVudC5hcHBlbmRDaGlsZChmcmFnbWVudCk7XHJcblxyXG4gICAgdGhpcy5jYXJkQ29sdW1uLmJ1c3lNZXNzYWdlID0gJyc7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDb2x1bW5zID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuY2FyZENvbHVtbi5jb2x1bW5GaWx0ZXJSZWZzICYmIHRoaXMuY2FyZENvbHVtbi5jb2x1bW5GaWx0ZXJSZWZzLmxlbmd0aCkge1xyXG4gICAgICBsZXQgZmlsdGVyZWRDb2x1bW5zO1xyXG5cclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNvbHVtbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgY29sdW1uID0gdGhpcy5jb2x1bW5zW2ldO1xyXG5cclxuICAgICAgICBpZiAoIWNvbHVtbi5sb2NrZWQgJiYgY29sdW1uLmRhdGEuZW50aXR5QXNwZWN0KSB7XHJcbiAgICAgICAgICB2YXIgZm91bmQgPSB0aGlzLmNhcmRDb2x1bW4uY29sdW1uRmlsdGVyUmVmcy5maWx0ZXIoeCA9PiB4ID09PSBjb2x1bW4uZGF0YS5SZWYpLmxlbmd0aCA+IDA7XHJcblxyXG4gICAgICAgICAgaWYgKGZvdW5kKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbi5jb2x1bW5FbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3RydS1jYXJkLXBvcnRhbC1jb2x1bW4tZmlsdGVyZWQnKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbHVtbi5jb2x1bW5FbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jb2x1bW4tZmlsdGVyZWQnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdmFyIGNvbHVtbiA9IHRoaXMuY29sdW1uc1tpXTtcclxuICAgICAgICBjb2x1bW4uY29sdW1uRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd0cnUtY2FyZC1wb3J0YWwtY29sdW1uLWZpbHRlcmVkJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmNsYXNzIENvbHVtbiB7XHJcblxyXG4gIHByaXZhdGUgZGF0YTogYW55O1xyXG4gIHByaXZhdGUgY2FyZHM6IEFycmF5PGFueT4gPSBbXTtcclxuICBwcml2YXRlIGxvY2tlZDogYm9vbGVhbjtcclxuICBwcml2YXRlIHBhcmVudEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50O1xyXG4gIHByaXZhdGUgY29sdW1uRWxlbWVudDtcclxuXHJcbiAgY2FyZFNjcm9sbFBvcnRFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcclxuICBzZWxlY3RBbGxCdXR0b24hOiBIVE1MQW5jaG9yRWxlbWVudDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNhcmRDb2x1bW46IFRydUNhcmRDb2x1bW4sXHJcbiAgICBkYXRhOiBhbnksXHJcbiAgICBwYXJlbnRFbGVtZW50OiBIVE1MRGl2RWxlbWVudCxcclxuICAgIGxvY2tlZDogYm9vbGVhbixcclxuICAgIGluZGV4OiBudW1iZXIpIHtcclxuXHJcbiAgICB0aGlzLmxvY2tlZCA9IGxvY2tlZDtcclxuICAgIHRoaXMucGFyZW50RWxlbWVudCA9IHBhcmVudEVsZW1lbnQ7XHJcblxyXG4gICAgbGV0IGNvbHVtbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIGNvbHVtbkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndHJ1LWNhcmQtcG9ydGFsLWNvbHVtbicpO1xyXG4gICAgY29sdW1uRWxlbWVudC5pZCA9IGluZGV4LnRvU3RyaW5nKCk7XHJcblxyXG4gICAgaWYgKGRhdGE/LmluYWN0aXZlKVxyXG4gICAgICBjb2x1bW5FbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jb2x1bW4taW5hY3RpdmUnKTtcclxuICAgIGNvbHVtbkVsZW1lbnQuc3R5bGUud2lkdGggPSB0aGlzLmNhcmRDb2x1bW4uY29uZmlnLndpZHRoICsgJ3B4JztcclxuICAgIHRoaXMuY29sdW1uRWxlbWVudCA9IGNvbHVtbkVsZW1lbnQ7XHJcblxyXG4gICAgdGhpcy5jYXJkU2Nyb2xsUG9ydEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHRoaXMuY2FyZFNjcm9sbFBvcnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3RydS1jYXJkLXBvcnRhbC1jYXJkLXNjcm9sbC1wb3J0Jyk7XHJcblxyXG5cclxuICAgIC8vdGhpcy5jb2x1bW5IZWFkZXIgPSBuZXcgQ29sdW1uSGVhZGVyKF90aGlzKTtcclxuXHJcbiAgICB0aGlzLmNvbHVtbkVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jYXJkU2Nyb2xsUG9ydEVsZW1lbnQpO1xyXG4gICAgdGhpcy5jb2x1bW5FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZpbHRlci1jYXJkcycsIChlKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlRGF0YUJ5RmlsdGVyKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZURhdGEoKTtcclxuXHJcbiAgICB0aGlzLnBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jb2x1bW5FbGVtZW50KTtcclxuICB9XHJcblxyXG4gIGFkZENhcmQgPSAoY2FyZDogYW55KSA9PiB7XHJcbiAgICBjYXJkLmRhdGEuJGVudGl0eVt0aGlzLmNhcmRDb2x1bW4ua2V5XSA9IHRoaXMuZGF0YS5SZWY7XHJcbiAgICB0aGlzLmRhdGEuY2FyZHMudW5zaGlmdChjYXJkLmRhdGEpO1xyXG4gICAgdGhpcy5jYXJkcy51bnNoaWZ0KG5ldyBDYXJkKHRoaXMuY2FyZENvbHVtbiwgdGhpcywgY2FyZC5kYXRhLCB0cnVlKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZEVtcHR5Q2FyZCA9ICgpID0+IHtcclxuICAgIGxldCBlbXB0eUNhcmRzID0gXy5maWx0ZXIodGhpcy5jYXJkcywgZnVuY3Rpb24gKGNhcmQpIHsgcmV0dXJuICFjYXJkLmRhdGEgfSk7XHJcbiAgICBpZiAoIWVtcHR5Q2FyZHMubGVuZ3RoKVxyXG4gICAgICB0aGlzLmNhcmRzLnB1c2gobmV3IENhcmQodGhpcy5jYXJkQ29sdW1uLCB0aGlzLCBudWxsLCBmYWxzZSkpO1xyXG5cclxuICAgIHRoaXMuc2VsZWN0QWxsQnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZUVtcHR5Q2FyZCA9ICgpID0+IHtcclxuICAgIHZhciBlbXB0eUNhcmRzID0gXy5maWx0ZXIodGhpcy5jYXJkcywgKGNhcmQpID0+IHsgcmV0dXJuICFjYXJkLmRhdGEgfSk7XHJcbiAgICBpZiAoZW1wdHlDYXJkcy5sZW5ndGgpIHtcclxuICAgICAgdmFyIGVtcHR5Q2FyZCA9IGVtcHR5Q2FyZHNbMF07XHJcbiAgICAgIHZhciBlbXB0eUNhcmRFbGVtZW50ID0gZW1wdHlDYXJkLmNhcmRDb250YWluZXJFbGVtZW50O1xyXG4gICAgICBlbXB0eUNhcmRFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZW1wdHlDYXJkRWxlbWVudCk7XHJcbiAgICAgIHZhciBpbmRleCA9IHRoaXMuY2FyZHMuaW5kZXhPZihlbXB0eUNhcmRzWzBdKTtcclxuICAgICAgaWYgKGluZGV4ICE9PSAtMSlcclxuICAgICAgICB0aGlzLmNhcmRzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3RBbGxCdXR0b24uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbHVtbklzVmlzdWFsbHlFbXB0eSA9ICgpID0+IHtcclxuICAgIHJldHVybiB0aGlzLmNhcmRzLmV2ZXJ5KGZ1bmN0aW9uIChjYXJkKSB7XHJcbiAgICAgIHJldHVybiBjYXJkLmNhcmRDb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygndHJ1LWNhcmQtcG9ydGFsLWNhcmQtZmlsdGVyZWQnKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVDYXJkID0gKGNhcmQ6IGFueSkgPT4ge1xyXG4gICAgY2FyZC5jYXJkQ29udGFpbmVyRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNhcmQuY2FyZENvbnRhaW5lckVsZW1lbnQpO1xyXG5cclxuICAgIHZhciBpbmRleCA9IHRoaXMuZGF0YS5jYXJkcy5pbmRleE9mKGNhcmQuZGF0YSk7XHJcbiAgICBpZiAoaW5kZXggIT09IC0xKVxyXG4gICAgICB0aGlzLmRhdGEuY2FyZHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIGluZGV4ID0gdGhpcy5jYXJkcy5pbmRleE9mKGNhcmQpO1xyXG4gICAgaWYgKGluZGV4ICE9PSAtMSlcclxuICAgICAgdGhpcy5jYXJkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgaWYgKCF0aGlzLmNhcmRzLmxlbmd0aCB8fCB0aGlzLmNvbHVtbklzVmlzdWFsbHlFbXB0eSgpKVxyXG4gICAgICB0aGlzLmFkZEVtcHR5Q2FyZCgpO1xyXG5cclxuICAgIGNhcmQgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZWxlY3RBbGwgPSAoc2VsZWN0QWxsOiBib29sZWFuKSA9PiB7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2FyZHMubGVuZ3RoOyBpKyspXHJcbiAgICAgIHRoaXMuY2FyZHNbaV0uc2VsZWN0QWxsKHNlbGVjdEFsbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZURhdGFCeUZpbHRlciA9ICgpID0+IHtcclxuICAgIGxldCBjYXJkRmlsdGVyU3RyID0gdGhpcy5jYXJkQ29sdW1uLmNhcmRGaWx0ZXJTdHI7XHJcbiAgICBpZiAoY2FyZEZpbHRlclN0cikge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2FyZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgY2FyZCA9IHRoaXMuY2FyZHNbaV07XHJcblxyXG4gICAgICAgIGlmIChjYXJkLmRhdGEgJiYgY2FyZC5kYXRhLiRlbnRpdHkpIHtcclxuICAgICAgICAgIGxldCBmaWx0ZXJQYXJ0cyA9IGNhcmRGaWx0ZXJTdHIuc3BsaXQoLyhcXHMrKS8pLmZpbHRlcihmdW5jdGlvbiAocykgeyByZXR1cm4gcy50cmltKCkubGVuZ3RoID4gMDsgfSk7XHJcbiAgICAgICAgICBsZXQgY2FyZEZpbHRlclJlc3VsdDtcclxuICAgICAgICAgIC8vaWYgKHNjb3BlLmNvbmZpZy5jYXJkSWQpIHtcclxuICAgICAgICAgIC8vICBjYXJkRmlsdGVyUmVzdWx0ID0gZmlsdGVyUGFydHMuZXZlcnkoZnVuY3Rpb24gKHBhcnQpIHtcclxuICAgICAgICAgIC8vICAgIHJldHVybiBzY29wZS5jb25maWcuY2FyZElkKGNhcmQuZGF0YS4kZW50aXR5KS50b0xvd2VyQ2FzZSgpLmluZGV4T2YocGFydCkgIT0gLTE7XHJcbiAgICAgICAgICAvLyAgfSk7XHJcbiAgICAgICAgICAvL30gZWxzZSB7XHJcbiAgICAgICAgICAvLyAgY2FyZEZpbHRlclJlc3VsdCA9IHNjb3BlLmNvbmZpZy5jYXJkRmlsdGVyKGNhcmQuZGF0YSwgY2FyZEZpbHRlclN0cilcclxuICAgICAgICAgIC8vfVxyXG5cclxuICAgICAgICAgIGlmIChjYXJkRmlsdGVyUmVzdWx0KSB7XHJcbiAgICAgICAgICAgIGNhcmQuY2FyZENvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgndHJ1LWNhcmQtcG9ydGFsLWNhcmQtZmlsdGVyZWQnKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNhcmQuY2FyZENvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndHJ1LWNhcmQtcG9ydGFsLWNhcmQtZmlsdGVyZWQnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jYXJkcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBjYXJkID0gdGhpcy5jYXJkc1tpXTtcclxuICAgICAgICBjYXJkLmNhcmRDb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3RydS1jYXJkLXBvcnRhbC1jYXJkLWZpbHRlcmVkJyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgY2FyZEVsZW1lbnRzID0gdGhpcy5jb2x1bW5FbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50cnUtY2FyZC1wb3J0YWwtY2FyZC1jb250YWluZXI6bm90KC50cnUtY2FyZC1wb3J0YWwtY2FyZC1maWx0ZXJlZCk6bm90KC5lbXB0eSknKTtcclxuICAgIGlmIChjYXJkRWxlbWVudHMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlRW1wdHlDYXJkKCk7XHJcbiAgICAgIGlmICghdGhpcy5sb2NrZWQpIHtcclxuICAgICAgICB0aGlzLnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMuY29sdW1uRWxlbWVudCwgdGhpcy5wYXJlbnRFbGVtZW50LmZpcnN0Q2hpbGQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmFkZEVtcHR5Q2FyZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlRGF0YSA9ICgpID0+IHtcclxuICAgIHRoaXMuY2FyZFNjcm9sbFBvcnRFbGVtZW50LmlubmVySFRNTCA9ICcnO1xyXG5cclxuICAgIHdoaWxlICh0aGlzLmNhcmRzLmxlbmd0aCkgeyB0aGlzLmNhcmRzLnBvcCgpOyB9O1xyXG5cclxuICAgIGlmICh0aGlzLmNhcmRDb2x1bW4uY2FyZHMubGVuZ3RoKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jYXJkQ29sdW1uLmNhcmRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIHRoaXMuY2FyZHMucHVzaChuZXcgQ2FyZCh0aGlzLmNhcmRDb2x1bW4sIHRoaXMsIHRoaXMuY2FyZENvbHVtbi5jYXJkc1tpXSwgZmFsc2UpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWRkRW1wdHlDYXJkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5jbGFzcyBDYXJkIHtcclxuICBwcml2YXRlIGNhcmRDb250YWluZXJFbGVtZW50OiBIVE1MRGl2RWxlbWVudDtcclxuICBwcml2YXRlIGRhdGE7XHJcblxyXG4gIGNvbHVtbjtcclxuICBjYXJkRWxlbWVudDogSFRNTERpdkVsZW1lbnQ7XHJcbiAgc2VsZWN0ZWQgPSBmYWxzZTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjYXJkQ29sdW1uOiBUcnVDYXJkQ29sdW1uLFxyXG4gICAgY29sdW1uOiBhbnksXHJcbiAgICBkYXRhOiBhbnksXHJcbiAgICBkcm9wcGVkOiBib29sZWFuKSB7XHJcblxyXG4gICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XHJcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xyXG5cclxuICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndHJ1LWNhcmQtcG9ydGFsLWNhcmQtY29udGFpbmVyJyk7XHJcblxyXG4gICAgaWYgKGRyb3BwZWQpIHtcclxuICAgICAgdGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdhbmltYXRlZCcpO1xyXG4gICAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3J1YmJlckJhbmQnKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnZHJhZ2dhYmxlJywgJ3RydWUnKTtcclxuICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuc2V0QXR0cmlidXRlKCdkcm9wcGFibGUnLCAndHJ1ZScpO1xyXG5cclxuICAgIHRoaXMuY2FyZEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHRoaXMuY2FyZEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndHJ1LWNhcmQtcG9ydGFsLWNhcmQnKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuY29sdW1uLmRhdGE/LnVuYXNzaWduZWQpXHJcbiAgICAgIHRoaXMuY2FyZEVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5jYXJkQ29sdW1uLmNvbG9yID8gdGhpcy5jYXJkQ29sdW1uLmNvbG9yIDogJyNmZmYnO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmNhcmRFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuY2FyZENvbHVtbi51bmFzc2lnbmVkQ29sb3IgPyB0aGlzLmNhcmRDb2x1bW4udW5hc3NpZ25lZENvbG9yIDogJyNmZmYnO1xyXG5cclxuICAgIGlmICh0aGlzLmRhdGEpIHtcclxuICAgICAgdGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnc3RhcnQnLCAoZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FyZENvbHVtbi5kcmFnU3RhcnQoZSwgdGhpcyk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jYXJkQ29sdW1uLmRyYWdPdmVyKGUsIHRoaXMpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2VuZCcsIChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jYXJkQ29sdW1uLmRyYWdFbmQoZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcm9wJywgKGUpID0+IHtcclxuICAgICAgICB0aGlzLmNhcmRDb2x1bW4uZHJvcChlLCB0aGlzKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSAhdGhpcy5zZWxlY3RlZDtcclxuICAgICAgICB0aGlzLmNhcmRDb2x1bW4udXBkYXRlU2VsZWN0aW9uKHRoaXMpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgLy9nb1RvRGV0YWlsKHRoaXMuZGF0YS4kZW50aXR5LlJlZik7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnb3ZlcicsIChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jYXJkQ29sdW1uLmRyYWdPdmVyKGUsIHRoaXMpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ2VuZCcsIChlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jYXJkQ29sdW1uLmRyYWdFbmQoZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdkcm9wJywgKGUpID0+IHtcclxuICAgICAgICB0aGlzLmNhcmRDb2x1bW4uZHJvcChlLCB0aGlzKTtcclxuICAgICAgICBpZiAoIWUuZGVmYXVsdFByZXZlbnRlZClcclxuICAgICAgICAgIHRoaXMuY29sdW1uLnJlbW92ZUVtcHR5Q2FyZCgpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVwZGF0ZURhdGEoKTtcclxuXHJcbiAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY2FyZEVsZW1lbnQpO1xyXG5cclxuICAgIGlmIChkcm9wcGVkKVxyXG4gICAgICB0aGlzLmNvbHVtbi5jYXJkU2Nyb2xsUG9ydEVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQsIHRoaXMuY29sdW1uLmNhcmRTY3JvbGxQb3J0RWxlbWVudC5maXJzdENoaWxkKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5jb2x1bW4uY2FyZFNjcm9sbFBvcnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY2FyZENvbnRhaW5lckVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWxsID0gKHNlbGVjdEFsbDogYW55KSA9PiB7XHJcbiAgICB0aGlzLnNlbGVjdGVkID0gc2VsZWN0QWxsO1xyXG4gICAgdGhpcy5jYXJkQ29sdW1uLnVwZGF0ZVNlbGVjdGlvbih0aGlzKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZURhdGEgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNhcmRFbGVtZW50LmlubmVySFRNTCA9ICcnO1xyXG4gICAgdGhpcy5jYXJkQ29sdW1uLnJlbW92ZVNlbGVjdGlvbih0aGlzKVxyXG5cclxuICAgIGlmICh0aGlzLmRhdGEpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgaWYgKGZhbHNlKSB7XHJcbiAgICAgICAgLy9zY29wZS5jb25maWcuY3VzdG9tQ2FyZFZpZXdGYWN0b3J5KF90aGlzLCBzY29wZS5jb25maWcpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhciBjYXJkVGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcclxuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmNhcmRDb2x1bW4uY29uZmlnLnJlc3VsdENvbmZpZy5jYXJkSWQodGhpcy5kYXRhKTtcclxuICAgICAgICBpZiAodmFsdWUpXHJcbiAgICAgICAgICBjYXJkVGV4dC5pbm5lckhUTUwgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmNhcmRFbGVtZW50LmFwcGVuZENoaWxkKGNhcmRUZXh0KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jYXJkQ29udGFpbmVyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RyYWdnYWJsZScsICdmYWxzZScpO1xyXG4gICAgICB0aGlzLmNhcmRDb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2VtcHR5Jyk7XHJcbiAgICAgIHRoaXMuY2FyZEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZW1wdHknKTtcclxuXHJcbiAgICAgIHZhciBjYXJkQ29udGFpbmVyRW1wdHlUZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xyXG4gICAgICBjYXJkQ29udGFpbmVyRW1wdHlUZXh0LmNsYXNzTGlzdC5hZGQoJ2V4Y2x1ZGUtZnJvbS1maWx0ZXInKTtcclxuICAgICAgY2FyZENvbnRhaW5lckVtcHR5VGV4dC5pbm5lckhUTUwgPSAnRHJhZyBpdGVtcyBoZXJlJztcclxuXHJcbiAgICAgIHRoaXMuY2FyZEVsZW1lbnQuYXBwZW5kQ2hpbGQoY2FyZENvbnRhaW5lckVtcHR5VGV4dCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0cnUtY2FyZFwiPlxyXG4gIDxkaXYgKm5nSWY9XCJpc0J1c3lcIlxyXG4gICAgICAgY2xhc3M9XCJ0cnUtY2FyZC1idXN5LWluZGljYXRvclwiPlxyXG4gICAgPHA+U2VhcmNoaW5nIGZvciB7e2NvbmZpZy5jaGlsZFRhYmxlUGx1cmFsTGFiZWx9fS4uLjwvcD5cclxuICA8L2Rpdj5cclxuICA8IS0tPHRydS10b29sYmFyIFtjb25maWddPVwiY29uZmlnLnRvb2xiYXJDb25maWdcIiBjbGFzcz1cIm1haW4tdG9vbGJhclwiPjwvdHJ1LXRvb2xiYXI+LS0+XHJcbiAgPGRpdiBjbGFzcz1cInRydS1jYXJkLXBvcnRhbFwiICNjYXJkUG9ydGFsPlxyXG4gICAgPGRpdiBbbmdTdHlsZV09XCJ7J3dpZHRoJzogKChjb25maWcud2lkdGggKiBsb2NrZWRDb2x1bW5zLmxlbmd0aCkgKyAoMTAgKiBsb2NrZWRDb2x1bW5zLmxlbmd0aCAtIDEpKSArICdweCcgfVwiXHJcbiAgICAgICAgIFtuZ0NsYXNzXT1cInsndHJ1LWNhcmQtcG9ydGFsLWxvY2tlZC1jb2x1bW5zLWRpdmlkZXInOiBsb2NrZWRDb2x1bW5zLmxlbmd0aH1cIlxyXG4gICAgICAgICAqbmdJZj1cImxvY2tlZENvbHVtbnMubGVuZ3RoXCJcclxuICAgICAgICAgY2xhc3M9XCJ0cnUtY2FyZC1wb3J0YWwtbG9ja2VkLWNvbHVtbnMgbG9ja2VkLWNvbHVtbnNcIj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgW25nU3R5bGVdPVwieydsZWZ0JzogbG9ja2VkQ29sdW1ucy5sZW5ndGggPyAoKGNvbmZpZy53aWR0aCAqIGxvY2tlZENvbHVtbnMubGVuZ3RoKSArICgxMCAqIGxvY2tlZENvbHVtbnMubGVuZ3RoIC0gMSkgKyAyMikgKyAncHgnIDogMCB9XCJcclxuICAgICAgICAgY2xhc3M9XCJ0cnUtY2FyZC1wb3J0YWwtY29sdW1ucyB1bmxvY2tlZC1jb2x1bW5zXCI+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -3339,7 +3339,7 @@ class Card {
3339
3339
  }
3340
3340
  else {
3341
3341
  var cardText = document.createElement('p');
3342
- let value = this.cardColumn.config.resultConfig.cardId(this.data.$entity);
3342
+ let value = this.cardColumn.config.resultConfig.cardId(this.data);
3343
3343
  if (value)
3344
3344
  cardText.innerHTML = value;
3345
3345
  this.cardElement.appendChild(cardText);