@hestia-earth/ui-components 0.12.0 → 0.12.2

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.
@@ -405,9 +405,14 @@ export class ImpactAssessmentsGraphComponent {
405
405
  }
406
406
  ngOnChanges(changes) {
407
407
  if ('impactAssessments' in changes) {
408
+ const selectedImpactAssessmentId = this.selectedImpactAssessmentId;
408
409
  this.initImpactAssessments();
410
+ // only reload the chart if the select IA has changed
411
+ selectedImpactAssessmentId !== this.selectedImpactAssessmentId && this.reloadChart();
412
+ }
413
+ if ('dataState' in changes) {
414
+ return this.reloadChart();
409
415
  }
410
- return this.reloadChart();
411
416
  }
412
417
  initImpactAssessments() {
413
418
  this.filteredImpactAssessments = this.impactAssessments.filter((ia) => ia.endpoints?.length || ia.impacts?.length);
@@ -434,6 +439,9 @@ export class ImpactAssessmentsGraphComponent {
434
439
  return this.dataState === DataState.recalculated;
435
440
  }
436
441
  reloadChart() {
442
+ if (!this.isRecalculated) {
443
+ return;
444
+ }
437
445
  const impactAssessment = this.filteredImpactAssessments.find((ia) => ia['@id'] === this.selectedImpactAssessmentId) ||
438
446
  this.filteredImpactAssessments[0];
439
447
  const indicators = [
@@ -785,4 +793,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
785
793
  }], dataState: [{
786
794
  type: Input
787
795
  }] } });
788
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLWdyYXBoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbXBhY3QtYXNzZXNzbWVudHMvaW1wYWN0LWFzc2Vzc21lbnRzLWdyYXBoL2ltcGFjdC1hc3Nlc3NtZW50cy1ncmFwaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1ncmFwaC9pbXBhY3QtYXNzZXNzbWVudHMtZ3JhcGguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxTQUFTLEVBRVQsS0FBSyxFQUlOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEcsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLElBQUksZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sSUFBSSxRQUFRLEVBQXVCLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRixPQUFPLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsU0FBUyxJQUFJLFdBQVcsRUFDeEIsSUFBSSxJQUFJLE1BQU0sRUFJZixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsYUFBYSxJQUFJLGVBQWUsRUFBRSxjQUFjLElBQUksZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDL0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBd0MsUUFBUSxFQUFFLFlBQVksRUFBRSxN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LGVBQWU7c0JBRHRCLFNBQVM7dUJBQUMsR0FBRztnQkFJTixpQkFBaUI7c0JBRHhCLEtBQUs7Z0JBR0UsU0FBUztzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgTmdab25lLFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlsdGVyLCBncm91cEJ5LCBtYXAsIG1lcmdlQWxsLCBtZXJnZU1hcCwgdG9BcnJheSwgY2F0Y2hFcnJvciwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZnJvbSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbGlua0hvcml6b250YWwgYXMgZDNMaW5rSG9yaXpvbnRhbCB9IGZyb20gJ2QzLXNoYXBlJztcbmltcG9ydCB7IHNlbGVjdCBhcyBkM1NlbGVjdCwgU2VsZWN0aW9uLCBCYXNlVHlwZSwgc2VsZWN0QWxsIH0gZnJvbSAnZDMtc2VsZWN0aW9uJztcbmltcG9ydCAnZDMtdHJhbnNpdGlvbic7XG5pbXBvcnQge1xuICBoaWVyYXJjaHkgYXMgZDNIaWVyYXJjaHksXG4gIHRyZWUgYXMgZDNUcmVlLFxuICBIaWVyYXJjaHlOb2RlLFxuICBIaWVyYXJjaHlQb2ludE5vZGUsXG4gIEhpZXJhcmNoeVBvaW50TGlua1xufSBmcm9tICdkMy1oaWVyYXJjaHknO1xuaW1wb3J0IHsgZWFzZUVsYXN0aWNJbiBhcyBkM0Vhc2VFbGFzdGljSW4sIGVhc2VFbGFzdGljT3V0IGFzIGQzRWFzZUVsYXN0aWNPdXQgfSBmcm9tICdkMy1lYXNlJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELCBJVGVybUpTT05MRCwgTm9kZVR5cGUsIFRlcm1UZXJtVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IGdldERlZmF1bHRNb2RlbElkIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9nbG9zc2FyeSc7XG5pbXBvcnQgeyB1bmlxdWUsIHRvUHJlY2lzaW9uIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5pbXBvcnQgeyBOZ2JQb3BvdmVyIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG5pbXBvcnQgeyBiYXNlVXJsIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IGQzd3JhcCB9IGZyb20gJy4uLy4uL2NvbW1vbi9kMy11dGlscyc7XG5pbXBvcnQgeyBMZXZlbCwgcGFyc2VMaW5lcywgcGFyc2VNZXNzYWdlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2xvZ3MtdXRpbHMnO1xuaW1wb3J0IHsgSGVFbmdpbmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZW5naW5lL2VuZ2luZS5zZXJ2aWNlJztcbmltcG9ydCB7IEhlTm9kZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9ub2RlL25vZGUuc2VydmljZSc7XG5pbXBvcnQgeyBIZVNlYXJjaFNlcnZpY2UsIElTZWFyY2hSZXN1bHRFeHRlbmRlZCB9IGZyb20gJy4uLy4uL3NlYXJjaC9zZWFyY2guc2VydmljZSc7XG5pbXBvcnQgeyBtYXRjaFRlcm1UeXBlLCBtYXRjaEV4YWN0UXVlcnksIG1hdGNoVHlwZSB9IGZyb20gJy4uLy4uL3NlYXJjaC9zZWFyY2gubW9kZWwnO1xuXG5lbnVtIENoYXJ0Tm9kZVR5cGUge1xuICBtaWRwb2ludCA9ICdtaWRwb2ludCcsXG4gIGVtaXNzaW9uID0gJ2VtaXNzaW9uJyxcbiAgZW5kcG9pbnQgPSAnZW5kcG9pbnQnLFxuICBpbnB1dCA9ICdpbnB1dCcsXG4gIG9wZXJhdGlvbiA9ICdvcGVyYXRpb24nLFxuICByb290ID0gJ3Jvb3QnXG59XG5cbmludGVyZmFjZSBOb2RlRGF0dW0ge1xuICBpZDogc3RyaW5nO1xuICB0ZXJtOiBzdHJpbmc7XG4gIG1vZGVsSWQ6IHN0cmluZztcbiAgbW9kZWxOYW1lPzogc3RyaW5nO1xuICBtb2RlbERvY3M/OiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHR5cGU6IENoYXJ0Tm9kZVR5cGU7XG4gIHZhbHVlOiBudW1iZXIgfCBudWxsO1xuICB3ZWlnaHRlZFZhbHVlOiBudW1iZXIgfCBudWxsO1xuICBmcmFjdGlvbj86IG51bWJlcjtcbiAgY2hpbGRyZW4/OiBOb2RlRGF0dW1bXTtcbiAgZ3JvdXA/OiBib29sZWFuO1xuICBzaG93QmFyPzogYm9vbGVhbjtcbiAgdW5pdHM6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIENoYXJ0Tm9kZSBleHRlbmRzIEhpZXJhcmNoeVBvaW50Tm9kZTxOb2RlRGF0dW0+IHtcbiAgX2NoaWxkcmVuPzogQ2hhcnROb2RlW107IC8vIGNoaWxkcmVuIG9mIGNvbGxhcHNlZCBub2Rlc1xuICBfZ3JvdXBDaGlsZHJlbj86IENoYXJ0Tm9kZVtdOyAvLyBhbGwgY2hpbGRyZW4gd2hlbiBncm91cCBjbG9zZWQ7IHVuZ3JvdXBlZCBjaGlsZHJlbiB3aGVuIGdyb3VwIG9wZW5cbiAgX29wZW4/OiBib29sZWFuO1xuICBfZ3JleWVkPzogYm9vbGVhbjtcbiAgX2dyb3VwT3Blbj86IGJvb2xlYW47XG4gIF90aW1lb3V0PzogTm9kZUpTLlRpbWVvdXQ7XG59XG5cbmludGVyZmFjZSBITm9kZSBleHRlbmRzIEhpZXJhcmNoeU5vZGU8Tm9kZURhdHVtPiB7XG4gIF9jaGlsZHJlbj86IEhOb2RlW107XG4gIF9ncm91cENoaWxkcmVuPzogSE5vZGVbXTtcbiAgX2dyb3VwT3Blbj86IGJvb2xlYW47XG4gIF9vcGVuPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIExpbmsgZXh0ZW5kcyBIaWVyYXJjaHlQb2ludExpbms8Tm9kZURhdHVtPiB7XG4gIHNvdXJjZTogQ2hhcnROb2RlO1xuICB0YXJnZXQ6IENoYXJ0Tm9kZTtcbn1cblxudHlwZSBOb2RlU2VsZWN0aW9uID0gU2VsZWN0aW9uPFNWR0dFbGVtZW50IHwgQmFzZVR5cGUsIENoYXJ0Tm9kZSwgU1ZHR0VsZW1lbnQsIHVua25vd24+O1xudHlwZSBMaW5rU2VsZWN0aW9uID0gU2VsZWN0aW9uPFNWR1BhdGhFbGVtZW50IHwgQmFzZVR5cGUsIExpbmssIFNWR0dFbGVtZW50LCB1bmtub3duPjtcblxuaW50ZXJmYWNlIElJbnB1dExvZyB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHVuaXRzOiBzdHJpbmc7XG4gIHdlaWdodGVkVmFsdWU6IG51bWJlcjtcbiAgdmFsdWU6IG51bWJlcjtcbiAgb3BlcmF0aW9uczoge1xuICAgIHdlaWdodGVkVmFsdWU6IG51bWJlcjtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHVuaXRzOiBzdHJpbmc7XG4gICAgdmFsdWU6IG51bWJlcjtcbiAgfVtdO1xufVxuaW50ZXJmYWNlIElMb2cge1xuICBpbmRpY2F0b3I6IHN0cmluZztcbiAgY29udHJpYnV0b3I6IHN0cmluZztcbiAgY29lZmZpY2llbnQ6IG51bWJlcjtcbiAgdmFsdWU6IG51bWJlcjtcbiAgd2VpZ2h0ZWRWYWx1ZTogbnVtYmVyO1xuICBtb2RlbElkOiBzdHJpbmc7XG4gIGlucHV0cz86IElJbnB1dExvZ1tdO1xufVxuXG5jb25zdCBwYXJzZUxvZyA9IChkYXRhOiBhbnkpOiBJTG9nID0+ICh7XG4gIGluZGljYXRvcjogZGF0YVsna2V5L3Rlcm0nXSB8fCBkYXRhLnRlcm0gfHwgZGF0YS5pbmRpY2F0b3IsXG4gIGNvbnRyaWJ1dG9yOiBkYXRhLm5vZGUsXG4gIGNvZWZmaWNpZW50OiArZGF0YS5jb2VmZmljaWVudCxcbiAgbW9kZWxJZDogZGF0YS5tb2RlbCB8fCAnVW5rbm93bicsXG4gIHdlaWdodGVkVmFsdWU6ICtkYXRhLnZhbHVlICogK2RhdGEuY29lZmZpY2llbnQsXG4gIHZhbHVlOiArZGF0YS52YWx1ZVxufSk7XG5cbmNvbnN0IGZpbHRlclRlcm1UeXBlcyA9IFtcbiAgVGVybVRlcm1UeXBlLnJlc291cmNlVXNlLFxuICBUZXJtVGVybVR5cGUuZW1pc3Npb24sXG4gIFRlcm1UZXJtVHlwZS5jaGFyYWN0ZXJpc2VkSW5kaWNhdG9yLFxuICBUZXJtVGVybVR5cGUuZW5kcG9pbnRJbmRpY2F0b3IsXG4gIFRlcm1UZXJtVHlwZS5tb2RlbFxuXTtcbmNvbnN0IG5vZGVDb2xvdXJzID0ge1xuICBbQ2hhcnROb2RlVHlwZS5lbmRwb2ludF06ICdibHVlJyxcbiAgW0NoYXJ0Tm9kZVR5cGUubWlkcG9pbnRdOiAncmVkJyxcbiAgW0NoYXJ0Tm9kZVR5cGUuZW1pc3Npb25dOiAncHVycGxlJyxcbiAgW0NoYXJ0Tm9kZVR5cGUuaW5wdXRdOiAnZ3JlZW4nLFxuICBbQ2hhcnROb2RlVHlwZS5vcGVyYXRpb25dOiAnb3JhbmdlJ1xufTtcbmNvbnN0IHdpZHRoID0gODAwO1xuY29uc3QgbWFyZ2luID0geyB0b3A6IDEwLCByaWdodDogMjAsIGJvdHRvbTogMTAsIGxlZnQ6IDIwIH07XG5jb25zdCBmb250U2l6ZSA9IE1hdGguZmxvb3Iod2lkdGggLyAxMDApO1xuY29uc3Qgbm9kZVBhZGRpbmcgPSBmb250U2l6ZSAvIDI7XG5jb25zdCBsaW5lSGVpZ2h0ID0gZm9udFNpemUgKiAxLjI7XG5jb25zdCBiYXJIZWlnaHQgPSBsaW5lSGVpZ2h0O1xuXG5jb25zdCBub2RlSGVpZ2h0ID0gbm9kZVBhZGRpbmcgKiAyICsgMiAqIGxpbmVIZWlnaHQgKyBiYXJIZWlnaHQ7XG5jb25zdCBub2RlV2lkdGggPSBub2RlSGVpZ2h0ICogMiAqIDEuNjE4O1xuY29uc3Qgbm9kZUNvbnRlbnRXaWR0aCA9IG5vZGVXaWR0aCAtIG5vZGVQYWRkaW5nICogMjtcbmNvbnN0IGxheWVyU3BhY2luZyA9ICh3aWR0aCAtIG1hcmdpbi5sZWZ0IC0gbWFyZ2luLnJpZ2h0IC0gbm9kZVdpZHRoICogNSkgLyA0O1xuY29uc3Qgbm9kZU1hcmdpbiA9IG5vZGVQYWRkaW5nICogMC43NTtcbmNvbnN0IG5vZGVTcGFjaW5nRmFjdG9yID0gKG5vZGVIZWlnaHQgKyBub2RlTWFyZ2luICogMikgLyBub2RlSGVpZ2h0O1xuY29uc3Qgbm9kZUR1cmF0aW9uID0gNjAwO1xuY29uc3QgbGlua0R1cmF0aW9uID0gMjAwO1xuY29uc3QgZ3JvdXBEZWxheSA9IG5vZGVEdXJhdGlvbiAtIDEwMDtcbmNvbnN0IG5vbkxDQUluZGljYXRvcnNJZCA9ICdub25MQ0FJbmRpY2F0b3JzJztcbmNvbnN0IGdyZXllZE9wYWNpdHkgPSAwLjI7XG5jb25zdCBkZWZhdWx0SW5kaWNhdG9yc01vZGVsSWQgPSAnZGVmYXVsdEluZGljYXRvcnNNb2RlbElkJztcbmNvbnN0IGRlZmF1bHRJbmRpY2F0b3JzTW9kZWxOYW1lID0gJ0RlZmF1bHQgSW5kaWNhdG9ycyAobXVsdGktbW9kZWwpJztcbmNvbnN0IGdyb3VwT3ZlcmxhcCA9IGxpbmVIZWlnaHQgLSBub2RlUGFkZGluZyAtIG5vZGVNYXJnaW47XG5jb25zdCBncm91cE5vZGVTcGFjZSA9IG5vZGVIZWlnaHQgLSAyICogZ3JvdXBPdmVybGFwO1xuXG5jb25zdCBjb2xsYXBzZUNoaWxkcmVuID0gKG5vZGU6IENoYXJ0Tm9kZSB8IEhOb2RlKSA9PiB7XG4gIG5vZGUuX2NoaWxkcmVuID0gbm9kZS5jaGlsZHJlbiB8fCBub2RlLl9jaGlsZHJlbjtcbiAgbm9kZS5jaGlsZHJlbiA9IG51bGw7XG4gIHJldHVybiBub2RlO1xufTtcblxuY29uc3QgcmVzdG9yZUNoaWxkcmVuID0gKG5vZGU6IENoYXJ0Tm9kZSB8IEhOb2RlKSA9PiB7XG4gIG5vZGUuY2hpbGRyZW4gPSBub2RlLl9jaGlsZHJlbjtcbiAgbm9kZS5fY2hpbGRyZW4gPSBudWxsO1xuICByZXR1cm4gbm9kZTtcbn07XG5cbmNvbnN0IHdyYXAgPSAoc2VsZWN0aW9uOiBTZWxlY3Rpb248U1ZHVGV4dEVsZW1lbnQsIENoYXJ0Tm9kZSwgYW55LCBhbnk+LCBtYXhXaWR0aCA9IG5vZGVDb250ZW50V2lkdGgpID0+IHtcbiAgc2VsZWN0aW9uLmVhY2goZnVuY3Rpb24oZCkge1xuICAgIGNvbnN0IHQgPSBkM1NlbGVjdDxTVkdUZXh0RWxlbWVudCwgQ2hhcnROb2RlPih0aGlzKTtcbiAgICBkM3dyYXA8Q2hhcnROb2RlPih0LCB7XG4gICAgICBtYXhXaWR0aCxcbiAgICAgIG1heExpbmVzOiBkLmRhdGEuc2hvd0JhciA/IDIgOiAzLFxuICAgICAgdmNlbnRyZTogIWQuZGF0YS5zaG93QmFyLFxuICAgICAgd29yZHM6IFsuLi5kLmRhdGEubGFiZWwuc3BsaXQoL1xccysvKSwgZC5kYXRhLnVuaXRzXSxcbiAgICAgIG93bkxpbmVXb3JkOiBkLmRhdGEudW5pdHMsXG4gICAgICBuSGVpZ2h0OiBub2RlSGVpZ2h0LFxuICAgICAgbEhlaWdodDogbGluZUhlaWdodFxuICAgIH0pO1xuICB9KTtcbn07XG5cbmNvbnN0IHNldE5vZGVTaXplID0gKHNlbGVjdGlvbikgPT4gc2VsZWN0aW9uLmF0dHIoJ3dpZHRoJywgbm9kZVdpZHRoKS5hdHRyKCdoZWlnaHQnLCBub2RlSGVpZ2h0KTtcblxuY29uc3QgZm9ybWF0QmFyID0gKHNlbGVjdGlvbjogTm9kZVNlbGVjdGlvbikgPT5cbiAgc2VsZWN0aW9uXG4gICAgLmF0dHIoJ2hlaWdodCcsIGJhckhlaWdodClcbiAgICAuYXR0cigncngnLCAnMScpXG4gICAgLmF0dHIoJ3J5JywgJzEnKVxuICAgIC5hdHRyKCd5Jywgbm9kZUhlaWdodCAtIG5vZGVQYWRkaW5nIC0gYmFySGVpZ2h0KVxuICAgIC5hdHRyKCd4Jywgbm9kZVBhZGRpbmcpO1xuXG5jb25zdCBpc1R5cGVXaXRob3V0VmFsdWUgPSAobm9kZURhdHVtKSA9PiBbQ2hhcnROb2RlVHlwZS5pbnB1dCwgQ2hhcnROb2RlVHlwZS5vcGVyYXRpb25dLmluY2x1ZGVzKG5vZGVEYXR1bS5kYXRhLnR5cGUpO1xuXG5jb25zdCBnZXRXZWlnaHRlZFZhbHVlVGV4dCA9IChub2RlRGF0dW0pID0+XG4gIGAke3RvUHJlY2lzaW9uKG5vZGVEYXR1bS5kYXRhLndlaWdodGVkVmFsdWUsIDMpfSR7XG4gICAgbm9kZURhdHVtLnBhcmVudD8uZGF0YS52YWx1ZSA9PT0gbnVsbFxuICAgICAgPyAnJ1xuICAgICAgOiBgIG9mICR7dG9QcmVjaXNpb24obm9kZURhdHVtLnBhcmVudD8uZGF0YS52YWx1ZSB8fCBub2RlRGF0dW0ucGFyZW50Py5kYXRhLndlaWdodGVkVmFsdWUsIDMpfWBcbiAgfSAke25vZGVEYXR1bS5wYXJlbnQ/LmRhdGEudmFsdWUgPyBub2RlRGF0dW0ucGFyZW50Py5kYXRhLnVuaXRzIDogbm9kZURhdHVtLnBhcmVudD8ucGFyZW50Py5kYXRhLnVuaXRzfWA7XG5cbmNvbnN0IGdlbmVyYXRlVGlwRGF0YSA9IChub2RlRGF0dW0pID0+ICh7XG4gIGhhc1dlaWdodGVkVmFsdWU6IG5vZGVEYXR1bS5kYXRhLndlaWdodGVkVmFsdWUsXG4gIHdlaWdodGVkVmFsdWVUZXh0OiBnZXRXZWlnaHRlZFZhbHVlVGV4dChub2RlRGF0dW0pLFxuICB2YWx1ZUtleUhyZWY6IGAke2Jhc2VVcmwoKX0vc2NoZW1hL0luZGljYXRvciN2YWx1ZWAsXG4gIG1vZGVsRG9jc0hyZWY6IG5vZGVEYXR1bS5kYXRhLm1vZGVsRG9jcyxcbiAgdmFsdWVWYWx1ZVRleHQ6IG5vZGVEYXR1bS5kYXRhLnZhbHVlXG4gICAgPyBgJHt0b1ByZWNpc2lvbihub2RlRGF0dW0uZGF0YS52YWx1ZSwgMyl9ICR7bm9kZURhdHVtLmRhdGEudW5pdHN9IC0gYFxuICAgIDogaXNUeXBlV2l0aG91dFZhbHVlKG5vZGVEYXR1bSlcbiAgICA/ICdubyBkYXRhICh1bmRlciBkZXZlbG9wbWVudCknXG4gICAgOiAnbm8gY29udHJpYnV0aW9uJyxcbiAgaGFzVmFsdWU6IG5vZGVEYXR1bS5kYXRhLnZhbHVlLFxuICBtb2RlbEtleUhyZWY6IGAke2Jhc2VVcmwoKX0vc2NoZW1hL0luZGljYXRvciNtZXRob2RNb2RlbGAsXG4gIG1vZGVsVmFsdWU6IG5vZGVEYXR1bS5kYXRhLm1vZGVsTmFtZSxcbiAgbW9kZWxWYWx1ZUhyZWY6IGAke2Jhc2VVcmwoKX0vbW9kZWwvJHtub2RlRGF0dW0uZGF0YS5tb2RlbElkfWAsXG4gIHRlcm1LZXlIcmVmOiBgJHtiYXNlVXJsKCl9L3NjaGVtYS9JbmRpY2F0b3IjdGVybWAsXG4gIHRlcm1WYWx1ZTogbm9kZURhdHVtLmRhdGEudGVybSxcbiAgdGVybVZhbHVlVGV4dDogbm9kZURhdHVtLmRhdGEudGVybSxcbiAgdGVybVZhbHVlSHJlZjogYCR7YmFzZVVybCgpfS90ZXJtLyR7bm9kZURhdHVtLmRhdGEuaWR9YFxufSk7XG5cbmNvbnN0IGFkZFRvb2x0aXAgPSAoXG4gIHNlbGVjdGlvbjogTm9kZVNlbGVjdGlvbixcbiAgeyB0b29sdGlwT3BlcmF0b3IsIHpvbmUgfTogeyB0b29sdGlwT3BlcmF0b3I6IE5nYlBvcG92ZXI7IHpvbmU6IE5nWm9uZSB9XG4pID0+IHtcbiAgbGV0IGhvdmVyaW5nVGlwID0gZmFsc2U7XG4gIGxldCBob3ZlcmluZ05vZGUgPSBmYWxzZTtcbiAgbGV0IGxhc3ROb2RlSWQ6IHN0cmluZztcblxuICBjb25zdCBjbG9zZVRpcCA9ICgpID0+IHtcbiAgICB6b25lLnJ1bigoKSA9PiB0b29sdGlwT3BlcmF0b3IuY2xvc2UoZmFsc2UpKTtcbiAgICBzZWxlY3RBbGwoJy50aXAtdGFyZ2V0JykuY2xhc3NlZCgndGlwLXRhcmdldCcsIGZhbHNlKTtcbiAgICBsYXN0Tm9kZUlkID0gbnVsbDtcbiAgfTtcblxuICBjb25zdCBzdGFydENsb3NlVGlwID0gKCkgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCFob3ZlcmluZ1RpcCAmJiAhaG92ZXJpbmdOb2RlKSB7XG4gICAgICAgIGNsb3NlVGlwKCk7XG4gICAgICB9XG4gICAgfSwgMTAwKTtcbiAgfTtcblxuICBzZWxlY3Rpb25cbiAgICAub24oJ2NsaWNrJywgKF9lLCBkKSA9PiB7XG4gICAgICBjbG9zZVRpcCgpO1xuICAgIH0pXG4gICAgLm9uKCdwb2ludGVyZW50ZXInLCAoZXZlbnQsIG5vZGVEYXR1bSkgPT4ge1xuICAgICAgaG92ZXJpbmdOb2RlID0gdHJ1ZTtcbiAgICAgIGlmIChsYXN0Tm9kZUlkID09PSBub2RlRGF0dW0uZGF0YS5pZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjbG9zZVRpcCgpO1xuICAgICAgbGFzdE5vZGVJZCA9IG5vZGVEYXR1bS5kYXRhLmlkO1xuICAgICAgZDNTZWxlY3QoZXZlbnQudGFyZ2V0KS5jbGFzc2VkKCd0aXAtdGFyZ2V0JywgdHJ1ZSk7XG4gICAgICB6b25lLnJ1bigoKSA9PiB0b29sdGlwT3BlcmF0b3Iub3Blbih7IHRpcERhdGE6IGdlbmVyYXRlVGlwRGF0YShub2RlRGF0dW0pIH0pKTtcblxuICAgICAgZDNTZWxlY3QoJy5kcml2ZXItY2hhcnQtdG9vbHRpcCcpXG4gICAgICAgIC5vbigncG9pbnRlcmVudGVyJywgKCkgPT4ge1xuICAgICAgICAgIGhvdmVyaW5nVGlwID0gdHJ1ZTtcbiAgICAgICAgfSlcbiAgICAgICAgLm9uKCdwb2ludGVybGVhdmUnLCAoKSA9PiB7XG4gICAgICAgICAgaG92ZXJpbmdUaXAgPSBmYWxzZTtcbiAgICAgICAgICBzdGFydENsb3NlVGlwKCk7XG4gICAgICAgIH0pO1xuICAgIH0pXG4gICAgLm9uKCdwb2ludGVybGVhdmUnLCAoX2UsIGQpID0+IHtcbiAgICAgIGhvdmVyaW5nTm9kZSA9IGZhbHNlO1xuICAgICAgc3RhcnRDbG9zZVRpcCgpO1xuICAgIH0pO1xuXG4gIHJldHVybiBzZWxlY3Rpb247XG59O1xuXG5jb25zdCBtZXJnZWROb2RlcyA9IChzZWxlY3Rpb246IE5vZGVTZWxlY3Rpb24sIHsgdG9vbHRpcE9wZXJhdG9yLCB6b25lIH0pID0+IHtcbiAgc2VsZWN0aW9uXG4gICAgLnNlbGVjdEFsbDxTVkdSZWN0RWxlbWVudCwgQ2hhcnROb2RlPignLm5vZGUtYm94JylcbiAgICAuY2xhc3NlZCgnbm9kZS1vcGVuYWJsZScsIChkKSA9PiAhIWQuaGVpZ2h0KVxuICAgIC5jbGFzc2VkKCdub2RlLW9wZW4nLCAoZCkgPT4gZC5fb3BlbilcbiAgICAuY2FsbChzZXROb2RlU2l6ZSlcbiAgICAuYXR0cignc3Ryb2tlJywgKHsgZGF0YSB9KSA9PiBub2RlQ29sb3Vyc1tkYXRhLnR5cGVdKVxuICAgIC5hdHRyKCdmaWxsJywgKGQpID0+IG5vZGVDb2xvdXJzW2QuZGF0YS50eXBlXSlcbiAgICAuc3R5bGUoJ3VzZXItc2VsZWN0Jywgd2luZG93LmlubmVyV2lkdGggPCA3NjggPyAnbm9uZScgOiBudWxsKTtcblxuICBzZWxlY3Rpb25cbiAgICAuZmlsdGVyKChkKSA9PiAhZC5kYXRhLmdyb3VwICYmIGQuZGF0YS5pZCAhPT0gbm9uTENBSW5kaWNhdG9yc0lkKVxuICAgIC5jYWxsKGFkZFRvb2x0aXAsIHsgdG9vbHRpcE9wZXJhdG9yLCB6b25lIH0pO1xuXG4gIHNlbGVjdGlvblxuICAgIC5zZWxlY3RBbGw8U1ZHVGV4dEVsZW1lbnQsIENoYXJ0Tm9kZT4oJy5ub2RlLWxhYmVsJylcbiAgICAuYXR0cigneScsIChkKSA9PiAoZC5kYXRhLnNob3dCYXIgPyBsaW5lSGVpZ2h0IC8gMiArIG5vZGVQYWRkaW5nIC8gMiA6IDApKVxuICAgIC5hdHRyKCd4Jywgbm9kZVdpZHRoIC8gMik7XG5cbiAgY29uc3QgZ3JvdXBzID0gc2VsZWN0aW9uLmZpbHRlcigoZCkgPT4gZC5kYXRhLmdyb3VwKTtcblxuICBncm91cHNcbiAgICAuc2VsZWN0QWxsPFNWR1RleHRFbGVtZW50LCBDaGFydE5vZGU+KCcuZ3JvdXAtYm9yZGVyJylcbiAgICAuYXR0cignd2lkdGgnLCBub2RlV2lkdGggKyBub2RlUGFkZGluZyAqIDIpXG4gICAgLmF0dHIoJ3gnLCAtbm9kZVBhZGRpbmcpXG4gICAgLmF0dHIoJ3knLCBub2RlSGVpZ2h0IC0gKGxpbmVIZWlnaHQgKyBub2RlUGFkZGluZyAqIDIpKVxuICAgIC5hdHRyKCdvcGFjaXR5JywgKGQpID0+IChkLl9ncmV5ZWQgJiYgZC5fZ3JvdXBPcGVuID8gZ3JleWVkT3BhY2l0eSA6IGQuX2dyb3VwT3BlbiA/IDEgOiAwKSlcbiAgICAuYXR0cihcbiAgICAgICdoZWlnaHQnLFxuICAgICAgKGQpID0+XG4gICAgICAgIE1hdGguYWJzKGQucGFyZW50Ll9ncm91cENoaWxkcmVuLmxlbmd0aCAtIGQucGFyZW50LmNoaWxkcmVuLmxlbmd0aCkgKiAobm9kZUhlaWdodCAqIG5vZGVTcGFjaW5nRmFjdG9yKSArXG4gICAgICAgIG5vZGVQYWRkaW5nICtcbiAgICAgICAgKGxpbmVIZWlnaHQgKyBub2RlUGFkZGluZyAqIDIpIC8gMlxuICAgICk7XG5cbiAgY29uc3QgZ3JvdXBMYWJlbHMgPSBncm91cHNcbiAgICAuc2VsZWN0QWxsPFNWR1RleHRFbGVtZW50LCBDaGFydE5vZGU+KCcuZ3JvdXAtbGFiZWwnKVxuICAgIC5hdHRyKCd5Jywgbm9kZUhlaWdodCAvIDIpXG4gICAgLmF0dHIoJ3gnLCBub2RlUGFkZGluZylcbiAgICAudGV4dCgoZCkgPT4gZC5kYXRhLmxhYmVsKVxuICAgIC5hdHRyKCdvcGFjaXR5JywgKGQpID0+IChkLl9ncm91cE9wZW4gPyAwIDogZC5fZ3JleWVkID8gZ3JleWVkT3BhY2l0eSA6IDEpKTtcblxuICAvLyB1bm5lZWRlZCB3aXRoIGN1cnJlbnQgZGltZW5zaW9uc1xuICAvLyBncm91cExhYmVscy5lYWNoKGZ1bmN0aW9uKCkge1xuICAvLyAgIGNvbnN0IHRleHQgPSBkM1NlbGVjdDxTVkdUZXh0RWxlbWVudCwgQ2hhcnROb2RlPih0aGlzKTtcbiAgLy8gICBjb25zdCB0ZXh0V2lkdGggPSAodGV4dC5ub2RlKCkgYXMgU1ZHVGV4dEVsZW1lbnQpLmdldENvbXB1dGVkVGV4dExlbmd0aCgpO1xuICAvLyAgIGNvbnN0IGxpbmUgPSBkM1NlbGVjdDxTVkdMaW5lRWxlbWVudCwgQ2hhcnROb2RlPih0aGlzLm5leHRTaWJsaW5nIGFzIFNWR0xpbmVFbGVtZW50KTtcbiAgLy8gICBsaW5lXG4gIC8vICAgICAuY2xhc3NlZCgnZ3JvdXAtbGluZScsIHRydWUpXG4gIC8vICAgICAuYXR0cigneDEnLCB0ZXh0V2lkdGggKyBub2RlUGFkZGluZyAqIDIpXG4gIC8vICAgICAuYXR0cigneTEnLCBub2RlSGVpZ2h0IC8gMilcbiAgLy8gICAgIC5hdHRyKCd4MicsIChub2RlV2lkdGggKiA1KSAvIDcgLSBub2RlUGFkZGluZylcbiAgLy8gICAgIC5hdHRyKCd5MicsIG5vZGVIZWlnaHQgLyAyKVxuICAvLyAgICAgLmF0dHIoJ29wYWNpdHknLCAoZCkgPT4gKGQuX2dyb3VwT3BlbiA/IDAgOiBkLl9ncmV5ZWQgPyBncmV5ZWRPcGFjaXR5IDogMSkpO1xuICAvLyB9KTtcblxuICBjb25zdCBzZXRHcm91cEJ1dHRvblhZID0gKHNlbCkgPT5cbiAgICBzZWxcbiAgICAgIC5hdHRyKCd3aWR0aCcsIChub2RlV2lkdGggKiAyKSAvIDcpXG4gICAgICAuYXR0cignaGVpZ2h0JywgKGQpID0+IChkLl9ncm91cE9wZW4gPyBsaW5lSGVpZ2h0ICsgbm9kZVBhZGRpbmcgKiAyIDogbm9kZVBhZGRpbmcgKiAyICsgbGluZUhlaWdodCkpXG4gICAgICAuYXR0cigneCcsIChkKSA9PiAoZC5fZ3JvdXBPcGVuID8gKG5vZGVXaWR0aCAqIDIuNSkgLyA3IDogKG5vZGVXaWR0aCAqIDUpIC8gNyAtIG5vZGVQYWRkaW5nKSlcbiAgICAgIC5hdHRyKCd5JywgKGQpID0+XG4gICAgICAgIGQuX2dyb3VwT3BlblxuICAgICAgICAgID8gZ3JvdXBPdmVybGFwICsgKGdyb3VwTm9kZVNwYWNlIC0gKGxpbmVIZWlnaHQgKyBub2RlUGFkZGluZyAqIDIpKSAvIDJcbiAgICAgICAgICA6IG5vZGVQYWRkaW5nICsgbGluZUhlaWdodCAvIDJcbiAgICAgICk7XG5cbiAgZ3JvdXBzXG4gICAgLnNlbGVjdEFsbDxTVkdSZWN0RWxlbWVudCwgQ2hhcnROb2RlPignLmdyb3VwLWJ1dHRvbicpXG4gICAgLmNhbGwoc2V0R3JvdXBCdXR0b25YWSlcbiAgICAuc3R5bGUoJ3BvaW50ZXItZXZlbnRzJywgKGQpID0+IChkLl9ncmV5ZWQgPyAnbm9uZScgOiAnYXV0bycpKVxuICAgIC5zdHlsZSgnc3Ryb2tlLW9wYWNpdHknLCAoZCkgPT4gKGQuX2dyZXllZCA/IGdyZXllZE9wYWNpdHkgOiAxKSk7XG5cbiAgZ3JvdXBzXG4gICAgLnNlbGVjdEFsbDxTVkdUZXh0RWxlbWVudCwgQ2hhcnROb2RlPignLmdyb3VwLWJ1dHRvbi10ZXh0JylcbiAgICAudGV4dCgoZCkgPT4gKGQuX2dyb3VwT3BlbiA/ICdIaWRlJyA6ICdTaG93JykpXG4gICAgLmF0dHIoJ3gnLCAoZCkgPT4gKGQuX2dyb3VwT3BlbiA/IG5vZGVXaWR0aCAvIDIgOiAobm9kZVdpZHRoICogNikgLyA3IC0gbm9kZVBhZGRpbmcpKVxuICAgIC5hdHRyKCd5JywgKGQpID0+IChkLl9ncm91cE9wZW4gPyBub2RlTWFyZ2luICsgbGluZUhlaWdodCArIGxpbmVIZWlnaHQgLyAyIDogbm9kZUhlaWdodCAvIDIpKVxuICAgIC5hdHRyKCdmb250LXNpemUnLCAoZCkgPT4gYCR7Zm9udFNpemUgKiAxLjN9cHhgKTtcblxuICBzZWxlY3Rpb24uc2VsZWN0QWxsKCcuc2libGluZy1tYXNrJykucmVtb3ZlKCk7XG5cbiAgc2VsZWN0aW9uXG4gICAgLmZpbHRlcigoZCkgPT4gZC5fZ3JleWVkICYmICFkLmRhdGEuZ3JvdXApXG4gICAgLmFwcGVuZCgncmVjdCcpXG4gICAgLmNsYXNzZWQoJ25vZGUtb3BlbmFibGUnLCAoZCkgPT4gISFkLmhlaWdodClcbiAgICAuY2xhc3NlZCgnc2libGluZy1tYXNrIG1hc2stb3BlbmFibGUnLCB0cnVlKVxuICAgIC5jYWxsKHNldE5vZGVTaXplKTtcblxuICBzZWxlY3Rpb25cbiAgICAuZmlsdGVyKChkKSA9PiBkLl9ncmV5ZWQgJiYgZC5kYXRhLmdyb3VwKVxuICAgIC5hcHBlbmQoJ3JlY3QnKVxuICAgIC5jbGFzc2VkKCdzaWJsaW5nLW1hc2snLCB0cnVlKVxuICAgIC5jYWxsKHNldEdyb3VwQnV0dG9uWFkpO1xuXG4gIHJldHVybiBzZWxlY3Rpb247XG59O1xuXG5jb25zdCBlbnRlck5vZGVzID0gKHNlbGVjdGlvbjogTm9kZVNlbGVjdGlvbikgPT4ge1xuICBjb25zdCBub2RlcyA9IHNlbGVjdGlvbi5maWx0ZXIoKGQpID0+IGQuZGF0YS50eXBlICE9PSBDaGFydE5vZGVUeXBlLnJvb3QgJiYgIWQuZGF0YS5ncm91cCk7XG5cbiAgbm9kZXMuYXBwZW5kKCdyZWN0JykuY2xhc3NlZCgnbm9kZS1ib3gnLCB0cnVlKTtcblxuICBub2Rlc1xuICAgIC5hcHBlbmQoJ3RleHQnKVxuICAgIC5jbGFzc2VkKCdub2RlLWxhYmVsJywgdHJ1ZSlcbiAgICAudGV4dCgoeyBkYXRhIH0pID0+IGRhdGEubGFiZWwgKyAnICcgKyBkYXRhLnVuaXRzKVxuICAgIC5hdHRyKCdvcGFjaXR5JywgMCk7XG5cbiAgLy8gVGV4dCBlbGVtZW50cyBtdXN0IGJlIHJlbmRlcmVkIGJlZm9yZSB3ZSBjYW4gY2FsY3VsYXRlIHdyYXBwaW5nXG4gIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGNvbnN0IGxhYmVscyA9IG5vZGVzLnNlbGVjdEFsbDxTVkdUZXh0RWxlbWVudCwgQ2hhcnROb2RlPignLm5vZGUtbGFiZWwnKS5jYWxsKHdyYXApO1xuICAgIGxhYmVscy5hdHRyKCdvcGFjaXR5JywgMSk7XG4gIH0pO1xuXG4gIGNvbnN0IGdyb3VwcyA9IHNlbGVjdGlvbi5maWx0ZXIoKGQpID0+IGQuZGF0YS5ncm91cCk7XG5cbiAgZ3JvdXBzLmFwcGVuZCgncmVjdCcpLmF0dHIoJ2NsYXNzJywgJ2dyb3VwLWJvcmRlcicpO1xuICBncm91cHMuYXBwZW5kKCd0ZXh0JykuYXR0cignY2xhc3MnLCAnZ3JvdXAtbGFiZWwnKTtcbiAgLy8gZ3JvdXBzLmFwcGVuZCgnbGluZScpLmF0dHIoJ2NsYXNzJywgJ2dyb3VwLWxpbmUnKTtcbiAgZ3JvdXBzLmFwcGVuZCgncmVjdCcpLmF0dHIoJ2NsYXNzJywgJ2dyb3VwLWJ1dHRvbicpO1xuICBncm91cHMuYXBwZW5kKCd0ZXh0JykuYXR0cignY2xhc3MnLCAnZ3JvdXAtYnV0dG9uLXRleHQnKTtcblxuICBjb25zdCB3aXRoQmFyID0gbm9kZXMuZmlsdGVyKChkKSA9PiBkLmRhdGEuc2hvd0Jhcik7XG5cbiAgd2l0aEJhclxuICAgIC5maWx0ZXIoKGQpID0+IGQuZGF0YS5mcmFjdGlvbiA+IDApXG4gICAgLmFwcGVuZCgncmVjdCcpXG4gICAgLmNsYXNzZWQoJ2Jhci1iYWNrZ3JvdW5kJywgdHJ1ZSlcbiAgICAuYXR0cignd2lkdGgnLCBub2RlQ29udGVudFdpZHRoKVxuICAgIC5jYWxsKGZvcm1hdEJhcik7XG5cbiAgd2l0aEJhclxuICAgIC5hcHBlbmQoJ3JlY3QnKVxuICAgIC5jbGFzc2VkKCdiYXItZm9yZWdyb3VuZCcsIHRydWUpXG4gICAgLmNhbGwoZm9ybWF0QmFyKVxuICAgIC5hdHRyKCd3aWR0aCcsIChkKSA9PiBkLmRhdGEuZnJhY3Rpb24gKiBub2RlQ29udGVudFdpZHRoKVxuICAgIC5hdHRyKCdmaWxsJywgKGQpID0+IG5vZGVDb2xvdXJzW2QuZGF0YS50eXBlXSk7XG5cbiAgd2l0aEJhclxuICAgIC5hcHBlbmQoJ3RleHQnKVxuICAgIC5jbGFzc2VkKCdiYXItbGFiZWwnLCB0cnVlKVxuICAgIC50ZXh0KCh7IGRhdGEgfSkgPT5cbiAgICAgIGRhdGEuZnJhY3Rpb24gPT09IDBcbiAgICAgICAgPyAnbm8gY29udHJpYnV0aW9uJ1xuICAgICAgICA6IGAke01hdGgucm91bmQoMTAwICogZGF0YS5mcmFjdGlvbil9JSAke01hdGgucm91bmQoMTAwICogZGF0YS5mcmFjdGlvbikgPT09IDAgPyAnIChyb3VuZGVkKScgOiAnJ31gXG4gICAgKVxuICAgIC5hdHRyKCd0ZXh0LWFuY2hvcicsIChkKSA9PiAoZC5kYXRhLmZyYWN0aW9uID09PSAwID8gJ21pZGRsZScgOiBkLmRhdGEuZnJhY3Rpb24gPiAwLjcgPyAnZW5kJyA6ICdzdGFydCcpKVxuICAgIC5hdHRyKCd4JywgKGQpID0+XG4gICAgICBkLmRhdGEuZnJhY3Rpb24gPT09IDBcbiAgICAgICAgPyBub2RlV2lkdGggLyAyXG4gICAgICAgIDogZC5kYXRhLmZyYWN0aW9uICogbm9kZUNvbnRlbnRXaWR0aCArIG5vZGVQYWRkaW5nICsgKGQuZGF0YS5mcmFjdGlvbiA+IDAuNyA/IC00IDogNClcbiAgICApXG4gICAgLmF0dHIoJ3knLCBub2RlSGVpZ2h0IC0gbm9kZVBhZGRpbmcgLSBiYXJIZWlnaHQgLyAyKTtcblxuICByZXR1cm4gc2VsZWN0aW9uO1xufTtcblxuY29uc3QgbWVyZ2VkTGlua3MgPSAoc2VsZWN0aW9uOiBMaW5rU2VsZWN0aW9uLCB7IHRvZ2dsaW5nR3JvdXAsIHN3aXRjaGluZ1NlbGVjdGlvbiB9KSA9PlxuICBzZWxlY3Rpb25cbiAgICAuc3R5bGUoJ3N0cm9rZScsIChkKSA9PiB7XG4gICAgICBjb25zdCBjb2xvdXJzID0ge1xuICAgICAgICBbQ2hhcnROb2RlVHlwZS5taWRwb2ludF06IG5vZGVDb2xvdXJzW0NoYXJ0Tm9kZVR5cGUubWlkcG9pbnRdLFxuICAgICAgICBbQ2hhcnROb2RlVHlwZS5lbmRwb2ludF06IG5vZGVDb2xvdXJzW0NoYXJ0Tm9kZVR5cGUuZW5kcG9pbnRdLFxuICAgICAgICBbQ2hhcnROb2RlVHlwZS5lbWlzc2lvbl06IG5vZGVDb2xvdXJzW0NoYXJ0Tm9kZVR5cGUuZW1pc3Npb25dXG4gICAgICB9O1xuICAgICAgcmV0dXJuIChkLnRhcmdldC5fb3BlbiAmJiBjb2xvdXJzW2Quc291cmNlLmRhdGEudHlwZV0pIHx8IG51bGw7XG4gICAgfSlcbiAgICAuYXR0cignc3Ryb2tlLWRhc2hhcnJheScsIChkKSA9PiAoZC50YXJnZXQuZGF0YS5ncm91cCA/ICcyLDUnIDogbnVsbCkpXG4gICAgLmF0dHIoJ3N0cm9rZS13aWR0aCcsIChkKSA9PiAoZC50YXJnZXQuX29wZW4gPyAzIDogZC50YXJnZXQuX2dyb3VwT3BlbiA/IDAgOiAyKSlcbiAgICAuYXR0cignc3Ryb2tlLW9wYWNpdHknLCAoZCkgPT4gKGQudGFyZ2V0Ll9ncmV5ZWQgPyAwLjEgOiAwLjYpKVxuICAgIC50cmFuc2l0aW9uKClcbiAgICAuZHVyYXRpb24obGlua0R1cmF0aW9uKVxuICAgIC5kZWxheSgoZCkgPT4ge1xuICAgICAgY29uc3QgZ3JvdXBDbG9zaW5nID0gdG9nZ2xpbmdHcm91cCAmJiAhZC50YXJnZXQucGFyZW50Py5jaGlsZHJlbj8uZmluZCgobikgPT4gbi5kYXRhLmdyb3VwKT8uX2dyb3VwT3BlbjtcbiAgICAgIHJldHVybiBncm91cENsb3NpbmdcbiAgICAgICAgPyBncm91cERlbGF5XG4gICAgICAgIDogKHN3aXRjaGluZ1NlbGVjdGlvbiA/IG5vZGVEdXJhdGlvbiA6IDApICsgZC5zb3VyY2UuY2hpbGRyZW4/LmluZGV4T2YoZC50YXJnZXQpICogMTA7XG4gICAgfSlcbiAgICAuYXR0cignb3BhY2l0eScsIDEpXG4gICAgLmF0dHIoJ2QnLCAoZCkgPT4ge1xuICAgICAgY29uc3QgdGFyZ2V0RHkgPSBkLnRhcmdldC5fZ3JvdXBPcGVuID8gbm9kZVBhZGRpbmcgKyBsaW5lSGVpZ2h0IC8gMiArIG5vZGVNYXJnaW4gKiAyIDogbm9kZUhlaWdodCAvIDI7XG4gICAgICByZXR1cm4gZDNMaW5rSG9yaXpvbnRhbCgpKHtcbiAgICAgICAgc291cmNlOiBbZC5zb3VyY2UueSArIG5vZGVXaWR0aCwgZC5zb3VyY2UueCArIG5vZGVIZWlnaHQgLyAyXSxcbiAgICAgICAgdGFyZ2V0OiBbZC50YXJnZXQueSwgZC50YXJnZXQueCArIHRhcmdldER5XVxuICAgICAgfSk7XG4gICAgfSk7XG5cbmNvbnN0IGdyb3VwQnlQZXJjZW50YWdlID0gKG5vZGUpID0+XG4gIFtDaGFydE5vZGVUeXBlLmVuZHBvaW50LCBDaGFydE5vZGVUeXBlLm1pZHBvaW50LCBDaGFydE5vZGVUeXBlLmVtaXNzaW9uXS5pbmNsdWRlcyhub2RlLmRhdGEudHlwZSk7XG5cbmNvbnN0IGdyb3VwUGVyY2VudGFnZSA9IChub2RlLCBwZXJjZW50YWdlID0gMC4wMikgPT4ge1xuICBjb25zdCBncm91cGVkID0gbm9kZS5fY2hpbGRyZW4/LmZpbHRlcigoY2hpbGQpID0+IGNoaWxkLmRhdGEuZnJhY3Rpb24gPCBwZXJjZW50YWdlKTtcbiAgaWYgKG5vZGUuX2NoaWxkcmVuPy5sZW5ndGggPiA2ICYmIGdyb3VwZWQ/Lmxlbmd0aCA+IDEpIHtcbiAgICBjb25zdCB0eXBlID0gbm9kZS5fY2hpbGRyZW5bMF0uZGF0YS50eXBlO1xuICAgIGNvbnN0IGdyb3VwTm9kZSA9IHtcbiAgICAgIC4uLmQzSGllcmFyY2h5KHtcbiAgICAgICAgaWQ6IGAke3R5cGV9LWdyb3VwYCxcbiAgICAgICAgbGFiZWw6IGAke2dyb3VwZWQubGVuZ3RofSBtb3JlIHVuZGVyICR7TWF0aC5yb3VuZChwZXJjZW50YWdlICogMTAwKX0lLmAsXG4gICAgICAgIHdlaWdodGVkVmFsdWU6IG51bGwsXG4gICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICB0eXBlLFxuICAgICAgICBncm91cDogdHJ1ZVxuICAgICAgfSksXG4gICAgICBkZXB0aDogbm9kZS5kZXB0aCArIDEsXG4gICAgICBoZWlnaHQ6IDEsXG4gICAgICBwYXJlbnQ6IG5vZGVcbiAgICB9O1xuICAgIGNvbnN0IG5vdEdyb3VwZWQgPSBub2RlLl9jaGlsZHJlbj8uZmlsdGVyKChjaGlsZCkgPT4gY2hpbGQuZGF0YS5mcmFjdGlvbiA+PSBwZXJjZW50YWdlKTtcbiAgICBub2RlLl9jaGlsZHJlbi5zcGxpY2Uobm90R3JvdXBlZC5sZW5ndGgsIDAsIGdyb3VwTm9kZSk7XG4gICAgbm90R3JvdXBlZC5wdXNoKGdyb3VwTm9kZSk7XG4gICAgbm9kZS5fZ3JvdXBDaGlsZHJlbiA9IG5vZGUuX2NoaWxkcmVuO1xuICAgIG5vZGUuX2NoaWxkcmVuID0gbm90R3JvdXBlZDtcbiAgfVxufTtcblxuY29uc3Qgc2hvd0JhciA9IChub2RlKSA9PlxuICBbXG4gICAgbm9kZS5wYXJlbnQ/LmRhdGEudHlwZSAhPT0gQ2hhcnROb2RlVHlwZS5yb290LFxuICAgIG5vZGUucGFyZW50Py5kYXRhLmlkICE9PSBub25MQ0FJbmRpY2F0b3JzSWQsXG4gICAgIW5vZGUuZGF0YS5ncm91cCxcbiAgICBub2RlLmRhdGEuZnJhY3Rpb24gPj0gMFxuICBdLmV2ZXJ5KEJvb2xlYW4pO1xuXG5jb25zdCBnZXRVbml0c0FuZExhYmVsID0gKHRlcm06IFBhcnRpYWw8SVRlcm1KU09OTEQ+LCBmYWxsYmFja0xhYmVsID0gJ3Vua25vd24gdGVybScpID0+IHtcbiAgY29uc3QgbGFiZWwgPSB0ZXJtPy5uYW1lIHx8IHRlcm0/LlsnQGlkJ10gfHwgZmFsbGJhY2tMYWJlbDtcbiAgY29uc3QgdW5pdHMgPSBgKCR7dGVybT8udW5pdHMgfHwgJ3Vua25vd24gdW5pdHMnfSlgO1xuICByZXR1cm4geyBsYWJlbDogbGFiZWwucmVwbGFjZSh1bml0cywgJycpLnRyaW0oKSwgdGVybTogbGFiZWwsIHVuaXRzIH07XG59O1xuXG5jb25zdCBxdWVyeSA9IChzaG91bGQpID0+ICh7XG4gIGZpZWxkczogWydAdHlwZScsICdAaWQnLCAnbmFtZScsICd1bml0cycsICd0ZXJtVHlwZSddLFxuICBsaW1pdDogMTAwMDAsXG4gIHF1ZXJ5OiB7XG4gICAgYm9vbDoge1xuICAgICAgbXVzdDogW21hdGNoVHlwZShOb2RlVHlwZS5UZXJtKV0sXG4gICAgICBzaG91bGQsXG4gICAgICBtaW5pbXVtX3Nob3VsZF9tYXRjaDogMVxuICAgIH1cbiAgfVxufSk7XG5cbnR5cGUgVGVybSA9IElUZXJtSlNPTkxEICYgSVNlYXJjaFJlc3VsdEV4dGVuZGVkICYgeyBkb2NzPzogc3RyaW5nIH07XG5cbmNvbnN0IGxlZ2VuZCA9IFtcbiAgeyB0eXBlOiBDaGFydE5vZGVUeXBlLmVuZHBvaW50LCBtb2JpbGVUZXh0OiAnRW5kcG9pbnQnLCB0ZXh0OiAnRW5kcG9pbnQgSW5kaWNhdG9yJyB9LFxuICB7IHR5cGU6IENoYXJ0Tm9kZVR5cGUubWlkcG9pbnQsIHRleHQ6ICdDaGFyYWN0ZXJpc2VkIEluZGljYXRvcicsIG1vYmlsZVRleHQ6ICdJbXBhY3QnIH0sXG4gIHsgdHlwZTogQ2hhcnROb2RlVHlwZS5lbWlzc2lvbiwgbW9iaWxlVGV4dDogJ0VtaXNzaW9uJywgdGV4dDogJ0VtaXNzaW9uIG9yIFJlc291cmNlIFVzZScgfSxcbiAgeyB0eXBlOiBDaGFydE5vZGVUeXBlLmlucHV0LCB0ZXh0OiAnSW5wdXQnLCBtb2JpbGVUZXh0OiAnSW5wdXQnIH0sXG4gIHsgdHlwZTogQ2hhcnROb2RlVHlwZS5vcGVyYXRpb24sIHRleHQ6ICdPcGVyYXRpb24nLCBtb2JpbGVUZXh0OiAnT3BlcmF0aW9uJyB9XG5dO1xuXG5jb25zdCB3YXJuaW5ncyA9IChsb2dzOiBJTG9nW10sIHRlcm1zOiB7IFtpZDogc3RyaW5nXTogVGVybSB9KSA9PiBbXG4gICFsb2dzLmV2ZXJ5KGxvZyA9PiB0ZXJtc1tsb2cuaW5kaWNhdG9yXSAmJiB0ZXJtc1tsb2cuY29udHJpYnV0b3JdKSAmJiAnbWlzc2luZy10ZXJtcydcbl0uZmlsdGVyKEJvb2xlYW4pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1pbXBhY3QtYXNzZXNzbWVudHMtZ3JhcGgnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW1wYWN0LWFzc2Vzc21lbnRzLWdyYXBoLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1wYWN0LWFzc2Vzc21lbnRzLWdyYXBoLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSW1wYWN0QXNzZXNzbWVudHNHcmFwaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGluaXRpYWxUZXJtczogeyBbaWQ6IHN0cmluZ106IFRlcm0gfTtcbiAgcHJpdmF0ZSBhbGxUZXJtczogeyBbaWQ6IHN0cmluZ106IFRlcm0gfTtcblxuICBwcml2YXRlIHJvb3Q/OiBITm9kZTtcbiAgcHJpdmF0ZSBub2RlOiBOb2RlU2VsZWN0aW9uO1xuICBwcml2YXRlIGxpbms6IExpbmtTZWxlY3Rpb247XG4gIHByaXZhdGUgc3ZnOiBTZWxlY3Rpb248U1ZHU1ZHRWxlbWVudCwgYW55LCBIVE1MRWxlbWVudCwgdW5rbm93bj47XG4gIHByaXZhdGUgeU1pbjogbnVtYmVyO1xuICBwcml2YXRlIHlUb3RhbDogbnVtYmVyO1xuICBwcml2YXRlIGxvZ3NBbGxNb2RlbHM6IElMb2dbXTtcblxuICBAVmlld0NoaWxkKCdjaGFydCcpXG4gIHByaXZhdGUgY2hhcnRSZWY/OiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ3QnKVxuICBwcml2YXRlIHRvb2x0aXBPcGVyYXRvcj86IE5nYlBvcG92ZXI7XG5cbiAgQElucHV0KClcbiAgcHJpdmF0ZSBpbXBhY3RBc3Nlc3NtZW50czogSUltcGFjdEFzc2Vzc21lbnRKU09OTERbXSA9IFtdO1xuICBASW5wdXQoKVxuICBwcml2YXRlIGRhdGFTdGF0ZSA9IERhdGFTdGF0ZS5yZWNhbGN1bGF0ZWQ7XG5cbiAgcHVibGljIGxvYWRpbmcgPSB0cnVlO1xuICBwdWJsaWMgbm9kZUNvbG91cnMgPSBub2RlQ29sb3VycztcbiAgcHVibGljIG5vRGF0YSA9IGZhbHNlO1xuICBwdWJsaWMgZXJyb3I/OiBhbnk7XG4gIHB1YmxpYyB3YXJuaW5nczogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIHNob3dXYXJuaW5ncyA9IGZhbHNlO1xuICBwdWJsaWMgc2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50SWQ6IHN0cmluZztcbiAgcHVibGljIGZpbHRlcmVkSW1wYWN0QXNzZXNzbWVudHM6IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEW107XG4gIHB1YmxpYyBzZWxlY3RlZE1vZGVsSWQ6IHN0cmluZztcbiAgcHVibGljIG1vZGVsczogUGFydGlhbDxJVGVybUpTT05MRD5bXTtcbiAgcHVibGljIGxlZ2VuZCA9IGxlZ2VuZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogSGVTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgbm9kZVNlcnZpY2U6IEhlTm9kZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbmdpbmVTZXJ2aWNlOiBIZUVuZ2luZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHJldHVybiB0aGlzLmluaXRJbXBhY3RBc3Nlc3NtZW50cygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVsb2FkQ2hhcnQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoJ2ltcGFjdEFzc2Vzc21lbnRzJyBpbiBjaGFuZ2VzKSB7XG4gICAgICB0aGlzLmluaXRJbXBhY3RBc3Nlc3NtZW50cygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZWxvYWRDaGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0SW1wYWN0QXNzZXNzbWVudHMoKSB7XG4gICAgdGhpcy5maWx0ZXJlZEltcGFjdEFzc2Vzc21lbnRzID0gdGhpcy5pbXBhY3RBc3Nlc3NtZW50cy5maWx0ZXIoKGlhKSA9PiBpYS5lbmRwb2ludHM/Lmxlbmd0aCB8fCBpYS5pbXBhY3RzPy5sZW5ndGgpO1xuICAgIHRoaXMuc2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50SWQgPSB0aGlzLnNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudElkIHx8IHRoaXMuZmlsdGVyZWRJbXBhY3RBc3Nlc3NtZW50cz8uWzBdPy5bJ0BpZCddO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkSW5pdGlhbFRlcm1zKCkge1xuICAgIGNvbnN0IHsgcmVzdWx0czogdGVybXMgfSA9IGF3YWl0IHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2g8SVRlcm1KU09OTEQsIE5vZGVUeXBlLlRlcm0+KFxuICAgICAgcXVlcnkoZmlsdGVyVGVybVR5cGVzLm1hcCgodGVybVR5cGUpID0+IG1hdGNoVGVybVR5cGUodGVybVR5cGUpKSlcbiAgICApO1xuICAgIGNvbnN0IGF1Z21lbnRlZFRlcm1zID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB0ZXJtcy5tYXAoYXN5bmMgKHQ6IFRlcm0pID0+IHtcbiAgICAgICAgaWYgKHQudGVybVR5cGUgPT09ICdtb2RlbCcpIHtcbiAgICAgICAgICBjb25zdCBtb2RlbCA9IGF3YWl0IHRoaXMuZW5naW5lU2VydmljZS5tb2RlbCh7IG1vZGVsOiB0WydAaWQnXSB9KTtcbiAgICAgICAgICB0LmRvY3MgPSBtb2RlbD8uYXBpRG9jc1BhdGggfHwgbW9kZWw/LmRvY1BhdGggfHwgbW9kZWw/LnBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5pbml0aWFsVGVybXMgPSBPYmplY3QuZnJvbUVudHJpZXMoYXVnbWVudGVkVGVybXMubWFwKCh0ZXJtKSA9PiBbdGVybVsnQGlkJ10sIHRlcm1dKSk7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbFRlcm1zO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkTG9nVGVybXMobG9nczogSUxvZ1tdKSB7XG4gICAgY29uc3QgaW5wdXRJZHMgPSB1bmlxdWUobG9ncy5mbGF0TWFwKChsKSA9PiBbbC5jb250cmlidXRvciwgbC5pbmRpY2F0b3JdKS5maWx0ZXIoKHRlcm1JZCkgPT4gIXRoaXMuaW5pdGlhbFRlcm1zW3Rlcm1JZF0pKTtcbiAgICBjb25zdCB7IHJlc3VsdHM6IGlucHV0cyB9ID0gYXdhaXQgdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaDxJVGVybUpTT05MRCwgTm9kZVR5cGUuVGVybT4oXG4gICAgICBxdWVyeShpbnB1dElkcy5tYXAoKGlkKSA9PiBtYXRjaEV4YWN0UXVlcnkoJ0BpZCcsIGlkKSkpXG4gICAgKTtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKGlucHV0cy5tYXAoKHRlcm0pID0+IFt0ZXJtWydAaWQnXSwgdGVybV0pKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNSZWNhbGN1bGF0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVN0YXRlID09PSBEYXRhU3RhdGUucmVjYWxjdWxhdGVkO1xuICB9XG5cbiAgcHVibGljIHJlbG9hZENoYXJ0KCkge1xuICAgIGNvbnN0IGltcGFjdEFzc2Vzc21lbnQgPVxuICAgICAgdGhpcy5maWx0ZXJlZEltcGFjdEFzc2Vzc21lbnRzLmZpbmQoKGlhKSA9PiBpYVsnQGlkJ10gPT09IHRoaXMuc2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50SWQpIHx8XG4gICAgICB0aGlzLmZpbHRlcmVkSW1wYWN0QXNzZXNzbWVudHNbMF07XG4gICAgY29uc3QgaW5kaWNhdG9ycyA9IFtcbiAgICAgIC4uLihpbXBhY3RBc3Nlc3NtZW50Py5lbmRwb2ludHMgfHwgW10pLFxuICAgICAgLi4uKGltcGFjdEFzc2Vzc21lbnQ/LmltcGFjdHMgfHwgW10pXG4gICAgXTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gb2YoaW1wYWN0QXNzZXNzbWVudClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4gKHRoaXMubG9hZGluZyA9IHRydWUpKSxcbiAgICAgICAgbWVyZ2VNYXAobm9kZSA9PiAodGhpcy5pbml0aWFsVGVybXMgPyBvZihub2RlKSA6IGZyb20odGhpcy5sb2FkSW5pdGlhbFRlcm1zKCkpLnBpcGUobWFwKCgpID0+IG5vZGUpKSkpLFxuICAgICAgICBtZXJnZU1hcChub2RlID0+XG4gICAgICAgICAgdGhpcy5ub2RlU2VydmljZS5nZXRMb2coe1xuICAgICAgICAgICAgLi4ubm9kZSxcbiAgICAgICAgICAgIGRhdGFTdGF0ZTogRGF0YVN0YXRlLnJlY2FsY3VsYXRlZFxuICAgICAgICAgIH0pXG4gICAgICAgICksXG4gICAgICAgIG1hcCgodmFsdWUpID0+ICh2YWx1ZSA/IHBhcnNlTGluZXModmFsdWUpIDogW10pKSxcbiAgICAgICAgbWVyZ2VBbGwoKSxcbiAgICAgICAgZmlsdGVyKCh7IGRhdGEgfSkgPT4gZGF0YS5sb2dnZXIgPT09ICdoZXN0aWFfZWFydGgubW9kZWxzJyAmJiBkYXRhLmxldmVsID09PSBMZXZlbC5kZWJ1ZyksXG4gICAgICAgIG1hcCgoeyBkYXRhIH0pID0+IHBhcnNlTWVzc2FnZShkYXRhLm1lc3NhZ2UpKSxcbiAgICAgICAgZmlsdGVyKChtZXNzYWdlKSA9PiAnbm9kZScgaW4gbWVzc2FnZSksXG4gICAgICAgIG1hcChwYXJzZUxvZyksXG4gICAgICAgIGZpbHRlcigobG9nKSA9PiBbXG4gICAgICAgICAgISFsb2cuaW5kaWNhdG9yLFxuICAgICAgICAgICEhbG9nLmNvbnRyaWJ1dG9yLFxuICAgICAgICAgICFpc05hTihsb2cud2VpZ2h0ZWRWYWx1ZSksXG4gICAgICAgICAgbG9nLmNvZWZmaWNpZW50ID4gMCxcbiAgICAgICAgICBpbmRpY2F0b3JzLnNvbWUoKGVydSkgPT4gZXJ1LnRlcm1bJ0BpZCddID09PSBsb2cuaW5kaWNhdG9yKVxuICAgICAgICBdLmV2ZXJ5KEJvb2xlYW4pKSxcbiAgICAgICAgZ3JvdXBCeSgobG9nKSA9PiBbbG9nLmluZGljYXRvciwgbG9nLmNvbnRyaWJ1dG9yLCBsb2cubW9kZWxJZF0uam9pbignLycpKSxcbiAgICAgICAgbWVyZ2VNYXAoKGdyb3VwKSA9PiBncm91cC5waXBlKHRvQXJyYXkoKSkpLFxuICAgICAgICBtYXAoKHZhbHVlczogSUxvZ1tdKSA9PiB7XG4gICAgICAgICAgY29uc3QgbG9nID0gdmFsdWVzWzBdO1xuICAgICAgICAgIGNvbnN0IHsgd2VpZ2h0ZWRUb3RhbCwgdG90YWwgfSA9IHZhbHVlcy5yZWR1Y2UoXG4gICAgICAgICAgICAocHJldiwgY3VycikgPT4gKHtcbiAgICAgICAgICAgICAgd2VpZ2h0ZWRUb3RhbDogcHJldi53ZWlnaHRlZFRvdGFsICsgY3Vyci53ZWlnaHRlZFZhbHVlLFxuICAgICAgICAgICAgICB0b3RhbDogcHJldi50b3RhbCArIGN1cnIudmFsdWVcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgeyB3ZWlnaHRlZFRvdGFsOiAwLCB0b3RhbDogMCB9XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IGlucHV0c09iaiA9IChpbXBhY3RBc3Nlc3NtZW50LmVtaXNzaW9uc1Jlc291cmNlVXNlIHx8IFtdKVxuICAgICAgICAgICAgLmZpbHRlcigoZXJ1KSA9PiBlcnUudGVybVsnQGlkJ10gPT09IGxvZy5jb250cmlidXRvciAmJiBlcnUuaW5wdXRzPy5sZW5ndGgpXG4gICAgICAgICAgICAucmVkdWNlKChhY2MsIGVydSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBpbnB1dElkID0gZXJ1LmlucHV0cy5tYXAoKGkpID0+IGlbJ0BpZCddKS5qb2luKCc7Jyk7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRPcGVyYXRpb25zID0gZXJ1Lm9wZXJhdGlvblxuICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQ6IGVydS5vcGVyYXRpb25bJ0BpZCddLFxuICAgICAgICAgICAgICAgICAgICAgIC4uLmdldFVuaXRzQW5kTGFiZWwoZXJ1Lm9wZXJhdGlvbiksXG4gICAgICAgICAgICAgICAgICAgICAgbW9kZWxJZDogbG9nLm1vZGVsSWQsXG4gICAgICAgICAgICAgICAgICAgICAgd2VpZ2h0ZWRWYWx1ZTogZXJ1LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICA6IFtdO1xuXG4gICAgICAgICAgICAgIGFjY1tpbnB1dElkXSA9IGFjY1tpbnB1dElkXVxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAuLi5hY2NbaW5wdXRJZF0sXG4gICAgICAgICAgICAgICAgICAgIHdlaWdodGVkVmFsdWU6IGFjY1tpbnB1dElkXS53ZWlnaHRlZFZhbHVlICsgZXJ1LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBtb2RlbElkOiBsb2cubW9kZWxJZCxcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uczogWy4uLmFjY1tpbnB1dElkXS5vcGVyYXRpb25zLCAuLi5jdXJyZW50T3BlcmF0aW9uc11cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGlucHV0SWQsXG4gICAgICAgICAgICAgICAgICAgIC4uLmdldFVuaXRzQW5kTGFiZWwoXG4gICAgICAgICAgICAgICAgICAgICAgZXJ1LmlucHV0cy5sZW5ndGggPT09IDEgPyBlcnUuaW5wdXRzWzBdIDogeyBuYW1lOiAnSW5wdXQgZ3JvdXAgKHVuZGVyIGRldmVsb3BtZW50KScgfVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBtb2RlbElkOiBsb2cubW9kZWxJZCxcbiAgICAgICAgICAgICAgICAgICAgd2VpZ2h0ZWRWYWx1ZTogZXJ1LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zOiBbLi4uY3VycmVudE9wZXJhdGlvbnNdXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSwge30pO1xuICAgICAgICAgIGNvbnN0IGlucHV0czogSUlucHV0TG9nW10gPSBPYmplY3QudmFsdWVzKGlucHV0c09iaik7XG4gICAgICAgICAgcmV0dXJuIHsgLi4ubG9nLCB3ZWlnaHRlZFZhbHVlOiB3ZWlnaHRlZFRvdGFsLCB2YWx1ZTogdG90YWwsIGlucHV0cyB9IGFzIElMb2c7XG4gICAgICAgIH0pLFxuICAgICAgICB0b0FycmF5KCksXG4gICAgICAgIG1lcmdlTWFwKChsb2dzKSA9PiBmcm9tKHRoaXMubG9hZExvZ1Rlcm1zKGxvZ3MpKS5waXBlKFxuICAgICAgICAgIG1hcChsb2dUZXJtcyA9PiB7XG4gICAgICAgICAgICB0aGlzLmFsbFRlcm1zID0geyAuLi50aGlzLmluaXRpYWxUZXJtcywgLi4ubG9nVGVybXMgfTtcbiAgICAgICAgICAgIHJldHVybiBsb2dzO1xuICAgICAgICAgIH0pXG4gICAgICAgICkpLFxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgdGhpcy5lcnJvciA9IGVycjtcbiAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKCgpID0+ICh0aGlzLmxvYWRpbmcgPSBmYWxzZSkpLFxuICAgICAgICB0YXAoKGxvZ3MpID0+ICh0aGlzLm5vRGF0YSA9ICFsb2dzLmxlbmd0aCkpLFxuICAgICAgICB0YXAoKGxvZ3M6IElMb2dbXSkgPT4ge1xuICAgICAgICAgIHRoaXMud2FybmluZ3MgPSB3YXJuaW5ncyhsb2dzLCB0aGlzLmFsbFRlcm1zKTtcbiAgICAgICAgICB0aGlzLnNob3dXYXJuaW5ncyA9IHRoaXMud2FybmluZ3MubGVuZ3RoID4gMDtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGxvZ3M6IElMb2dbXSkgPT4ge1xuICAgICAgICB0aGlzLnJvb3QgPSBudWxsO1xuICAgICAgICB0aGlzLm5vZGUgPSBudWxsO1xuICAgICAgICB0aGlzLmxpbmsgPSBudWxsO1xuICAgICAgICBjb25zdCBoYXNEZWZhdWx0TW9kZWxMb2dzID0gbG9ncy5zb21lKChsb2cpID0+IGxvZy5tb2RlbElkID09PSBnZXREZWZhdWx0TW9kZWxJZChsb2cuaW5kaWNhdG9yKSk7XG4gICAgICAgIHRoaXMubW9kZWxzID0gW1xuICAgICAgICAgIC4uLihoYXNEZWZhdWx0TW9kZWxMb2dzXG4gICAgICAgICAgICA/IFt7ICdAaWQnOiBkZWZhdWx0SW5kaWNhdG9yc01vZGVsSWQsIG5hbWU6IGRlZmF1bHRJbmRpY2F0b3JzTW9kZWxOYW1lIH1dXG4gICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICAuLi51bmlxdWUobG9ncy5tYXAoKHsgbW9kZWxJZCB9KSA9PiB0aGlzLmFsbFRlcm1zW21vZGVsSWRdIHx8IHsgJ0BpZCc6IG1vZGVsSWQgfSkpXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbElkID0gdGhpcy5tb2RlbHM/LlswXT8uWydAaWQnXTtcbiAgICAgICAgaWYgKGxvZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5sb2dzQWxsTW9kZWxzID0gbG9ncztcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluaXRDaGFydCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0Q2hhcnQoKSB7XG4gICAgY29uc3QgbG9ncyA9IHRoaXMubG9nc0FsbE1vZGVscy5maWx0ZXIoXG4gICAgICAobG9nKSA9PlxuICAgICAgICBsb2cubW9kZWxJZCA9PT1cbiAgICAgICAgKHRoaXMuc2VsZWN0ZWRNb2RlbElkID09PSBkZWZhdWx0SW5kaWNhdG9yc01vZGVsSWQgPyBnZXREZWZhdWx0TW9kZWxJZChsb2cuaW5kaWNhdG9yKSA6IHRoaXMuc2VsZWN0ZWRNb2RlbElkKVxuICAgICk7XG4gICAgY29uc3QgdG90YWxzUGVySW5kaWNhdG9yID0gbG9ncy5yZWR1Y2UoKGFjYywgbG9nKSA9PiB7XG4gICAgICBhY2NbbG9nLmluZGljYXRvcl0gPSAoYWNjW2xvZy5pbmRpY2F0b3JdIHx8IDApICsgbG9nLndlaWdodGVkVmFsdWU7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcbiAgICBjb25zdCBpbmRpY2F0b3JzOiB7IFtpZDogc3RyaW5nXTogTm9kZURhdHVtIH0gPSBsb2dzLnJlZHVjZSgoYWNjLCBsb2cpID0+IHtcbiAgICAgIGNvbnN0IHR5cGVNYXBwaW5nID0ge1xuICAgICAgICBbVGVybVRlcm1UeXBlLmVuZHBvaW50SW5kaWNhdG9yXTogQ2hhcnROb2RlVHlwZS5lbmRwb2ludCxcbiAgICAgICAgW1Rlcm1UZXJtVHlwZS5jaGFyYWN0ZXJpc2VkSW5kaWNhdG9yXTogQ2hhcnROb2RlVHlwZS5taWRwb2ludCxcbiAgICAgICAgW1Rlcm1UZXJtVHlwZS5lbWlzc2lvbl06IENoYXJ0Tm9kZVR5cGUuZW1pc3Npb24sXG4gICAgICAgIFtUZXJtVGVybVR5cGUucmVzb3VyY2VVc2VdOiBDaGFydE5vZGVUeXBlLmVtaXNzaW9uLFxuICAgICAgICBbVGVybVRlcm1UeXBlLm9wZXJhdGlvbl06IENoYXJ0Tm9kZVR5cGUub3BlcmF0aW9uXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjb250cmlidXRvclR5cGUgPSB0eXBlTWFwcGluZ1t0aGlzLmFsbFRlcm1zW2xvZy5jb250cmlidXRvcl0/LnRlcm1UeXBlXSB8fCBDaGFydE5vZGVUeXBlLmlucHV0O1xuICAgICAgY29uc3QgaW5kaWNhdG9yVHlwZSA9IHR5cGVNYXBwaW5nW3RoaXMuYWxsVGVybXNbbG9nLmluZGljYXRvcl0/LnRlcm1UeXBlXTtcbiAgICAgIGNvbnN0IGNvbnRyaWJ1dG9yTm9kZSA9IHtcbiAgICAgICAgaWQ6IGxvZy5jb250cmlidXRvcixcbiAgICAgICAgLi4uZ2V0VW5pdHNBbmRMYWJlbCh0aGlzLmFsbFRlcm1zW2xvZy5jb250cmlidXRvcl0sIGxvZy5jb250cmlidXRvciksXG4gICAgICAgIHR5cGU6IGNvbnRyaWJ1dG9yVHlwZSxcbiAgICAgICAgdmFsdWU6IGxvZy52YWx1ZSxcbiAgICAgICAgd2VpZ2h0ZWRWYWx1ZTogbG9nLndlaWdodGVkVmFsdWUsXG4gICAgICAgIG1vZGVsSWQ6IGxvZy5tb2RlbElkLFxuICAgICAgICBmcmFjdGlvbjogbG9nLndlaWdodGVkVmFsdWUgLyB0b3RhbHNQZXJJbmRpY2F0b3JbbG9nLmluZGljYXRvcl0sXG4gICAgICAgIGNoaWxkcmVuOlxuICAgICAgICAgIGNvbnRyaWJ1dG9yVHlwZSA9PT0gQ2hhcnROb2RlVHlwZS5lbWlzc2lvblxuICAgICAgICAgICAgPyBsb2cuaW5wdXRzLm1hcCgoaSkgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5pLFxuICAgICAgICAgICAgICAgIHR5cGU6IENoYXJ0Tm9kZVR5cGUuaW5wdXQsXG4gICAgICAgICAgICAgICAgZnJhY3Rpb246IGkud2VpZ2h0ZWRWYWx1ZSAvIGxvZy52YWx1ZSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogaS5vcGVyYXRpb25zLm1hcCgobykgPT4gKHtcbiAgICAgICAgICAgICAgICAgIC4uLm8sXG4gICAgICAgICAgICAgICAgICB0eXBlOiBDaGFydE5vZGVUeXBlLm9wZXJhdGlvbixcbiAgICAgICAgICAgICAgICAgIGZyYWN0aW9uOiBvLndlaWdodGVkVmFsdWUgLyBpLndlaWdodGVkVmFsdWVcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICA6IFtdXG4gICAgICB9O1xuXG4gICAgICBhY2NbbG9nLmluZGljYXRvcl1cbiAgICAgICAgPyBhY2NbbG9nLmluZGljYXRvcl0uY2hpbGRyZW4ucHVzaChjb250cmlidXRvck5vZGUpXG4gICAgICAgIDogKGFjY1tsb2cuaW5kaWNhdG9yXSA9IHtcbiAgICAgICAgICAgIGlkOiBsb2cuaW5kaWNhdG9yLFxuICAgICAgICAgICAgLi4uZ2V0VW5pdHNBbmRMYWJlbCh0aGlzLmFsbFRlcm1zW2xvZy5pbmRpY2F0b3JdLCBsb2cuaW5kaWNhdG9yKSxcbiAgICAgICAgICAgIG1vZGVsSWQ6IGxvZy5tb2RlbElkLFxuICAgICAgICAgICAgdHlwZTogaW5kaWNhdG9yVHlwZSxcbiAgICAgICAgICAgIHZhbHVlOiB0b3RhbHNQZXJJbmRpY2F0b3JbbG9nLmluZGljYXRvcl0sXG4gICAgICAgICAgICBjaGlsZHJlbjogW2NvbnRyaWJ1dG9yTm9kZV1cbiAgICAgICAgICB9KTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICAgIGNvbnN0IGluZGljYXRvckFycmF5ID0gT2JqZWN0LnZhbHVlcyhpbmRpY2F0b3JzKTtcbiAgICBjb25zdCBsaW5rZWRJbmRpY2F0b3JzID0gaW5kaWNhdG9yQXJyYXlcbiAgICAgIC8vIGxpbmsgZW5kcG9pbnRzIHRvIG1pZHBvaW50cyBhbmQgbWlkcG9pbnRzIHRvIGFueSBjaGlsZCBtaWRwb2ludHNcbiAgICAgIC5tYXAoKGluZGljYXRvcikgPT4gKHtcbiAgICAgICAgLi4uaW5kaWNhdG9yLFxuICAgICAgICBjaGlsZHJlbjogaW5kaWNhdG9yLmNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IHtcbiAgICAgICAgICBjb25zdCBwcmVmaXhSZW1vdmVkID0gaW5kaWNhdG9yLnR5cGUgPT09IENoYXJ0Tm9kZVR5cGUuZW5kcG9pbnQgJiYgY2hpbGQubGFiZWwuc3BsaXQoJywgJylbMV07XG4gICAgICAgICAgcmV0dXJuIGNoaWxkLnR5cGUgPT09IENoYXJ0Tm9kZVR5cGUubWlkcG9pbnRcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBwcmVmaXhSZW1vdmVkXG4gICAgICAgICAgICAgICAgICA/ICdbLi4uXScgKyBwcmVmaXhSZW1vdmVkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcHJlZml4UmVtb3ZlZC5zbGljZSgxKVxuICAgICAgICAgICAgICAgICAgOiBjaGlsZC5sYWJlbCxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogaW5kaWNhdG9yc1tjaGlsZC5pZF0/LmNoaWxkcmVuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogY2hpbGQ7XG4gICAgICAgIH0pXG4gICAgICB9KSlcbiAgICAgIC8vIHJlbW92ZSBkdXBsaWNhdGVkIGluZGljYXRvcnNcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChpbmRpY2F0b3IpID0+ICFpbmRpY2F0b3JBcnJheS5zb21lKChwYXJlbnQpID0+IHBhcmVudC5jaGlsZHJlbi5zb21lKChjaGlsZCkgPT4gY2hpbGQuaWQgPT09IGluZGljYXRvci5pZCkpXG4gICAgICApO1xuXG4gICAgY29uc3QgZW5kcG9pbnRzID0gbGlua2VkSW5kaWNhdG9ycy5maWx0ZXIoKGluZGljYXRvcikgPT4gaW5kaWNhdG9yLnR5cGUgPT09IENoYXJ0Tm9kZVR5cGUuZW5kcG9pbnQpO1xuICAgIGNvbnN0IG5vbkxDQUluZGljYXRvcnMgPSBsaW5rZWRJbmRpY2F0b3JzLmZpbHRlcigoaW5kaWNhdG9yKSA9PiBpbmRpY2F0b3IudHlwZSA9PT0gQ2hhcnROb2RlVHlwZS5taWRwb2ludCk7XG5cbiAgICBlbmRwb2ludHMubGVuZ3RoICYmXG4gICAgICBub25MQ0FJbmRpY2F0b3JzLmxlbmd0aCAmJlxuICAgICAgZW5kcG9pbnRzLnB1c2goe1xuICAgICAgICBpZDogbm9uTENBSW5kaWNhdG9yc0lkLFxuICAgICAgICBsYWJlbDogJ090aGVyIGluZGljYXRvcnMnLFxuICAgICAgICB0ZXJtOiAnbi9hJyxcbiAgICAgICAgbW9kZWxJZDogJ24vYScsXG4gICAgICAgIHVuaXRzOiAnJyxcbiAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgIHdlaWdodGVkVmFsdWU6IG51bGwsXG4gICAgICAgIHR5cGU6IENoYXJ0Tm9kZVR5cGUuZW5kcG9pbnQsXG4gICAgICAgIGZyYWN0aW9uOiBudWxsLFxuICAgICAgICBjaGlsZHJlbjogbm9uTENBSW5kaWNhdG9yc1xuICAgICAgfSk7XG5cbiAgICBjb25zdCByb290ID0gZDNIaWVyYXJjaHk8Tm9kZURhdHVtPih7XG4gICAgICBpZDogJ2R1bW15LXJvb3QnLFxuICAgICAgbGFiZWw6ICcnLFxuICAgICAgdGVybTogJycsXG4gICAgICBtb2RlbElkOiAnJyxcbiAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgd2VpZ2h0ZWRWYWx1ZTogbnVsbCxcbiAgICAgIHVuaXRzOiAnJyxcbiAgICAgIHR5cGU6IENoYXJ0Tm9kZVR5cGUucm9vdCxcbiAgICAgIGNoaWxkcmVuOiBlbmRwb2ludHMubGVuZ3RoID8gZW5kcG9pbnRzIDogbGlua2VkSW5kaWNhdG9yc1xuICAgIH0pO1xuXG4gICAgY29uc3QgaW5jbHVkZWRUeXBlcyA9IHVuaXF1ZShyb290LmRlc2NlbmRhbnRzKCkubWFwKChuKSA9PiBuLmRhdGEudHlwZSkpO1xuICAgIHRoaXMubGVnZW5kID0gbGVnZW5kLmZpbHRlcigoeyB0eXBlIH0pID0+IGluY2x1ZGVkVHlwZXMuaW5jbHVkZXModHlwZSkpO1xuXG4gICAgdGhpcy5yb290ID0gcm9vdFxuICAgICAgLnNvcnQoKGEsIGIpID0+IGIuZGF0YS5mcmFjdGlvbiAtIGEuZGF0YS5mcmFjdGlvbilcbiAgICAgIC5lYWNoQWZ0ZXIoKG5vZGUpID0+IHtcbiAgICAgICAgaWYgKG5vZGUuZGF0YS5mcmFjdGlvbiA9PT0gMCkge1xuICAgICAgICAgIG5vZGUuY2hpbGRyZW4gPSBudWxsO1xuICAgICAgICAgIChub2RlLmhlaWdodCBhcyBudW1iZXIpID0gMDtcbiAgICAgICAgfVxuICAgICAgICBub2RlLmRhdGEudHlwZSAhPT0gQ2hhcnROb2RlVHlwZS5yb290ICYmIGNvbGxhcHNlQ2hpbGRyZW4obm9kZSk7XG4gICAgICAgIGdyb3VwQnlQZXJjZW50YWdlKG5vZGUpICYmIGdyb3VwUGVyY2VudGFnZShub2RlKTtcbiAgICAgICAgbm9kZS5kYXRhLnNob3dCYXIgPSBzaG93QmFyKG5vZGUpO1xuICAgICAgICBub2RlLmRhdGEubW9kZWxOYW1lID0gdGhpcy5hbGxUZXJtc1tub2RlLmRhdGEubW9kZWxJZF0/Lm5hbWU7XG4gICAgICAgIG5vZGUuZGF0YS5tb2RlbERvY3MgPSB0aGlzLmFsbFRlcm1zW25vZGUuZGF0YS5tb2RlbElkXT8uZG9jcztcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5yZW5kZXJDaGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJDaGFydCgpIHtcbiAgICB0aGlzLnN2ZyA9IGQzU2VsZWN0KHRoaXMuY2hhcnRSZWY/Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuc3ZnLnNlbGVjdEFsbCgnKicpLnJlbW92ZSgpO1xuICAgIC8vIHJvb3Qgbm9kZSBpcyBhbHdheXMgcG9zaXRpb25lZCBhdCDin6gwLCAw4p+pXG4gICAgY29uc3QgaW5uZXJIZWlnaHQgPSAodGhpcy5yb290LmNoaWxkcmVuLmxlbmd0aCAtIDEpICogbm9kZUhlaWdodCAqIG5vZGVTcGFjaW5nRmFjdG9yICsgbm9kZUhlaWdodDtcbiAgICB0aGlzLnlNaW4gPSAobm9kZUhlaWdodCAtIGlubmVySGVpZ2h0KSAvIDIgLSBtYXJnaW4udG9wO1xuICAgIHRoaXMueVRvdGFsID0gaW5uZXJIZWlnaHQgKyBtYXJnaW4udG9wICsgbWFyZ2luLmJvdHRvbTtcbiAgICB0aGlzLnN2Z1xuICAgICAgLmF0dHIoJ3ZpZXdCb3gnLCBbLW1hcmdpbi5sZWZ0LCB0aGlzLnlNaW4sIHdpZHRoLCB0aGlzLnlUb3RhbF0uam9pbignICcpKVxuICAgICAgLmF0dHIoJ2ZvbnQtc2l6ZScsIGAke2ZvbnRTaXplfXB4YCk7XG5cbiAgICB0aGlzLm5vZGUgPSB0aGlzLnN2Zy5hcHBlbmQoJ2cnKS5zZWxlY3RBbGwoJ2cnKTtcbiAgICB0aGlzLmxpbmsgPSB0aGlzLnN2Zy5hcHBlbmQoJ2cnKS5zZWxlY3RBbGwoJ3BhdGgnKTtcblxuICAgIHRoaXMuaGFuZGxlTm9kZUNsaWNrKFxuICAgICAgbnVsbCxcbiAgICAgIHRoaXMucm9vdC5maW5kKChub2RlKSA9PiBub2RlLmRlcHRoID09PSAxKVxuICAgICk7XG4gIH1cblxuICAvLyBmbGlwIHgveSB0byBnbyBsZWZ0LXJpZ2h0IGluc3RlYWQgb2YgdG9wLWJvdHRvbVxuICBwcml2YXRlIHVwZGF0ZUNoYXJ0KHsgdG9nZ2xpbmdHcm91cCA9IGZhbHNlLCBzd2l0Y2hpbmdTZWxlY3Rpb24gPSBmYWxzZSB9ID0ge30pIHtcbiAgICBjb25zdCByb290ID0gdGhpcy5yb290O1xuICAgIGNvbnN0IHRyZWVMYXlvdXQgPSBkM1RyZWU8Tm9kZURhdHVtPigpXG4gICAgICAubm9kZVNpemUoW25vZGVIZWlnaHQsIG5vZGVXaWR0aF0pXG4gICAgICAuc2VwYXJhdGlvbigoLi4ubmVpZ2hib3VyczogQ2hhcnROb2RlW10pID0+XG4gICAgICAgIG5laWdoYm91cnMuc29tZSgobikgPT4gbi5kYXRhLmdyb3VwICYmIG4uX2dyb3VwT3BlbikgPyAxIC0gZ3JvdXBPdmVybGFwIC8gbm9kZUhlaWdodCA6IG5vZGVTcGFjaW5nRmFjdG9yXG4gICAgICApO1xuICAgIGNvbnN0IHRyZWU6IENoYXJ0Tm9kZSA9IHRyZWVMYXlvdXQocm9vdCk7XG4gICAgY29uc3QgbGlua3M6IExpbmtbXSA9IHRyZWUubGlua3MoKS5maWx0ZXIoKGQpID0+IGQuc291cmNlLmRhdGEudHlwZSAhPT0gQ2hhcnROb2RlVHlwZS5yb290KSB8fCBbXTtcbiAgICBjb25zdCBub2RlcyA9IHRyZWUuZGVzY2VuZGFudHMoKS5yZXZlcnNlKCk7XG5cbiAgICBub2Rlcy5mb3JFYWNoKChkKSA9PiB7XG4gICAgICBkLnkgPVxuICAgICAgICAoZC5kZXB0aCAtIDEgKyAoT2JqZWN0LmtleXMoQ2hhcnROb2RlVHlwZSkubGVuZ3RoIC0gMSAtIHRoaXMubGVnZW5kLmxlbmd0aCkgLyAyKSAqIChub2RlV2lkdGggKyBsYXllclNwYWNpbmcpO1xuICAgIH0pO1xuXG4gICAgLy8gQnkgZGVmYXVsdCB0aGUgdHJlZSBleHBhbmRzIHN5bW1ldHJpY2FsbHkgdXB3YXJkcyBhbmQgZG93bndhcmRzIGZyb20gdGhlIHNlbGVjdGVkIG5vZGUuXG4gICAgLy8gV2UgbW92ZSBjaGlsZHJlbiBkb3duIHRvIHByZXZlbnQgZXhwYW5zaW9uIHVwd2FyZHMgb3IgdXAgdG8gbWluaW1pc2UgZXhwYW5zaW9uIGRvd253YXJkc1xuICAgIGNvbnN0IG1pbmltaXNlSGVpZ2h0ID0gKHsgcHJldmlvdXNUYW5zbGF0ZVksIHByZXZpb3VzWVRvdGFsIH0sIGRlcHRoOiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IG1heFlUb3RhbCA9IE1hdGgubWF4KHByZXZpb3VzWVRvdGFsLCB0aGlzLnlUb3RhbCk7XG4gICAgICBjb25zdCBwYXJlbnQgPSB0cmVlLmZpbmQoKG5vZGUpID0+IChub2RlLmRlcHRoID09PSBkZXB0aCAtIDEpICYmIG5vZGUuX29wZW4pO1xuICAgICAgcGFyZW50Py5jaGlsZHJlbj8uZm9yRWFjaCgobm9kZSkgPT4gKG5vZGUueCArPSBwcmV2aW91c1RhbnNsYXRlWSkpO1xuXG4gICAgICBjb25zdCB7IG1pbjogbWluWCwgbWF4OiBtYXhYIH0gPSAocGFyZW50Py5jaGlsZHJlbiB8fCBbXSkucmVkdWNlKFxuICAgICAgICAoeyBtaW4sIG1heCB9LCBuKSA9PiAoe1xuICAgICAgICAgIG1pbjogbi54IDwgbWluID8gbi54IDogbWluLFxuICAgICAgICAgIG1heDogbi54ID4gbWF4ID8gbi54IDogbWF4XG4gICAgICAgIH0pLFxuICAgICAgICB7IG1pbjogcGFyZW50Py54LCBtYXg6IHBhcmVudD8ueCB9XG4gICAgICApO1xuXG4gICAgICBjb25zdCB7IHlNaW4sIHlUb3RhbCB9ID0gcGFyZW50Py5jaGlsZHJlbj8ubGVuZ3RoXG4gICAgICAgID8geyB5TWluOiBtaW5YIC0gbWFyZ2luLnRvcCwgeVRvdGFsOiBtYXhYIC0gbWluWCArIG1hcmdpbi5ib3R0b20gKyBtYXJnaW4udG9wICsgbm9kZUhlaWdodCB9XG4gICAgICAgIDogeyB5TWluOiBudWxsLCB5VG90YWw6IG51bGwgfTtcblxuICAgICAgY29uc3Qgb3ZlcmZsb3dBYm92ZSA9IHRoaXMueU1pbiAtIHlNaW47IC8vIHBvc2l0aXZlIHdoZW4gb3ZlcmZsb3dzIGFib3ZlXG4gICAgICBjb25zdCBvdmVyZmxvd0JlbG93ID0geVRvdGFsICsgeU1pbiAtIChtYXhZVG90YWwgKyB0aGlzLnlNaW4pOyAvLyBwb3NpdGl2ZSB3aGVuIG92ZXJmbG93cyBiZWxvd1xuICAgICAgLy8gLSB0cmFuc2xhdGVZIHdoZW4gb3ZlcmZsb3dzIGFib3ZlOiBwb3NpdGl2ZVxuICAgICAgLy8gLSB0cmFuc2xhdGVZIHdoZW4gb3ZlcmZsb3dzIGJlbG93OiBuZWdhdGl2ZSBieSBzbWFsbGVzdCBvZiB1bmRlcmZsb3cgYWJvdmUgb3Igb3ZlcmZsb3cgYmVsb3dcbiAgICAgIC8vIC0gdHJhbnNsYXRlWSB3aGVuIG5vIG92ZXJmbG93OiAwXG4gICAgICBjb25zdCB0cmFuc2xhdGVZID1cbiAgICAgICAgb3ZlcmZsb3dBYm92ZSA+IDAgPyBvdmVyZmxvd0Fib3ZlIDogb3ZlcmZsb3dCZWxvdyA+IDAgPyBNYXRoLm1heCgtb3ZlcmZsb3dCZWxvdywgb3ZlcmZsb3dBYm92ZSkgOiAwO1xuXG4gICAgICBwYXJlbnQ/LmNoaWxkcmVuPy5mb3JFYWNoKChub2RlKSA9PiAobm9kZS54ICs9IHRyYW5zbGF0ZVkpKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcHJldmlvdXNZVG90YWw6IE1hdGgubWF4KHlUb3RhbCwgcHJldmlvdXNZVG90YWwpLFxuICAgICAgICBwcmV2aW91c1RhbnNsYXRlWTogdHJhbnNsYXRlWSArIHByZXZpb3VzVGFuc2xhdGVZXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCB7IHByZXZpb3VzWVRvdGFsOiBuZXdIZWlnaHQgfSA9IFtcbiAgICAgIDIsIDMsIDQsIDVcbiAgICBdLnJlZHVjZShtaW5pbWlzZUhlaWdodCwge1xuICAgICAgcHJldmlvdXNUYW5zbGF0ZVk6IDAsXG4gICAgICBwcmV2aW91c1lUb3RhbDogdGhpcy55VG90YWxcbiAgICB9KTtcblxuICAgIHRoaXMuc3ZnLnRyYW5zaXRpb24oKS5kdXJhdGlvbigzMDApLmF0dHIoJ3ZpZXdCb3gnLCBbLW1hcmdpbi5sZWZ0LCB0aGlzLnlNaW4sIHdpZHRoLCBuZXdIZWlnaHRdLmpvaW4oJyAnKSk7XG5cbiAgICB0aGlzLm5vZGUgPSB0aGlzLm5vZGVcbiAgICAgIC5kYXRhKFxuICAgICAgICBub2RlcyxcbiAgICAgICAgKGQpID0+IGAke2QucGFyZW50Py5wYXJlbnQ/LnBhcmVudD8uZGF0YS5pZH0tJHtkLnBhcmVudD8ucGFyZW50Py5kYXRhLmlkfS0ke2QucGFyZW50Py5kYXRhLmlkfS0ke2QuZGF0YS5pZH1gXG4gICAgICApXG4gICAgICAuam9pbihcbiAgICAgICAgKGVudGVyKSA9PlxuICAgICAgICAgIGVudGVyXG4gICAgICAgICAgICAuYXBwZW5kKCdnJylcbiAgICAgICAgICAgIC5jYWxsKGVudGVyTm9kZXMpXG4gICAgICAgICAgICAuYXR0cignb3BhY2l0eScsIDApXG4gICAgICAgICAgICAuYXR0cigndHJhbnNmb3JtJywgKGQpID0+ICd0cmFuc2xhdGUoJyArICh0b2dnbGluZ0dyb3VwID8gZC55IDogZC55IC0gbm9kZVdpZHRoIC8gMikgKyAnLCcgKyBkLnggKyAnKScpLFxuICAgICAgICAodXBkYXRlKSA9PiB1cGRhdGUsXG4gICAgICAgIChleGl0KSA9PiB7XG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMudG9vbHRpcE9wZXJhdG9yLmNsb3NlKGZhbHNlKSk7XG4gICAgICAgICAgcmV0dXJuIGV4aXRcbiAgICAgICAgICAgIC5zdHlsZSgncG9pbnRlci1ldmVudHMnLCAnbm9uZScpXG4gICAgICAgICAgICAudHJhbnNpdGlvbigpXG4gICAgICAgICAgICAuZHVyYXRpb24obm9kZUR1cmF0aW9uIC8gMilcbiAgICAgICAgICAgIC5kZWxheSgoZCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGQucGFyZW50Py5jaGlsZHJlbiB8fCBkLnBhcmVudD8uX2NoaWxkcmVuO1xuICAgICAgICAgICAgICByZXR1cm4gKGNoaWxkcmVuPy5sZW5ndGggLSBjaGlsZHJlbj8uaW5kZXhPZihkKSAtIDEpICogMTA7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmVhc2UoZDNFYXNlRWxhc3RpY0luLmFtcGxpdHVkZSgwLjUpLnBlcmlvZCgxKSlcbiAgICAgICAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCAoZCkgPT4gJ3RyYW5zbGF0ZSgnICsgKHRvZ2dsaW5nR3JvdXAgPyBkLnkgOiBkLnkgLSBub2RlV2lkdGggLyAyKSArICcsJyArIGQueCArICcpJylcbiAgICAgICAgICAgIC5hdHRyKCdvcGFjaXR5JywgMClcbiAgICAgICAgICAgIC5yZW1vdmUoKVxuICAgICAgICAgICAgLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgIC8vIGluIGNhc2UgYSB0b29sdGlwIHdhcyBvcGVuZWQgb24gYSB0cmFuc2l0aW9uaW5nIGVsZW1lbnRcbiAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMudG9vbHRpcE9wZXJhdG9yLmNsb3NlKGZhbHNlKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIHRoaXMubm9kZVxuICAgICAgLmNhbGwobWVyZ2VkTm9kZXMsIHsgdG9vbHRpcE9wZXJhdG9yOiB0aGlzLnRvb2x0aXBPcGVyYXRvciwgem9uZTogdGhpcy5uZ1pvbmUgfSlcbiAgICAgIC50cmFuc2l0aW9uKClcbiAgICAgIC5kZWxheSgoZCkgPT4ge1xuICAgICAgICBjb25zdCBncm91cENsb3NpbmcgPSB0b2dnbGluZ0dyb3VwICYmICFkLnBhcmVudD8uY2hpbGRyZW4/LmZpbmQoKG4pID0+IG4uZGF0YS5ncm91cCk/Ll9ncm91cE9wZW47XG4gICAgICAgIHJldHVybiBncm91cENsb3NpbmcgPyBncm91cERlbGF5IDogKHN3aXRjaGluZ1NlbGVjdGlvbiA/IG5vZGVEdXJhdGlvbiA6IDApICsgZC5wYXJlbnQ/LmNoaWxkcmVuLmluZGV4T2YoZCkgKiAxMDtcbiAgICAgIH0pXG4gICAgICAuZHVyYXRpb24obm9kZUR1cmF0aW9uKVxuICAgICAgLmVhc2UoZDNFYXNlRWxhc3RpY091dC5hbXBsaXR1ZGUoMC41KS5wZXJpb2QoMSkpXG4gICAgICAuYXR0cigndHJhbnNmb3JtJywgKGQpID0+IGB0cmFuc2xhdGUoJHtkLnl9LCR7ZC54fSlgKVxuICAgICAgLmF0dHIoJ29wYWNpdHknLCAxKTtcblxuICAgIHRoaXMubm9kZS5zZWxlY3RBbGwoJy5ub2RlLW9wZW5hYmxlJykub24oJ2NsaWNrJywgdGhpcy5oYW5kbGVOb2RlQ2xpY2suYmluZCh0aGlzKSk7XG4gICAgdGhpcy5ub2RlLnNlbGVjdEFsbCgnLmdyb3VwLWJ1dHRvbicpLm9uKCdjbGljaycsIHRoaXMuaGFuZGxlR3JvdXBCdXR0b25DbGljay5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMubGluayA9IHRoaXMubGlua1xuICAgICAgLmRhdGEoXG4gICAgICAgIGxpbmtzLFxuICAgICAgICAoZCkgPT4gYCR7ZC5zb3VyY2UucGFyZW50Py5wYXJlbnQ/LmRhdGEuaWR9LSR7ZC5zb3VyY2UucGFyZW50Py5kYXRhLmlkfS0ke2Quc291cmNlLmRhdGEuaWR9LSR7ZC50YXJnZXQuZGF0YS5pZH1gXG4gICAgICApXG4gICAgICAuam9pbihcbiAgICAgICAgKGVudGVyKSA9PiBlbnRlci5hcHBlbmQoJ3BhdGgnKS5jbGFzc2VkKCdsaW5rLXBhdGgnLCB0cnVlKS5hdHRyKCdvcGFjaXR5JywgMCksXG4gICAgICAgICh1cGRhdGUpID0+IHVwZGF0ZSxcbiAgICAgICAgKGV4aXQpID0+XG4gICAgICAgICAgZXhpdFxuICAgICAgICAgICAgLnRyYW5zaXRpb24oKVxuICAgICAgICAgICAgLmR1cmF0aW9uKGxpbmtEdXJhdGlvbiAvIDIpXG4gICAgICAgICAgICAuZGVsYXkoKGQpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBkLnNvdXJjZS5wYXJlbnQ/LmNoaWxkcmVuIHx8IGQuc291cmNlLnBhcmVudD8uX2NoaWxkcmVuO1xuICAgICAgICAgICAgICByZXR1cm4gKGNoaWxkcmVuPy5sZW5ndGggLSBjaGlsZHJlbj8uaW5kZXhPZihkLnRhcmdldCkgLSAxKSAqIDEwO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hdHRyKCdvcGFjaXR5JywgMClcbiAgICAgICAgICAgIC5yZW1vdmUoKVxuICAgICAgKVxuICAgICAgLmNhbGwobWVyZ2VkTGlua3MsIHsgdG9nZ2xpbmdHcm91cCwgc3dpdGNoaW5nU2VsZWN0aW9uIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVHcm91cEJ1dHRvbkNsaWNrKF9ldmVudDogYW55LCBkOiBDaGFydE5vZGUpIHtcbiAgICBpZiAoZC5fZ3JleWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGQuX2dyb3VwT3BlbiA9ICFkLl9ncm91cE9wZW47XG4gICAgY29uc3QgY2hpbGRyZW4gPSBkLnBhcmVudC5fZ3JvdXBDaGlsZHJlbjtcbiAgICBkLnBhcmVudC5fZ3JvdXBDaGlsZHJlbiA9IGQucGFyZW50LmNoaWxkcmVuO1xuICAgIGQucGFyZW50LmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgdGhpcy51cGRhdGVDaGFydCh7IHRvZ2dsaW5nR3JvdXA6IHRydWUgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU5vZGVDbGljayhfZXZlbnQ6IGFueSwgZDogQ2hhcnROb2RlIHwgSE5vZGUpOiB2b2lkIHtcbiAgICBkLl9vcGVuID0gIWQuX29wZW47XG4gICAgY29uc3Qgc3dpdGNoaW5nU2VsZWN0aW9uID0gJ19ncmV5ZWQnIGluIGQgJiYgZC5fZ3JleWVkO1xuICAgIGQucGFyZW50LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICBjaGlsZC5fZ3JleWVkID0gZmFsc2U7XG4gICAgICBpZiAoY2hpbGQgIT09IGQpIHtcbiAgICAgICAgY2hpbGQuX29wZW4gPSBmYWxzZTtcbiAgICAgICAgY29sbGFwc2VDaGlsZHJlbihjaGlsZCk7XG4gICAgICAgIGNoaWxkLl9ncmV5ZWQgPSBkLl9vcGVuO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGQuY2hpbGRyZW4gPyBjb2xsYXBzZUNoaWxkcmVuKGQpIDogcmVzdG9yZUNoaWxkcmVuKGQpO1xuICAgIHRoaXMudXBkYXRlQ2hhcnQoeyBzd2l0Y2hpbmdTZWxlY3Rpb24gfSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGluZzsgZWxzZSBsb2FkZXJcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUmVjYWxjdWxhdGVkOyBlbHNlIHNob3dTd2l0Y2hSZWNhbGN1bGF0ZWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9ucyBwdC0yIHB4LTMgbWItMFwiICpuZ0lmPVwiZmlsdGVyZWRJbXBhY3RBc3Nlc3NtZW50cy5sZW5ndGggPiAxXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1zdGF0aWMgaXMtc2Vjb25kYXJ5XCI+U2VsZWN0IGFuIEltcGFjdCBBc3Nlc3NtZW50PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLXNtYWxsIGlzLWZ1bGx3aWR0aCBpcy1zZWNvbmRhcnlcIj5cbiAgICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwic2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50SWRcIiAoY2hhbmdlKT1cInJlbG9hZENoYXJ0KClcIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiPlxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgZmlsdGVyZWRJbXBhY3RBc3Nlc3NtZW50c1wiIFt2YWx1ZV09XCJ2YWx1ZVsnQGlkJ11cIj5cbiAgICAgICAgICAgICAge3sgdmFsdWUubmFtZSB8fCB2YWx1ZVsnQGlkJ10gfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhbm9EYXRhXCIgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zIHB5LTIgcHgtM1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b24gaXMtc21hbGwgaXMtc3RhdGljIGlzLXNlY29uZGFyeVwiPlNlbGVjdCBhIG1vZGVsPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLXNtYWxsIGlzLWZ1bGx3aWR0aCBpcy1zZWNvbmRhcnlcIj5cbiAgICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwic2VsZWN0ZWRNb2RlbElkXCIgKGNoYW5nZSk9XCJpbml0Q2hhcnQoKVwiIFtkaXNhYmxlZF09XCJsb2FkaW5nXCI+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBtb2RlbCBvZiBtb2RlbHNcIiBbdmFsdWVdPVwibW9kZWxbJ0BpZCddXCI+e3sgbW9kZWwubmFtZSB8fCBtb2RlbFsnQGlkJ10gfX08L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbm9EYXRhICYmICFzaG93V2FybmluZ3NcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zIGlzLWNlbnRlcmVkIHB5LTIgaXMtc2l6ZS03IGlzLW1vYmlsZSBpcy1tdWx0aWxpbmVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGVnZW5kSXRlbSBvZiBsZWdlbmRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvdyBweS0wIGlzLWZsZXgtbW9iaWxlIGlzLWZsZXgtZGlyZWN0aW9uLWNvbHVtbiBpcy1hbGlnbi1pdGVtcy1jZW50ZXIgaXMtbGVnZW5kLWl0ZW1cIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwia2V5LWNvbG91ciBpcy1pbmxpbmUtYmxvY2stdGFibGV0IGlzLWFsaWduLW1pZGRsZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwibm9kZUNvbG91cnNbbGVnZW5kSXRlbS50eXBlXVwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImhhcy10ZXh0LWJsYWNrIGlzLWFsaWduLW1pZGRsZSBrZXktbGFiZWwgaXMtcGwtdGFibGV0LTJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpcy1oaWRkZW4tZGVza3RvcFwiPnt7bGVnZW5kSXRlbS5tb2JpbGVUZXh0fX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXMtaGlkZGVuLXRvdWNoXCI+e3tsZWdlbmRJdGVtLnRleHR9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPHAgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiaGFzLXRleHQtZGFuZ2VyIHB5LTNcIj5cbiAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImVycm9yXCI+XG4gICAgICAgIDxwICpuZ1N3aXRjaENhc2U9XCInbm90LWZvdW5kJ1wiPkltcGFjdCBBc3Nlc3NtZW50IG5vdCBmb3VuZDwvcD5cbiAgICAgICAgPGRpdiAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgIDxzcGFuPkFuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWQ6PC9zcGFuPlxuICAgICAgICAgIDxwIGNsYXNzPVwibXQtMVwiPnt7IGVycm9yIH19PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvcD5cblxuICAgIDxkaXYgKm5nSWY9XCJzaG93V2FybmluZ3NcIiBjbGFzcz1cImhhcy10ZXh0LXdhcm5pbmcgcHktMyBoYXMtdGV4dC1jZW50ZXJlZFwiPlxuICAgICAgPHAgY2xhc3M9XCJpcy1tYi0yXCIgKm5nRm9yPVwibGV0IHdhcm5pbmcgb2Ygd2FybmluZ3NcIj5cbiAgICAgICAgPGZhLWljb24gY2xhc3M9XCJwci0yXCIgaWNvbj1cImV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCI+PC9mYS1pY29uPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ3YXJuaW5nXCI+XG4gICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidtaXNzaW5nLXRlcm1zJ1wiPkNhbGN1bGF0aW9ucyBhcmUgbm90IHVwIHRvIGRhdGUuIFNvbWUgdGVybXMgbWF5IG5vdCBkaXNwbGF5IGNvcnJlY3RseS48L3NwYW4+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9wPlxuICAgICAgPHAgY2xhc3M9XCJpcy11bmRlcmxpbmVkIGlzLXNpemUtN1wiPjxhIChjbGljayk9XCJzaG93V2FybmluZ3MgPSBmYWxzZVwiPlZpZXcgY2hhcnQgYW55d2F5LjwvYT48L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwibm9EYXRhXCIgY2xhc3M9XCJweS0zXCI+XG4gICAgICA8cCBjbGFzcz1cImhhcy10ZXh0LWNlbnRlcmVkXCI+Tm8gY2hhcnQgYXZhaWxhYmxlLjwvcD5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPGRpdiBbY2xhc3MuaXMtaGlkZGVuXT1cIiFpc1JlY2FsY3VsYXRlZCB8fCBsb2FkaW5nIHx8IGVycm9yIHx8IG5vRGF0YSB8fCBzaG93V2FybmluZ3NcIiBjbGFzcz1cImNoYXJ0LWNvbnRhaW5lciBpcy1yZWxhdGl2ZSB3LTEwMFwiPlxuICA8c3ZnIGNsYXNzPVwidy0xMDAgaC0xMDBcIiAjY2hhcnQ+PC9zdmc+XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJpcy1oaWRkZW5cIlxuICAgIFtuZ2JQb3BvdmVyXT1cInRpcENvbnRlbnRcIlxuICAgIHRyaWdnZXJzPVwibWFudWFsXCJcbiAgICBwbGFjZW1lbnQ9XCJyaWdodCBsZWZ0IGF1dG9cIlxuICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICN0PVwibmdiUG9wb3ZlclwiXG4gICAgcG9zaXRpb25UYXJnZXQ9XCIudGlwLXRhcmdldFwiXG4gICAgcG9wb3ZlckNsYXNzPVwiaXMtbmFycm93IGRyaXZlci1jaGFydC10b29sdGlwXCJcbiAgICBbYW5pbWF0aW9uXT1cInRydWVcIlxuICA+PC9zcGFuPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGVyPlxuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXIgaGFzLXRleHQtY2VudGVyIG15LTUgcHktNVwiPlxuICAgIDxmYS1pY29uIGljb249XCJzcGlubmVyXCIgW3B1bHNlXT1cInRydWVcIiBzaXplPVwibGdcIj48L2ZhLWljb24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzaG93U3dpdGNoUmVjYWxjdWxhdGVkPlxuICA8cCBjbGFzcz1cImhhcy10ZXh0LWNlbnRlcmVkIHB5LTNcIj5ObyBjaGFydCBhdmFpbGFibGUuIFN3aXRjaCB0byA8Y29kZT5yZWNhbGN1bGF0ZWQ8L2NvZGU+IHZlcnNpb24uPC9wPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0aXBDb250ZW50IGxldC10aXBEYXRhPVwidGlwRGF0YVwiPlxuICA8cCAqbmdJZj1cInRpcERhdGEuaGFzV2VpZ2h0ZWRWYWx1ZVwiPmNvbnRyaWJ1dGlvbjoge3sgdGlwRGF0YS53ZWlnaHRlZFZhbHVlVGV4dCB9fTwvcD5cbiAgPHA+XG4gICAgPGEgY2xhc3M9XCJpcy1kYXJrXCIgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwidGlwRGF0YS52YWx1ZUtleUhyZWZcIj52YWx1ZTwvYT46IHt7IHRpcERhdGEudmFsdWVWYWx1ZVRleHQgfX1cbiAgICA8YSBjbGFzcz1cImlzLWRhcmtcIiAqbmdJZj1cInRpcERhdGEuaGFzVmFsdWVcIiBbaHJlZl09XCJ0aXBEYXRhLm1vZGVsRG9jc0hyZWZcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgIDxzcGFuPkRvY3M8L3NwYW4+XG4gICAgICA8ZmEtaWNvbiBjbGFzcz1cIm1sLTFcIiBpY29uPVwiZXh0ZXJuYWwtbGluay1hbHRcIiBzaXplPVwic21cIj48L2ZhLWljb24+XG4gICAgPC9hPlxuICA8L3A+XG4gIDxwPlxuICAgIDxhIGNsYXNzPVwiaXMtZGFya1wiIHRhcmdldD1cIl9ibGFua1wiIFtocmVmXT1cInRpcERhdGEubW9kZWxLZXlIcmVmXCI+bWV0aG9kTW9kZWw8L2E+OiBcbiAgICA8YSBjbGFzcz1cImlzLWRhcmtcIiB0YXJnZXQ9XCJfYmxhbmtcIiBbaHJlZl09XCJ0aXBEYXRhLm1vZGVsVmFsdWVIcmVmXCI+e3sgdGlwRGF0YS5tb2RlbFZhbHVlIH19PC9hPlxuICA8L3A+XG4gIDxwPlxuICAgIDxhIGNsYXNzPVwiaXMtZGFya1wiIHRhcmdldD1cIl9ibGFua1wiIFtocmVmXT1cInRpcERhdGEudGVybUtleUhyZWZcIj50ZXJtPC9hPjogXG4gICAgPGEgY2xhc3M9XCJpcy1kYXJrXCIgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwidGlwRGF0YS50ZXJtVmFsdWVIcmVmXCI+e3sgdGlwRGF0YS50ZXJtVmFsdWUgfX08L2E+XG4gIDwvcD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
796
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wYWN0LWFzc2Vzc21lbnRzLWdyYXBoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbXBhY3QtYXNzZXNzbWVudHMvaW1wYWN0LWFzc2Vzc21lbnRzLWdyYXBoL2ltcGFjdC1hc3Nlc3NtZW50cy1ncmFwaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zcmMvaW1wYWN0LWFzc2Vzc21lbnRzL2ltcGFjdC1hc3Nlc3NtZW50cy1ncmFwaC9pbXBhY3QtYXNzZXNzbWVudHMtZ3JhcGguY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxTQUFTLEVBRVQsS0FBSyxFQUlOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEcsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLElBQUksZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sSUFBSSxRQUFRLEVBQXVCLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRixPQUFPLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsU0FBUyxJQUFJLFdBQVcsRUFDeEIsSUFBSSxJQUFJLE1BQU0sRUFJZixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsYUFBYSxJQUFJLGVBQWUsRUFBRSxjQUFjLElBQUksZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDL0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBd0MsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUkxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7O0FBRXRGLElBQUssYUFPSjtBQVBELFdBQUssYUFBYTtJQUNoQixzQ0FBcUIsQ0FBQTtJQUNyQixzQ0FBcUIsQ0FBQTtJQUNyQixzQ0FBcUIsQ0FBQTtJQUNyQixnQ0FBZSxDQUFBO0lBQ2Ysd0NBQXVCLENBQUE7SUFDdkIsOEJBQWEsQ0FBQTtBQUNmLENBQUMsRUFQSSxhQUFhLEtBQWIsYUFBYSxRQU9qQjtBQWlFRCxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQVMsRUFBUSxFQUFFLENBQUMsQ0FBQztJQUNyQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVM7SUFDMUQsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJO0lBQ3RCLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXO0lBQzlCLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLFNBQVM7SUFDaEMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXO0lBQzlDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLO0NBQ25CLENBQUMsQ0FBQztBQUVILE1BQU0sZUFBZSxHQUFHO0lBQ3RCLFlBQVksQ0FBQyxXQUFXO0lBQ3hCLFlBQVksQ0FBQyxRQUFRO0lBQ3JCLFlBQVksQ0FBQyxzQkFBc0I7SUFDbkMsWUFBWSxDQUFDLGlCQUFpQjtJQUM5QixZQUFZLENBQUMsS0FBSztDQUNuQixDQUFDO0FBQ0YsTUFBTSxXQUFXLEdBQUc7SUFDbEIsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTTtJQUNoQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLO0lBQy9CLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVE7SUFDbEMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTztJQUM5QixDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRO0NBQ3BDLENBQUM7QUFDRixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUM7QUFDbEIsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDNUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDekMsTUFBTSxXQUFXLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUNqQyxNQUFNLFVBQVUsR0FBRyxRQUFRLEdBQUcsR0FBRyxDQUFDO0FBQ2xDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQztBQUU3QixNQUFNLFVBQVUsR0FBRyxXQUFXLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxVQUFVLEdBQUcsU0FBUyxDQUFDO0FBQ2hFLE1BQU0sU0FBUyxHQUFHLFVBQVUsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3pDLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDckQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUUsTUFBTSxVQUFVLEdBQUcsV0FBVyxHQUFHLElBQUksQ0FBQztBQUN0QyxNQUFNLGlCQUFpQixHQUFHLENBQUMsVUFBVSxHQUFHLFVBQVUsR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUM7QUFDckUsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDO0FBQ3pCLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQztBQUN6QixNQUFNLFVBQVUsR0FBRyxZQUFZLEdBQUcsR0FBRyxDQUFDO0FBQ3RDLE1BQU0sa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7QUFDOUMsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDO0FBQzFCLE1BQU0sd0JBQXdCLEdBQUcsMEJBQTBCLENBQUM7QUFDNUQsTUFBTSwwQkFBMEIsR0FBRyxrQ0FBa0MsQ0FBQztBQUN0RSxNQUFNLFlBQVksR0FBRyxVQUFVLEdBQUcsV0FBVyxHQUFHLFVBQVUsQ0FBQztBQUMzRCxNQUFNLGNBQWMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQztBQUVyRCxNQUFNLGdCQUFnQixHQUFHLENBQUMsSUFBdUIsRUFBRSxFQUFFO0lBQ25ELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ2pELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUF1QixFQUFFLEVBQUU7SUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxJQUFJLEdBQUcsQ0FBQyxTQUF5RCxFQUFFLFFBQVEsR0FBRyxnQkFBZ0IsRUFBRSxFQUFFO0lBQ3RHLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBUyxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBNEIsSUFBSSxDQUFDLENBQUM7UUFDcEQsTUFBTSxDQUFZLENBQUMsRUFBRTtZQUNuQixRQUFRO1lBQ1IsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQ3hCLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ25ELFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFDekIsT0FBTyxFQUFFLFVBQVU7WUFDbkIsT0FBTyxFQUFFLFVBQVU7U0FDcEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUVqRyxNQUFNLFNBQVMsR0FBRyxDQUFDLFNBQXdCLEVBQUUsRUFBRSxDQUM3QyxTQUFTO0tBQ04sSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUM7S0FDekIsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7S0FDZixJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQztLQUNmLElBQUksQ0FBQyxHQUFHLEVBQUUsVUFBVSxHQUFHLFdBQVcsR0FBRyxTQUFTLENBQUM7S0FDL0MsSUFBSSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUU1QixNQUFNLGtCQUFrQixHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXZILE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUN6QyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsR0FDN0MsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUk7SUFDbkMsQ0FBQyxDQUFDLEVBQUU7SUFDSixDQUFDLENBQUMsT0FBTyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsRUFDakcsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBRTNHLE1BQU0sZUFBZSxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYTtJQUM5QyxpQkFBaUIsRUFBRSxvQkFBb0IsQ0FBQyxTQUFTLENBQUM7SUFDbEQsWUFBWSxFQUFFLEdBQUcsT0FBTyxFQUFFLHlCQUF5QjtJQUNuRCxhQUFhLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTO0lBQ3ZDLGNBQWMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUs7UUFDbEMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLO1FBQ3RFLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUM7WUFDL0IsQ0FBQyxDQUFDLDZCQUE2QjtZQUMvQixDQUFDLENBQUMsaUJBQWlCO0lBQ3JCLFFBQVEsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUs7SUFDOUIsWUFBWSxFQUFFLEdBQUcsT0FBTyxFQUFFLCtCQUErQjtJQUN6RCxVQUFVLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTO0lBQ3BDLGNBQWMsRUFBRSxHQUFHLE9BQU8sRUFBRSxVQUFVLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO0lBQzlELFdBQVcsRUFBRSxHQUFHLE9BQU8sRUFBRSx3QkFBd0I7SUFDakQsU0FBUyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSTtJQUM5QixhQUFhLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJO0lBQ2xDLGFBQWEsRUFBRSxHQUFHLE9BQU8sRUFBRSxTQUFTLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO0NBQ3hELENBQUMsQ0FBQztBQUVILE1BQU0sVUFBVSxHQUFHLENBQ2pCLFNBQXdCLEVBQ3hCLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBaUQsRUFDeEUsRUFBRTtJQUNGLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztJQUN4QixJQUFJLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDekIsSUFBSSxVQUFrQixDQUFDO0lBRXZCLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRTtRQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM3QyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN0RCxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUMsQ0FBQztJQUVGLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRTtRQUN6QixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDakMsUUFBUSxFQUFFLENBQUM7YUFDWjtRQUNILENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUMsQ0FBQztJQUVGLFNBQVM7U0FDTixFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3JCLFFBQVEsRUFBRSxDQUFDO0lBQ2IsQ0FBQyxDQUFDO1NBQ0QsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBRTtRQUN2QyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksVUFBVSxLQUFLLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ3BDLE9BQU87U0FDUjtRQUNELFFBQVEsRUFBRSxDQUFDO1FBQ1gsVUFBVSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQy9CLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTlFLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQzthQUM5QixFQUFFLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtZQUN2QixXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUMsQ0FBQzthQUNELEVBQUUsQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFO1lBQ3ZCLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDcEIsYUFBYSxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUM7U0FDRCxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQzVCLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsYUFBYSxFQUFFLENBQUM7SUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFFTCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRyxDQUFDLFNBQXdCLEVBQUUsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtJQUMxRSxTQUFTO1NBQ04sU0FBUyxDQUE0QixXQUFXLENBQUM7U0FDakQsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7U0FDM0MsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztTQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQ2pCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3BELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzdDLEtBQUssQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFakUsU0FBUztTQUNOLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxrQkFBa0IsQ0FBQztTQUNoRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFL0MsU0FBUztTQUNOLFNBQVMsQ0FBNEIsYUFBYSxDQUFDO1NBQ25ELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekUsSUFBSSxDQUFDLEdBQUcsRUFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFNUIsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVyRCxNQUFNO1NBQ0gsU0FBUyxDQUE0QixlQUFlLENBQUM7U0FDckQsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQztTQUMxQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDO1NBQ3ZCLElBQUksQ0FBQyxHQUFHLEVBQUUsVUFBVSxHQUFHLENBQUMsVUFBVSxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN0RCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFGLElBQUksQ0FDSCxRQUFRLEVBQ1IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNKLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLGlCQUFpQixDQUFDO1FBQ3RHLFdBQVc7UUFDWCxDQUFDLFVBQVUsR0FBRyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUNyQyxDQUFDO0lBRUosTUFBTSxXQUFXLEdBQUcsTUFBTTtTQUN2QixTQUFTLENBQTRCLGNBQWMsQ0FBQztTQUNwRCxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsR0FBRyxDQUFDLENBQUM7U0FDekIsSUFBSSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUM7U0FDdEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUN6QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTlFLG1DQUFtQztJQUNuQyxnQ0FBZ0M7SUFDaEMsNERBQTREO0lBQzVELCtFQUErRTtJQUMvRSwwRkFBMEY7SUFDMUYsU0FBUztJQUNULG1DQUFtQztJQUNuQywrQ0FBK0M7SUFDL0Msa0NBQWtDO0lBQ2xDLHFEQUFxRDtJQUNyRCxrQ0FBa0M7SUFDbEMsbUZBQW1GO0lBQ25GLE1BQU07SUFFTixNQUFNLGdCQUFnQixHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDL0IsR0FBRztTQUNBLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2xDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7U0FDbkcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQztTQUM1RixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDZixDQUFDLENBQUMsVUFBVTtRQUNWLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxVQUFVLEdBQUcsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUN0RSxDQUFDLENBQUMsV0FBVyxHQUFHLFVBQVUsR0FBRyxDQUFDLENBQ2pDLENBQUM7SUFFTixNQUFNO1NBQ0gsU0FBUyxDQUE0QixlQUFlLENBQUM7U0FDckQsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1NBQ3RCLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzdELEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFbkUsTUFBTTtTQUNILFNBQVMsQ0FBNEIsb0JBQW9CLENBQUM7U0FDMUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDN0MsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUM7U0FDcEYsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsVUFBVSxHQUFHLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM1RixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBRW5ELFNBQVMsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFOUMsU0FBUztTQUNOLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ3pDLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDZCxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztTQUMzQyxPQUFPLENBQUMsNEJBQTRCLEVBQUUsSUFBSSxDQUFDO1NBQzNDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUVyQixTQUFTO1NBQ04sTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ3hDLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDZCxPQUFPLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQztTQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUUxQixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBRyxDQUFDLFNBQXdCLEVBQUUsRUFBRTtJQUM5QyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUUzRixLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFL0MsS0FBSztTQUNGLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDZCxPQUFPLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQztTQUMzQixJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ2pELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFdEIsa0VBQWtFO0lBQ2xFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsU0FBUyxDQUE0QixhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEYsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXJELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNwRCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDbkQscURBQXFEO0lBQ3JELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNwRCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUV6RCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXBELE9BQU87U0FDSixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztTQUNsQyxNQUFNLENBQUMsTUFBTSxDQUFDO1NBQ2QsT0FBTyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQztTQUMvQixJQUFJLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDO1NBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUVuQixPQUFPO1NBQ0osTUFBTSxDQUFDLE1BQU0sQ0FBQztTQUNkLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUM7U0FDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUNmLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFnQixDQUFDO1NBQ3hELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFakQsT0FBTztTQUNKLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDZCxPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQztTQUMxQixJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FDakIsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxpQkFBaUI7UUFDbkIsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ3ZHO1NBQ0EsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3hHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNmLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUM7UUFDbkIsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFnQixHQUFHLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUN4RjtTQUNBLElBQUksQ0FBQyxHQUFHLEVBQUUsVUFBVSxHQUFHLFdBQVcsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFdkQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxTQUF3QixFQUFFLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLEVBQUUsRUFBRSxDQUN0RixTQUFTO0tBQ04sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ3JCLE1BQU0sT0FBTyxHQUFHO1FBQ2QsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFDN0QsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFDN0QsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsV0FBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7S0FDOUQsQ0FBQztJQUNGLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDakUsQ0FBQyxDQUFDO0tBQ0QsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNyRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQy9FLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUM3RCxVQUFVLEVBQUU7S0FDWixRQUFRLENBQUMsWUFBWSxDQUFDO0tBQ3RCLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ1gsTUFBTSxZQUFZLEdBQUcsYUFBYSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxVQUFVLENBQUM7SUFDeEcsT0FBTyxZQUFZO1FBQ2pCLENBQUMsQ0FBQyxVQUFVO1FBQ1osQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDMUYsQ0FBQyxDQUFDO0tBQ0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7S0FDbEIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ2YsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxVQUFVLEdBQUcsQ0FBQyxHQUFHLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDdEcsT0FBTyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQzdELE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztLQUM1QyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVQLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNqQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFcEcsTUFBTSxlQUFlLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxHQUFHLElBQUksRUFBRSxFQUFFO0lBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsQ0FBQztJQUNwRixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNyRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDekMsTUFBTSxTQUFTLEdBQUc7WUFDaEIsR0FBRyxXQUFXLENBQUM7Z0JBQ2IsRUFBRSxFQUFFLEdBQUcsSUFBSSxRQUFRO2dCQUNuQixLQUFLLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxlQUFlLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJO2dCQUN2RSxhQUFhLEVBQUUsSUFBSTtnQkFDbkIsS0FBSyxFQUFFLElBQUk7Z0JBQ1gsSUFBSTtnQkFDSixLQUFLLEVBQUUsSUFBSTthQUNaLENBQUM7WUFDRixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDO1lBQ3JCLE1BQU0sRUFBRSxDQUFDO1lBQ1QsTUFBTSxFQUFFLElBQUk7U0FDYixDQUFDO1FBQ0YsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLFVBQVUsQ0FBQyxDQUFDO1FBQ3hGLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZELFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDO0tBQzdCO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUN2QjtJQUNFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsSUFBSTtJQUM3QyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLEtBQUssa0JBQWtCO0lBQzNDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO0lBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUM7Q0FDeEIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFbkIsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLElBQTBCLEVBQUUsYUFBYSxHQUFHLGNBQWMsRUFBRSxFQUFFO0lBQ3RGLE1BQU0sS0FBSyxHQUFHLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksYUFBYSxDQUFDO0lBQzNELE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLEtBQUssSUFBSSxlQUFlLEdBQUcsQ0FBQztJQUNwRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDeEUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekIsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQztJQUNyRCxLQUFLLEVBQUUsS0FBSztJQUNaLEtBQUssRUFBRTtRQUNMLElBQUksRUFBRTtZQUNKLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsTUFBTTtZQUNOLG9CQUFvQixFQUFFLENBQUM7U0FDeEI7S0FDRjtDQUNGLENBQUMsQ0FBQztBQUlILE1BQU0sTUFBTSxHQUFHO0lBQ2IsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRTtJQUNwRixFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSx5QkFBeUIsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFO0lBQ3ZGLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsMEJBQTBCLEVBQUU7SUFDMUYsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUU7SUFDakUsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUU7Q0FDOUUsQ0FBQztBQUVGLE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBWSxFQUFFLEtBQTZCLEVBQUUsRUFBRSxDQUFDO0lBQ2hFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLGVBQWU7Q0FDdEYsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFPbEIsTUFBTSxPQUFPLCtCQUErQjtJQW9DMUMsWUFDVSxNQUFjLEVBQ2QsYUFBOEIsRUFDOUIsV0FBMEIsRUFDMUIsYUFBOEI7UUFIOUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUM5QixnQkFBVyxHQUFYLFdBQVcsQ0FBZTtRQUMxQixrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFwQmhDLHNCQUFpQixHQUE4QixFQUFFLENBQUM7UUFFbEQsY0FBUyxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUM7UUFFcEMsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLGdCQUFXLEdBQUcsV0FBVyxDQUFDO1FBQzFCLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZixhQUFRLEdBQWEsRUFBRSxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBS3JCLFdBQU0sR0FBRyxNQUFNLENBQUM7SUFPcEIsQ0FBQztJQUVKLFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxtQkFBbUIsSUFBSSxPQUFPLEVBQUU7WUFDbEMsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUM7WUFDbkUsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDN0IscURBQXFEO1lBQ3JELDBCQUEwQixLQUFLLElBQUksQ0FBQywwQkFBMEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdEY7UUFDRCxJQUFJLFdBQVcsSUFBSSxPQUFPLEVBQUU7WUFDMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ25ILElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUMsMEJBQTBCLElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwSCxDQUFDO0lBRU8sS0FBSyxDQUFDLGdCQUFnQjtRQUM1QixNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQ3hELEtBQUssQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUNsRSxDQUFDO1FBQ0YsTUFBTSxjQUFjLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUN0QyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFPLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsQ0FBQyxRQUFRLEtBQUssT0FBTyxFQUFFO2dCQUMxQixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2xFLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSyxFQUFFLFdBQVcsSUFBSSxLQUFLLEVBQUUsT0FBTyxJQUFJLEtBQUssRUFBRSxJQUFJLENBQUM7YUFDOUQ7WUFDRCxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFGLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRU8sS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFZO1FBQ3JDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFILE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FDekQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUN4RCxDQUFDO1FBQ0YsT0FBTyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsWUFBWSxDQUFDO0lBQ25ELENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3hCLE9BQU87U0FDUjtRQUVELE1BQU0sZ0JBQWdCLEdBQ3BCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsMEJBQTBCLENBQUM7WUFDMUYsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sVUFBVSxHQUFHO1lBQ2pCLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDO1lBQ3RDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO1NBQ3JDLENBQUM7UUFFRixJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDO2FBQ3JDLElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQ2hDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUN0RyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDZCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztZQUN0QixHQUFHLElBQUk7WUFDUCxTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVk7U0FDbEMsQ0FBQyxDQUNILEVBQ0QsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUNoRCxRQUFRLEVBQUUsRUFDVixNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLHFCQUFxQixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUN6RixHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQzdDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxFQUN0QyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQ2IsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUNkLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUztZQUNmLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVztZQUNqQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO1lBQ3pCLEdBQUcsQ0FBQyxXQUFXLEdBQUcsQ0FBQztZQUNuQixVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxTQUFTLENBQUM7U0FDNUQsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFDakIsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ3pFLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQzFDLEdBQUcsQ0FBQyxDQUFDLE1BQWMsRUFBRSxFQUFFO1lBQ3JCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixNQUFNLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQzVDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDZixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYTtnQkFDdEQsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUs7YUFDL0IsQ0FBQyxFQUNGLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQy9CLENBQUM7WUFFRixNQUFNLFNBQVMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixJQUFJLEVBQUUsQ0FBQztpQkFDNUQsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxXQUFXLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7aUJBQzFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtnQkFDbkIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUQsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUMsU0FBUztvQkFDckMsQ0FBQyxDQUFDO3dCQUNFOzRCQUNFLEVBQUUsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQzs0QkFDeEIsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDOzRCQUNsQyxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87NEJBQ3BCLGFBQWEsRUFBRSxHQUFHLENBQUMsS0FBSzt5QkFDekI7cUJBQ0Y7b0JBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFFUCxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztvQkFDekIsQ0FBQyxDQUFDO3dCQUNFLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQzt3QkFDZixhQUFhLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsS0FBSzt3QkFDckQsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO3dCQUNwQixVQUFVLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQztxQkFDL0Q7b0JBQ0gsQ0FBQyxDQUFDO3dCQUNFLEVBQUUsRUFBRSxPQUFPO3dCQUNYLEdBQUcsZ0JBQWdCLENBQ2pCLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsaUNBQWlDLEVBQUUsQ0FDdEY7d0JBQ0QsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO3dCQUNwQixhQUFhLEVBQUUsR0FBRyxDQUFDLEtBQUs7d0JBQ3hCLFVBQVUsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUM7cUJBQ25DLENBQUM7Z0JBQ04sT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDVCxNQUFNLE1BQU0sR0FBZ0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNyRCxPQUFPLEVBQUUsR0FBRyxHQUFHLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBVSxDQUFDO1FBQ2hGLENBQUMsQ0FBQyxFQUNGLE9BQU8sRUFBRSxFQUNULFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ25ELEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNiLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxRQUFRLEVBQUUsQ0FBQztZQUN0RCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUNILENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1lBQ2pCLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFDakMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDM0MsR0FBRyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFO1lBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sS0FBSyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUNqRyxJQUFJLENBQUMsTUFBTSxHQUFHO2dCQUNaLEdBQUcsQ0FBQyxtQkFBbUI7b0JBQ3JCLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRSxDQUFDO29CQUN6RSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNQLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7YUFDbkYsQ0FBQztZQUNGLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNmLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtvQkFDakMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNuQixDQUFDLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sU0FBUztRQUNkLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUNwQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ04sR0FBRyxDQUFDLE9BQU87WUFDWCxDQUFDLElBQUksQ0FBQyxlQUFlLEtBQUssd0JBQXdCLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUNoSCxDQUFDO1FBQ0YsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ2xELEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUM7WUFDbkUsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDUCxNQUFNLFVBQVUsR0FBZ0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUN2RSxNQUFNLFdBQVcsR0FBRztnQkFDbEIsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsRUFBRSxhQUFhLENBQUMsUUFBUTtnQkFDeEQsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsRUFBRSxhQUFhLENBQUMsUUFBUTtnQkFDN0QsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsYUFBYSxDQUFDLFFBQVE7Z0JBQy9DLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxRQUFRO2dCQUNsRCxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxhQUFhLENBQUMsU0FBUzthQUNsRCxDQUFDO1lBRUYsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUM7WUFDckcsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzFFLE1BQU0sZUFBZSxHQUFHO2dCQUN0QixFQUFFLEVBQUUsR0FBRyxDQUFDLFdBQVc7Z0JBQ25CLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQztnQkFDcEUsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztnQkFDaEIsYUFBYSxFQUFFLEdBQUcsQ0FBQyxhQUFhO2dCQUNoQyxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87Z0JBQ3BCLFFBQVEsRUFBRSxHQUFHLENBQUMsYUFBYSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7Z0JBQy9ELFFBQVEsRUFDTixlQUFlLEtBQUssYUFBYSxDQUFDLFFBQVE7b0JBQ3hDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDckIsR0FBRyxDQUFDO3dCQUNKLElBQUksRUFBRSxhQUFhLENBQUMsS0FBSzt3QkFDekIsUUFBUSxFQUFFLENBQUMsQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLEtBQUs7d0JBQ3JDLFFBQVEsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzs0QkFDakMsR0FBRyxDQUFDOzRCQUNKLElBQUksRUFBRSxhQUFhLENBQUMsU0FBUzs0QkFDN0IsUUFBUSxFQUFFLENBQUMsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLGFBQWE7eUJBQzVDLENBQUMsQ0FBQztxQkFDSixDQUFDLENBQUM7b0JBQ0wsQ0FBQyxDQUFDLEVBQUU7YUFDVCxDQUFDO1lBRUYsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO2dCQUNuRCxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHO29CQUNwQixFQUFFLEVBQUUsR0FBRyxDQUFDLFNBQVM7b0JBQ2pCLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQztvQkFDaEUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO29CQUNwQixJQUFJLEVBQUUsYUFBYTtvQkFDbkIsS0FBSyxFQUFFLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7b0JBQ3hDLFFBQVEsRUFBRSxDQUFDLGVBQWUsQ0FBQztpQkFDNUIsQ0FBQyxDQUFDO1lBQ1AsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDUCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sZ0JBQWdCLEdBQUcsY0FBYztZQUNyQyxtRUFBbUU7YUFDbEUsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ25CLEdBQUcsU0FBUztZQUNaLFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUN6QyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzlGLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsUUFBUTtvQkFDMUMsQ0FBQyxDQUFDO3dCQUNFLEdBQUcsS0FBSzt3QkFDUixLQUFLLEVBQUUsYUFBYTs0QkFDbEIsQ0FBQyxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDOzRCQUMxRSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUs7d0JBQ2YsUUFBUSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUTtxQkFDekM7b0JBQ0gsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNaLENBQUMsQ0FBQztTQUNILENBQUMsQ0FBQztZQUNILCtCQUErQjthQUM5QixNQUFNLENBQ0wsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQzVHLENBQUM7UUFFSixNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3BHLE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUzRyxTQUFTLENBQUMsTUFBTTtZQUNkLGdCQUFnQixDQUFDLE1BQU07WUFDdkIsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDYixFQUFFLEVBQUUsa0JBQWtCO2dCQUN0QixLQUFLLEVBQUUsa0JBQWtCO2dCQUN6QixJQUFJLEVBQUUsS0FBSztnQkFDWCxPQUFPLEVBQUUsS0FBSztnQkFDZCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxLQUFLLEVBQUUsSUFBSTtnQkFDWCxhQUFhLEVBQUUsSUFBSTtnQkFDbkIsSUFBSSxFQUFFLGFBQWEsQ0FBQyxRQUFRO2dCQUM1QixRQUFRLEVBQUUsSUFBSTtnQkFDZCxRQUFRLEVBQUUsZ0JBQWdCO2FBQzNCLENBQUMsQ0FBQztRQUVMLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBWTtZQUNsQyxFQUFFLEVBQUUsWUFBWTtZQUNoQixLQUFLLEVBQUUsRUFBRTtZQUNULElBQUksRUFBRSxFQUFFO1lBQ1IsT0FBTyxFQUFFLEVBQUU7WUFDWCxLQUFLLEVBQUUsSUFBSTtZQUNYLGFBQWEsRUFBRSxJQUFJO1lBQ25CLEtBQUssRUFBRSxFQUFFO1lBQ1QsSUFBSSxFQUFFLGFBQWEsQ0FBQyxJQUFJO1lBQ3hCLFFBQVEsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjtTQUMxRCxDQUFDLENBQUM7UUFFSCxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUV4RSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUk7YUFDYixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUNqRCxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxNQUFpQixHQUFHLENBQUMsQ0FBQzthQUM3QjtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxJQUFJLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDO1lBQzdELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNqQywyQ0FBMkM7UUFDM0MsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxHQUFHLGlCQUFpQixHQUFHLFVBQVUsQ0FBQztRQUNsRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQ3hELElBQUksQ0FBQyxNQUFNLEdBQUcsV0FBVyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUN2RCxJQUFJLENBQUMsR0FBRzthQUNMLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN4RSxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsUUFBUSxJQUFJLENBQUMsQ0FBQztRQUV0QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVuRCxJQUFJLENBQUMsZUFBZSxDQUNsQixJQUFJLEVBQ0osSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQzNDLENBQUM7SUFDSixDQUFDO0lBRUQsa0RBQWtEO0lBQzFDLFdBQVcsQ0FBQyxFQUFFLGFBQWEsR0FBRyxLQUFLLEVBQUUsa0JBQWtCLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRTtRQUM1RSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLE1BQU0sVUFBVSxHQUFHLE1BQU0sRUFBYTthQUNuQyxRQUFRLENBQUMsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7YUFDakMsVUFBVSxDQUFDLENBQUMsR0FBRyxVQUF1QixFQUFFLEVBQUUsQ0FDekMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQ3pHLENBQUM7UUFDSixNQUFNLElBQUksR0FBYyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsTUFBTSxLQUFLLEdBQVcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEcsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRTNDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNsQixDQUFDLENBQUMsQ0FBQztnQkFDRCxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLENBQUM7UUFDbEgsQ0FBQyxDQUFDLENBQUM7UUFFSCwwRkFBMEY7UUFDMUYsMkZBQTJGO1FBQzNGLE1BQU0sY0FBYyxHQUFHLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsRUFBRSxLQUFhLEVBQUUsRUFBRTtZQUM5RSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0UsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFFbkUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQzlELENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNwQixHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7Z0JBQzFCLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRzthQUMzQixDQUFDLEVBQ0YsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUNuQyxDQUFDO1lBRUYsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU07Z0JBQy9DLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxHQUFHLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEdBQUcsVUFBVSxFQUFFO2dCQUM1RixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUVqQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLGdDQUFnQztZQUN4RSxNQUFNLGFBQWEsR0FBRyxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdDQUFnQztZQUMvRiw4Q0FBOEM7WUFDOUMsK0ZBQStGO1lBQy9GLG1DQUFtQztZQUNuQyxNQUFNLFVBQVUsR0FDZCxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV0RyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFFNUQsT0FBTztnQkFDTCxjQUFjLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDO2dCQUNoRCxpQkFBaUIsRUFBRSxVQUFVLEdBQUcsaUJBQWlCO2FBQ2xELENBQUM7UUFDSixDQUFDLENBQUM7UUFFRixNQUFNLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxHQUFHO1lBQ3BDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDWCxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUU7WUFDdkIsaUJBQWlCLEVBQUUsQ0FBQztZQUNwQixjQUFjLEVBQUUsSUFBSSxDQUFDLE1BQU07U0FDNUIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUzRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJO2FBQ2xCLElBQUksQ0FDSCxLQUFLLEVBQ0wsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FDN0c7YUFDQSxJQUFJLENBQ0gsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNSLEtBQUs7YUFDRixNQUFNLENBQUMsR0FBRyxDQUFDO2FBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQzthQUNoQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQzthQUNsQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUMzRyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxFQUNsQixDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN6RCxPQUFPLElBQUk7aUJBQ1IsS0FBSyxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQztpQkFDL0IsVUFBVSxFQUFFO2lCQUNaLFFBQVEsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO2lCQUMxQixLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDWCxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQztnQkFDM0QsT0FBTyxDQUFDLFFBQVEsRUFBRSxNQUFNLEdBQUcsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDNUQsQ0FBQyxDQUFDO2lCQUNELElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDOUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7aUJBQ3RHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO2lCQUNsQixNQUFNLEVBQUU7aUJBQ1IsRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ2QsMERBQTBEO2dCQUMxRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzNELENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUNGLENBQUM7UUFFSixJQUFJLENBQUMsSUFBSTthQUNOLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQy9FLFVBQVUsRUFBRTthQUNaLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1gsTUFBTSxZQUFZLEdBQUcsYUFBYSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFVBQVUsQ0FBQztZQUNqRyxPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbEgsQ0FBQyxDQUFDO2FBQ0QsUUFBUSxDQUFDLFlBQVksQ0FBQzthQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2FBQ3BELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFekYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSTthQUNsQixJQUFJLENBQ0gsS0FBSyxFQUNMLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUNqSDthQUNBLElBQUksQ0FDSCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQzdFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQ2xCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDUCxJQUFJO2FBQ0QsVUFBVSxFQUFFO2FBQ1osUUFBUSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7YUFDMUIsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDWCxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxRQUFRLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDO1lBQ3pFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxHQUFHLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNuRSxDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQzthQUNsQixNQUFNLEVBQUUsQ0FDZDthQUNBLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxNQUFXLEVBQUUsQ0FBWTtRQUN0RCxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUU7WUFDYixPQUFPO1NBQ1I7UUFDRCxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUM3QixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztRQUN6QyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUM1QyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTyxlQUFlLENBQUMsTUFBVyxFQUFFLENBQW9CO1FBQ3ZELENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ25CLE1BQU0sa0JBQWtCLEdBQUcsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2xDLEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3RCLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtnQkFDZixLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDcEIsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hCLEtBQUssQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQzthQUN6QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7OzRIQW5oQlUsK0JBQStCO2dIQUEvQiwrQkFBK0IsOFZDemhCNUMsay9KQW1IQTsyRkRzYWEsK0JBQStCO2tCQUwzQyxTQUFTOytCQUNFLDZCQUE2QjtxTEFrQi9CLFFBQVE7c0JBRGYsU0FBUzt1QkFBQyxPQUFPO2dCQUlWLGVBQWU7c0JBRHRCLFNBQVM7dUJBQUMsR0FBRztnQkFJTixpQkFBaUI7c0JBRHhCLEtBQUs7Z0JBR0UsU0FBUztzQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgTmdab25lLFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlsdGVyLCBncm91cEJ5LCBtYXAsIG1lcmdlQWxsLCBtZXJnZU1hcCwgdG9BcnJheSwgY2F0Y2hFcnJvciwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZnJvbSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbGlua0hvcml6b250YWwgYXMgZDNMaW5rSG9yaXpvbnRhbCB9IGZyb20gJ2QzLXNoYXBlJztcbmltcG9ydCB7IHNlbGVjdCBhcyBkM1NlbGVjdCwgU2VsZWN0aW9uLCBCYXNlVHlwZSwgc2VsZWN0QWxsIH0gZnJvbSAnZDMtc2VsZWN0aW9uJztcbmltcG9ydCAnZDMtdHJhbnNpdGlvbic7XG5pbXBvcnQge1xuICBoaWVyYXJjaHkgYXMgZDNIaWVyYXJjaHksXG4gIHRyZWUgYXMgZDNUcmVlLFxuICBIaWVyYXJjaHlOb2RlLFxuICBIaWVyYXJjaHlQb2ludE5vZGUsXG4gIEhpZXJhcmNoeVBvaW50TGlua1xufSBmcm9tICdkMy1oaWVyYXJjaHknO1xuaW1wb3J0IHsgZWFzZUVsYXN0aWNJbiBhcyBkM0Vhc2VFbGFzdGljSW4sIGVhc2VFbGFzdGljT3V0IGFzIGQzRWFzZUVsYXN0aWNPdXQgfSBmcm9tICdkMy1lYXNlJztcbmltcG9ydCB7IERhdGFTdGF0ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxELCBJVGVybUpTT05MRCwgTm9kZVR5cGUsIFRlcm1UZXJtVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IGdldERlZmF1bHRNb2RlbElkIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9nbG9zc2FyeSc7XG5pbXBvcnQgeyB1bmlxdWUsIHRvUHJlY2lzaW9uIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5pbXBvcnQgeyBOZ2JQb3BvdmVyIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG5pbXBvcnQgeyBiYXNlVXJsIH0gZnJvbSAnLi4vLi4vY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IGQzd3JhcCB9IGZyb20gJy4uLy4uL2NvbW1vbi9kMy11dGlscyc7XG5pbXBvcnQgeyBMZXZlbCwgcGFyc2VMaW5lcywgcGFyc2VNZXNzYWdlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2xvZ3MtdXRpbHMnO1xuaW1wb3J0IHsgSGVFbmdpbmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZW5naW5lL2VuZ2luZS5zZXJ2aWNlJztcbmltcG9ydCB7IEhlTm9kZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9ub2RlL25vZGUuc2VydmljZSc7XG5pbXBvcnQgeyBIZVNlYXJjaFNlcnZpY2UsIElTZWFyY2hSZXN1bHRFeHRlbmRlZCB9IGZyb20gJy4uLy4uL3NlYXJjaC9zZWFyY2guc2VydmljZSc7XG5pbXBvcnQgeyBtYXRjaFRlcm1UeXBlLCBtYXRjaEV4YWN0UXVlcnksIG1hdGNoVHlwZSB9IGZyb20gJy4uLy4uL3NlYXJjaC9zZWFyY2gubW9kZWwnO1xuXG5lbnVtIENoYXJ0Tm9kZVR5cGUge1xuICBtaWRwb2ludCA9ICdtaWRwb2ludCcsXG4gIGVtaXNzaW9uID0gJ2VtaXNzaW9uJyxcbiAgZW5kcG9pbnQgPSAnZW5kcG9pbnQnLFxuICBpbnB1dCA9ICdpbnB1dCcsXG4gIG9wZXJhdGlvbiA9ICdvcGVyYXRpb24nLFxuICByb290ID0gJ3Jvb3QnXG59XG5cbmludGVyZmFjZSBOb2RlRGF0dW0ge1xuICBpZDogc3RyaW5nO1xuICB0ZXJtOiBzdHJpbmc7XG4gIG1vZGVsSWQ6IHN0cmluZztcbiAgbW9kZWxOYW1lPzogc3RyaW5nO1xuICBtb2RlbERvY3M/OiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHR5cGU6IENoYXJ0Tm9kZVR5cGU7XG4gIHZhbHVlOiBudW1iZXIgfCBudWxsO1xuICB3ZWlnaHRlZFZhbHVlOiBudW1iZXIgfCBudWxsO1xuICBmcmFjdGlvbj86IG51bWJlcjtcbiAgY2hpbGRyZW4/OiBOb2RlRGF0dW1bXTtcbiAgZ3JvdXA/OiBib29sZWFuO1xuICBzaG93QmFyPzogYm9vbGVhbjtcbiAgdW5pdHM6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIENoYXJ0Tm9kZSBleHRlbmRzIEhpZXJhcmNoeVBvaW50Tm9kZTxOb2RlRGF0dW0+IHtcbiAgX2NoaWxkcmVuPzogQ2hhcnROb2RlW107IC8vIGNoaWxkcmVuIG9mIGNvbGxhcHNlZCBub2Rlc1xuICBfZ3JvdXBDaGlsZHJlbj86IENoYXJ0Tm9kZVtdOyAvLyBhbGwgY2hpbGRyZW4gd2hlbiBncm91cCBjbG9zZWQ7IHVuZ3JvdXBlZCBjaGlsZHJlbiB3aGVuIGdyb3VwIG9wZW5cbiAgX29wZW4/OiBib29sZWFuO1xuICBfZ3JleWVkPzogYm9vbGVhbjtcbiAgX2dyb3VwT3Blbj86IGJvb2xlYW47XG4gIF90aW1lb3V0PzogTm9kZUpTLlRpbWVvdXQ7XG59XG5cbmludGVyZmFjZSBITm9kZSBleHRlbmRzIEhpZXJhcmNoeU5vZGU8Tm9kZURhdHVtPiB7XG4gIF9jaGlsZHJlbj86IEhOb2RlW107XG4gIF9ncm91cENoaWxkcmVuPzogSE5vZGVbXTtcbiAgX2dyb3VwT3Blbj86IGJvb2xlYW47XG4gIF9vcGVuPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIExpbmsgZXh0ZW5kcyBIaWVyYXJjaHlQb2ludExpbms8Tm9kZURhdHVtPiB7XG4gIHNvdXJjZTogQ2hhcnROb2RlO1xuICB0YXJnZXQ6IENoYXJ0Tm9kZTtcbn1cblxudHlwZSBOb2RlU2VsZWN0aW9uID0gU2VsZWN0aW9uPFNWR0dFbGVtZW50IHwgQmFzZVR5cGUsIENoYXJ0Tm9kZSwgU1ZHR0VsZW1lbnQsIHVua25vd24+O1xudHlwZSBMaW5rU2VsZWN0aW9uID0gU2VsZWN0aW9uPFNWR1BhdGhFbGVtZW50IHwgQmFzZVR5cGUsIExpbmssIFNWR0dFbGVtZW50LCB1bmtub3duPjtcblxuaW50ZXJmYWNlIElJbnB1dExvZyB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHVuaXRzOiBzdHJpbmc7XG4gIHdlaWdodGVkVmFsdWU6IG51bWJlcjtcbiAgdmFsdWU6IG51bWJlcjtcbiAgb3BlcmF0aW9uczoge1xuICAgIHdlaWdodGVkVmFsdWU6IG51bWJlcjtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHVuaXRzOiBzdHJpbmc7XG4gICAgdmFsdWU6IG51bWJlcjtcbiAgfVtdO1xufVxuaW50ZXJmYWNlIElMb2cge1xuICBpbmRpY2F0b3I6IHN0cmluZztcbiAgY29udHJpYnV0b3I6IHN0cmluZztcbiAgY29lZmZpY2llbnQ6IG51bWJlcjtcbiAgdmFsdWU6IG51bWJlcjtcbiAgd2VpZ2h0ZWRWYWx1ZTogbnVtYmVyO1xuICBtb2RlbElkOiBzdHJpbmc7XG4gIGlucHV0cz86IElJbnB1dExvZ1tdO1xufVxuXG5jb25zdCBwYXJzZUxvZyA9IChkYXRhOiBhbnkpOiBJTG9nID0+ICh7XG4gIGluZGljYXRvcjogZGF0YVsna2V5L3Rlcm0nXSB8fCBkYXRhLnRlcm0gfHwgZGF0YS5pbmRpY2F0b3IsXG4gIGNvbnRyaWJ1dG9yOiBkYXRhLm5vZGUsXG4gIGNvZWZmaWNpZW50OiArZGF0YS5jb2VmZmljaWVudCxcbiAgbW9kZWxJZDogZGF0YS5tb2RlbCB8fCAnVW5rbm93bicsXG4gIHdlaWdodGVkVmFsdWU6ICtkYXRhLnZhbHVlICogK2RhdGEuY29lZmZpY2llbnQsXG4gIHZhbHVlOiArZGF0YS52YWx1ZVxufSk7XG5cbmNvbnN0IGZpbHRlclRlcm1UeXBlcyA9IFtcbiAgVGVybVRlcm1UeXBlLnJlc291cmNlVXNlLFxuICBUZXJtVGVybVR5cGUuZW1pc3Npb24sXG4gIFRlcm1UZXJtVHlwZS5jaGFyYWN0ZXJpc2VkSW5kaWNhdG9yLFxuICBUZXJtVGVybVR5cGUuZW5kcG9pbnRJbmRpY2F0b3IsXG4gIFRlcm1UZXJtVHlwZS5tb2RlbFxuXTtcbmNvbnN0IG5vZGVDb2xvdXJzID0ge1xuICBbQ2hhcnROb2RlVHlwZS5lbmRwb2ludF06ICdibHVlJyxcbiAgW0NoYXJ0Tm9kZVR5cGUubWlkcG9pbnRdOiAncmVkJyxcbiAgW0NoYXJ0Tm9kZVR5cGUuZW1pc3Npb25dOiAncHVycGxlJyxcbiAgW0NoYXJ0Tm9kZVR5cGUuaW5wdXRdOiAnZ3JlZW4nLFxuICBbQ2hhcnROb2RlVHlwZS5vcGVyYXRpb25dOiAnb3JhbmdlJ1xufTtcbmNvbnN0IHdpZHRoID0gODAwO1xuY29uc3QgbWFyZ2luID0geyB0b3A6IDEwLCByaWdodDogMjAsIGJvdHRvbTogMTAsIGxlZnQ6IDIwIH07XG5jb25zdCBmb250U2l6ZSA9IE1hdGguZmxvb3Iod2lkdGggLyAxMDApO1xuY29uc3Qgbm9kZVBhZGRpbmcgPSBmb250U2l6ZSAvIDI7XG5jb25zdCBsaW5lSGVpZ2h0ID0gZm9udFNpemUgKiAxLjI7XG5jb25zdCBiYXJIZWlnaHQgPSBsaW5lSGVpZ2h0O1xuXG5jb25zdCBub2RlSGVpZ2h0ID0gbm9kZVBhZGRpbmcgKiAyICsgMiAqIGxpbmVIZWlnaHQgKyBiYXJIZWlnaHQ7XG5jb25zdCBub2RlV2lkdGggPSBub2RlSGVpZ2h0ICogMiAqIDEuNjE4O1xuY29uc3Qgbm9kZUNvbnRlbnRXaWR0aCA9IG5vZGVXaWR0aCAtIG5vZGVQYWRkaW5nICogMjtcbmNvbnN0IGxheWVyU3BhY2luZyA9ICh3aWR0aCAtIG1hcmdpbi5sZWZ0IC0gbWFyZ2luLnJpZ2h0IC0gbm9kZVdpZHRoICogNSkgLyA0O1xuY29uc3Qgbm9kZU1hcmdpbiA9IG5vZGVQYWRkaW5nICogMC43NTtcbmNvbnN0IG5vZGVTcGFjaW5nRmFjdG9yID0gKG5vZGVIZWlnaHQgKyBub2RlTWFyZ2luICogMikgLyBub2RlSGVpZ2h0O1xuY29uc3Qgbm9kZUR1cmF0aW9uID0gNjAwO1xuY29uc3QgbGlua0R1cmF0aW9uID0gMjAwO1xuY29uc3QgZ3JvdXBEZWxheSA9IG5vZGVEdXJhdGlvbiAtIDEwMDtcbmNvbnN0IG5vbkxDQUluZGljYXRvcnNJZCA9ICdub25MQ0FJbmRpY2F0b3JzJztcbmNvbnN0IGdyZXllZE9wYWNpdHkgPSAwLjI7XG5jb25zdCBkZWZhdWx0SW5kaWNhdG9yc01vZGVsSWQgPSAnZGVmYXVsdEluZGljYXRvcnNNb2RlbElkJztcbmNvbnN0IGRlZmF1bHRJbmRpY2F0b3JzTW9kZWxOYW1lID0gJ0RlZmF1bHQgSW5kaWNhdG9ycyAobXVsdGktbW9kZWwpJztcbmNvbnN0IGdyb3VwT3ZlcmxhcCA9IGxpbmVIZWlnaHQgLSBub2RlUGFkZGluZyAtIG5vZGVNYXJnaW47XG5jb25zdCBncm91cE5vZGVTcGFjZSA9IG5vZGVIZWlnaHQgLSAyICogZ3JvdXBPdmVybGFwO1xuXG5jb25zdCBjb2xsYXBzZUNoaWxkcmVuID0gKG5vZGU6IENoYXJ0Tm9kZSB8IEhOb2RlKSA9PiB7XG4gIG5vZGUuX2NoaWxkcmVuID0gbm9kZS5jaGlsZHJlbiB8fCBub2RlLl9jaGlsZHJlbjtcbiAgbm9kZS5jaGlsZHJlbiA9IG51bGw7XG4gIHJldHVybiBub2RlO1xufTtcblxuY29uc3QgcmVzdG9yZUNoaWxkcmVuID0gKG5vZGU6IENoYXJ0Tm9kZSB8IEhOb2RlKSA9PiB7XG4gIG5vZGUuY2hpbGRyZW4gPSBub2RlLl9jaGlsZHJlbjtcbiAgbm9kZS5fY2hpbGRyZW4gPSBudWxsO1xuICByZXR1cm4gbm9kZTtcbn07XG5cbmNvbnN0IHdyYXAgPSAoc2VsZWN0aW9uOiBTZWxlY3Rpb248U1ZHVGV4dEVsZW1lbnQsIENoYXJ0Tm9kZSwgYW55LCBhbnk+LCBtYXhXaWR0aCA9IG5vZGVDb250ZW50V2lkdGgpID0+IHtcbiAgc2VsZWN0aW9uLmVhY2goZnVuY3Rpb24oZCkge1xuICAgIGNvbnN0IHQgPSBkM1NlbGVjdDxTVkdUZXh0RWxlbWVudCwgQ2hhcnROb2RlPih0aGlzKTtcbiAgICBkM3dyYXA8Q2hhcnROb2RlPih0LCB7XG4gICAgICBtYXhXaWR0aCxcbiAgICAgIG1heExpbmVzOiBkLmRhdGEuc2hvd0JhciA/IDIgOiAzLFxuICAgICAgdmNlbnRyZTogIWQuZGF0YS5zaG93QmFyLFxuICAgICAgd29yZHM6IFsuLi5kLmRhdGEubGFiZWwuc3BsaXQoL1xccysvKSwgZC5kYXRhLnVuaXRzXSxcbiAgICAgIG93bkxpbmVXb3JkOiBkLmRhdGEudW5pdHMsXG4gICAgICBuSGVpZ2h0OiBub2RlSGVpZ2h0LFxuICAgICAgbEhlaWdodDogbGluZUhlaWdodFxuICAgIH0pO1xuICB9KTtcbn07XG5cbmNvbnN0IHNldE5vZGVTaXplID0gKHNlbGVjdGlvbikgPT4gc2VsZWN0aW9uLmF0dHIoJ3dpZHRoJywgbm9kZVdpZHRoKS5hdHRyKCdoZWlnaHQnLCBub2RlSGVpZ2h0KTtcblxuY29uc3QgZm9ybWF0QmFyID0gKHNlbGVjdGlvbjogTm9kZVNlbGVjdGlvbikgPT5cbiAgc2VsZWN0aW9uXG4gICAgLmF0dHIoJ2hlaWdodCcsIGJhckhlaWdodClcbiAgICAuYXR0cigncngnLCAnMScpXG4gICAgLmF0dHIoJ3J5JywgJzEnKVxuICAgIC5hdHRyKCd5Jywgbm9kZUhlaWdodCAtIG5vZGVQYWRkaW5nIC0gYmFySGVpZ2h0KVxuICAgIC5hdHRyKCd4Jywgbm9kZVBhZGRpbmcpO1xuXG5jb25zdCBpc1R5cGVXaXRob3V0VmFsdWUgPSAobm9kZURhdHVtKSA9PiBbQ2hhcnROb2RlVHlwZS5pbnB1dCwgQ2hhcnROb2RlVHlwZS5vcGVyYXRpb25dLmluY2x1ZGVzKG5vZGVEYXR1bS5kYXRhLnR5cGUpO1xuXG5jb25zdCBnZXRXZWlnaHRlZFZhbHVlVGV4dCA9IChub2RlRGF0dW0pID0+XG4gIGAke3RvUHJlY2lzaW9uKG5vZGVEYXR1bS5kYXRhLndlaWdodGVkVmFsdWUsIDMpfSR7XG4gICAgbm9kZURhdHVtLnBhcmVudD8uZGF0YS52YWx1ZSA9PT0gbnVsbFxuICAgICAgPyAnJ1xuICAgICAgOiBgIG9mICR7dG9QcmVjaXNpb24obm9kZURhdHVtLnBhcmVudD8uZGF0YS52YWx1ZSB8fCBub2RlRGF0dW0ucGFyZW50Py5kYXRhLndlaWdodGVkVmFsdWUsIDMpfWBcbiAgfSAke25vZGVEYXR1bS5wYXJlbnQ/LmRhdGEudmFsdWUgPyBub2RlRGF0dW0ucGFyZW50Py5kYXRhLnVuaXRzIDogbm9kZURhdHVtLnBhcmVudD8ucGFyZW50Py5kYXRhLnVuaXRzfWA7XG5cbmNvbnN0IGdlbmVyYXRlVGlwRGF0YSA9IChub2RlRGF0dW0pID0+ICh7XG4gIGhhc1dlaWdodGVkVmFsdWU6IG5vZGVEYXR1bS5kYXRhLndlaWdodGVkVmFsdWUsXG4gIHdlaWdodGVkVmFsdWVUZXh0OiBnZXRXZWlnaHRlZFZhbHVlVGV4dChub2RlRGF0dW0pLFxuICB2YWx1ZUtleUhyZWY6IGAke2Jhc2VVcmwoKX0vc2NoZW1hL0luZGljYXRvciN2YWx1ZWAsXG4gIG1vZGVsRG9jc0hyZWY6IG5vZGVEYXR1bS5kYXRhLm1vZGVsRG9jcyxcbiAgdmFsdWVWYWx1ZVRleHQ6IG5vZGVEYXR1bS5kYXRhLnZhbHVlXG4gICAgPyBgJHt0b1ByZWNpc2lvbihub2RlRGF0dW0uZGF0YS52YWx1ZSwgMyl9ICR7bm9kZURhdHVtLmRhdGEudW5pdHN9IC0gYFxuICAgIDogaXNUeXBlV2l0aG91dFZhbHVlKG5vZGVEYXR1bSlcbiAgICA/ICdubyBkYXRhICh1bmRlciBkZXZlbG9wbWVudCknXG4gICAgOiAnbm8gY29udHJpYnV0aW9uJyxcbiAgaGFzVmFsdWU6IG5vZGVEYXR1bS5kYXRhLnZhbHVlLFxuICBtb2RlbEtleUhyZWY6IGAke2Jhc2VVcmwoKX0vc2NoZW1hL0luZGljYXRvciNtZXRob2RNb2RlbGAsXG4gIG1vZGVsVmFsdWU6IG5vZGVEYXR1bS5kYXRhLm1vZGVsTmFtZSxcbiAgbW9kZWxWYWx1ZUhyZWY6IGAke2Jhc2VVcmwoKX0vbW9kZWwvJHtub2RlRGF0dW0uZGF0YS5tb2RlbElkfWAsXG4gIHRlcm1LZXlIcmVmOiBgJHtiYXNlVXJsKCl9L3NjaGVtYS9JbmRpY2F0b3IjdGVybWAsXG4gIHRlcm1WYWx1ZTogbm9kZURhdHVtLmRhdGEudGVybSxcbiAgdGVybVZhbHVlVGV4dDogbm9kZURhdHVtLmRhdGEudGVybSxcbiAgdGVybVZhbHVlSHJlZjogYCR7YmFzZVVybCgpfS90ZXJtLyR7bm9kZURhdHVtLmRhdGEuaWR9YFxufSk7XG5cbmNvbnN0IGFkZFRvb2x0aXAgPSAoXG4gIHNlbGVjdGlvbjogTm9kZVNlbGVjdGlvbixcbiAgeyB0b29sdGlwT3BlcmF0b3IsIHpvbmUgfTogeyB0b29sdGlwT3BlcmF0b3I6IE5nYlBvcG92ZXI7IHpvbmU6IE5nWm9uZSB9XG4pID0+IHtcbiAgbGV0IGhvdmVyaW5nVGlwID0gZmFsc2U7XG4gIGxldCBob3ZlcmluZ05vZGUgPSBmYWxzZTtcbiAgbGV0IGxhc3ROb2RlSWQ6IHN0cmluZztcblxuICBjb25zdCBjbG9zZVRpcCA9ICgpID0+IHtcbiAgICB6b25lLnJ1bigoKSA9PiB0b29sdGlwT3BlcmF0b3IuY2xvc2UoZmFsc2UpKTtcbiAgICBzZWxlY3RBbGwoJy50aXAtdGFyZ2V0JykuY2xhc3NlZCgndGlwLXRhcmdldCcsIGZhbHNlKTtcbiAgICBsYXN0Tm9kZUlkID0gbnVsbDtcbiAgfTtcblxuICBjb25zdCBzdGFydENsb3NlVGlwID0gKCkgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCFob3ZlcmluZ1RpcCAmJiAhaG92ZXJpbmdOb2RlKSB7XG4gICAgICAgIGNsb3NlVGlwKCk7XG4gICAgICB9XG4gICAgfSwgMTAwKTtcbiAgfTtcblxuICBzZWxlY3Rpb25cbiAgICAub24oJ2NsaWNrJywgKF9lLCBkKSA9PiB7XG4gICAgICBjbG9zZVRpcCgpO1xuICAgIH0pXG4gICAgLm9uKCdwb2ludGVyZW50ZXInLCAoZXZlbnQsIG5vZGVEYXR1bSkgPT4ge1xuICAgICAgaG92ZXJpbmdOb2RlID0gdHJ1ZTtcbiAgICAgIGlmIChsYXN0Tm9kZUlkID09PSBub2RlRGF0dW0uZGF0YS5pZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjbG9zZVRpcCgpO1xuICAgICAgbGFzdE5vZGVJZCA9IG5vZGVEYXR1bS5kYXRhLmlkO1xuICAgICAgZDNTZWxlY3QoZXZlbnQudGFyZ2V0KS5jbGFzc2VkKCd0aXAtdGFyZ2V0JywgdHJ1ZSk7XG4gICAgICB6b25lLnJ1bigoKSA9PiB0b29sdGlwT3BlcmF0b3Iub3Blbih7IHRpcERhdGE6IGdlbmVyYXRlVGlwRGF0YShub2RlRGF0dW0pIH0pKTtcblxuICAgICAgZDNTZWxlY3QoJy5kcml2ZXItY2hhcnQtdG9vbHRpcCcpXG4gICAgICAgIC5vbigncG9pbnRlcmVudGVyJywgKCkgPT4ge1xuICAgICAgICAgIGhvdmVyaW5nVGlwID0gdHJ1ZTtcbiAgICAgICAgfSlcbiAgICAgICAgLm9uKCdwb2ludGVybGVhdmUnLCAoKSA9PiB7XG4gICAgICAgICAgaG92ZXJpbmdUaXAgPSBmYWxzZTtcbiAgICAgICAgICBzdGFydENsb3NlVGlwKCk7XG4gICAgICAgIH0pO1xuICAgIH0pXG4gICAgLm9uKCdwb2ludGVybGVhdmUnLCAoX2UsIGQpID0+IHtcbiAgICAgIGhvdmVyaW5nTm9kZSA9IGZhbHNlO1xuICAgICAgc3RhcnRDbG9zZVRpcCgpO1xuICAgIH0pO1xuXG4gIHJldHVybiBzZWxlY3Rpb247XG59O1xuXG5jb25zdCBtZXJnZWROb2RlcyA9IChzZWxlY3Rpb246IE5vZGVTZWxlY3Rpb24sIHsgdG9vbHRpcE9wZXJhdG9yLCB6b25lIH0pID0+IHtcbiAgc2VsZWN0aW9uXG4gICAgLnNlbGVjdEFsbDxTVkdSZWN0RWxlbWVudCwgQ2hhcnROb2RlPignLm5vZGUtYm94JylcbiAgICAuY2xhc3NlZCgnbm9kZS1vcGVuYWJsZScsIChkKSA9PiAhIWQuaGVpZ2h0KVxuICAgIC5jbGFzc2VkKCdub2RlLW9wZW4nLCAoZCkgPT4gZC5fb3BlbilcbiAgICAuY2FsbChzZXROb2RlU2l6ZSlcbiAgICAuYXR0cignc3Ryb2tlJywgKHsgZGF0YSB9KSA9PiBub2RlQ29sb3Vyc1tkYXRhLnR5cGVdKVxuICAgIC5hdHRyKCdmaWxsJywgKGQpID0+IG5vZGVDb2xvdXJzW2QuZGF0YS50eXBlXSlcbiAgICAuc3R5bGUoJ3VzZXItc2VsZWN0Jywgd2luZG93LmlubmVyV2lkdGggPCA3NjggPyAnbm9uZScgOiBudWxsKTtcblxuICBzZWxlY3Rpb25cbiAgICAuZmlsdGVyKChkKSA9PiAhZC5kYXRhLmdyb3VwICYmIGQuZGF0YS5pZCAhPT0gbm9uTENBSW5kaWNhdG9yc0lkKVxuICAgIC5jYWxsKGFkZFRvb2x0aXAsIHsgdG9vbHRpcE9wZXJhdG9yLCB6b25lIH0pO1xuXG4gIHNlbGVjdGlvblxuICAgIC5zZWxlY3RBbGw8U1ZHVGV4dEVsZW1lbnQsIENoYXJ0Tm9kZT4oJy5ub2RlLWxhYmVsJylcbiAgICAuYXR0cigneScsIChkKSA9PiAoZC5kYXRhLnNob3dCYXIgPyBsaW5lSGVpZ2h0IC8gMiArIG5vZGVQYWRkaW5nIC8gMiA6IDApKVxuICAgIC5hdHRyKCd4Jywgbm9kZVdpZHRoIC8gMik7XG5cbiAgY29uc3QgZ3JvdXBzID0gc2VsZWN0aW9uLmZpbHRlcigoZCkgPT4gZC5kYXRhLmdyb3VwKTtcblxuICBncm91cHNcbiAgICAuc2VsZWN0QWxsPFNWR1RleHRFbGVtZW50LCBDaGFydE5vZGU+KCcuZ3JvdXAtYm9yZGVyJylcbiAgICAuYXR0cignd2lkdGgnLCBub2RlV2lkdGggKyBub2RlUGFkZGluZyAqIDIpXG4gICAgLmF0dHIoJ3gnLCAtbm9kZVBhZGRpbmcpXG4gICAgLmF0dHIoJ3knLCBub2RlSGVpZ2h0IC0gKGxpbmVIZWlnaHQgKyBub2RlUGFkZGluZyAqIDIpKVxuICAgIC5hdHRyKCdvcGFjaXR5JywgKGQpID0+IChkLl9ncmV5ZWQgJiYgZC5fZ3JvdXBPcGVuID8gZ3JleWVkT3BhY2l0eSA6IGQuX2dyb3VwT3BlbiA/IDEgOiAwKSlcbiAgICAuYXR0cihcbiAgICAgICdoZWlnaHQnLFxuICAgICAgKGQpID0+XG4gICAgICAgIE1hdGguYWJzKGQucGFyZW50Ll9ncm91cENoaWxkcmVuLmxlbmd0aCAtIGQucGFyZW50LmNoaWxkcmVuLmxlbmd0aCkgKiAobm9kZUhlaWdodCAqIG5vZGVTcGFjaW5nRmFjdG9yKSArXG4gICAgICAgIG5vZGVQYWRkaW5nICtcbiAgICAgICAgKGxpbmVIZWlnaHQgKyBub2RlUGFkZGluZyAqIDIpIC8gMlxuICAgICk7XG5cbiAgY29uc3QgZ3JvdXBMYWJlbHMgPSBncm91cHNcbiAgICAuc2VsZWN0QWxsPFNWR1RleHRFbGVtZW50LCBDaGFydE5vZGU+KCcuZ3JvdXAtbGFiZWwnKVxuICAgIC5hdHRyKCd5Jywgbm9kZUhlaWdodCAvIDIpXG4gICAgLmF0dHIoJ3gnLCBub2RlUGFkZGluZylcbiAgICAudGV4dCgoZCkgPT4gZC5kYXRhLmxhYmVsKVxuICAgIC5hdHRyKCdvcGFjaXR5JywgKGQpID0+IChkLl9ncm91cE9wZW4gPyAwIDogZC5fZ3JleWVkID8gZ3JleWVkT3BhY2l0eSA6IDEpKTtcblxuICAvLyB1bm5lZWRlZCB3aXRoIGN1cnJlbnQgZGltZW5zaW9uc1xuICAvLyBncm91cExhYmVscy5lYWNoKGZ1bmN0aW9uKCkge1xuICAvLyAgIGNvbnN0IHRleHQgPSBkM1NlbGVjdDxTVkdUZXh0RWxlbWVudCwgQ2hhcnROb2RlPih0aGlzKTtcbiAgLy8gICBjb25zdCB0ZXh0V2lkdGggPSAodGV4dC5ub2RlKCkgYXMgU1ZHVGV4dEVsZW1lbnQpLmdldENvbXB1dGVkVGV4dExlbmd0aCgpO1xuICAvLyAgIGNvbnN0IGxpbmUgPSBkM1NlbGVjdDxTVkdMaW5lRWxlbWVudCwgQ2hhcnROb2RlPih0aGlzLm5leHRTaWJsaW5nIGFzIFNWR0xpbmVFbGVtZW50KTtcbiAgLy8gICBsaW5lXG4gIC8vICAgICAuY2xhc3NlZCgnZ3JvdXAtbGluZScsIHRydWUpXG4gIC8vICAgICAuYXR0cigneDEnLCB0ZXh0V2lkdGggKyBub2RlUGFkZGluZyAqIDIpXG4gIC8vICAgICAuYXR0cigneTEnLCBub2RlSGVpZ2h0IC8gMilcbiAgLy8gICAgIC5hdHRyKCd4MicsIChub2RlV2lkdGggKiA1KSAvIDcgLSBub2RlUGFkZGluZylcbiAgLy8gICAgIC5hdHRyKCd5MicsIG5vZGVIZWlnaHQgLyAyKVxuICAvLyAgICAgLmF0dHIoJ29wYWNpdHknLCAoZCkgPT4gKGQuX2dyb3VwT3BlbiA/IDAgOiBkLl9ncmV5ZWQgPyBncmV5ZWRPcGFjaXR5IDogMSkpO1xuICAvLyB9KTtcblxuICBjb25zdCBzZXRHcm91cEJ1dHRvblhZID0gKHNlbCkgPT5cbiAgICBzZWxcbiAgICAgIC5hdHRyKCd3aWR0aCcsIChub2RlV2lkdGggKiAyKSAvIDcpXG4gICAgICAuYXR0cignaGVpZ2h0JywgKGQpID0+IChkLl9ncm91cE9wZW4gPyBsaW5lSGVpZ2h0ICsgbm9kZVBhZGRpbmcgKiAyIDogbm9kZVBhZGRpbmcgKiAyICsgbGluZUhlaWdodCkpXG4gICAgICAuYXR0cigneCcsIChkKSA9PiAoZC5fZ3JvdXBPcGVuID8gKG5vZGVXaWR0aCAqIDIuNSkgLyA3IDogKG5vZGVXaWR0aCAqIDUpIC8gNyAtIG5vZGVQYWRkaW5nKSlcbiAgICAgIC5hdHRyKCd5JywgKGQpID0+XG4gICAgICAgIGQuX2dyb3VwT3BlblxuICAgICAgICAgID8gZ3JvdXBPdmVybGFwICsgKGdyb3VwTm9kZVNwYWNlIC0gKGxpbmVIZWlnaHQgKyBub2RlUGFkZGluZyAqIDIpKSAvIDJcbiAgICAgICAgICA6IG5vZGVQYWRkaW5nICsgbGluZUhlaWdodCAvIDJcbiAgICAgICk7XG5cbiAgZ3JvdXBzXG4gICAgLnNlbGVjdEFsbDxTVkdSZWN0RWxlbWVudCwgQ2hhcnROb2RlPignLmdyb3VwLWJ1dHRvbicpXG4gICAgLmNhbGwoc2V0R3JvdXBCdXR0b25YWSlcbiAgICAuc3R5bGUoJ3BvaW50ZXItZXZlbnRzJywgKGQpID0+IChkLl9ncmV5ZWQgPyAnbm9uZScgOiAnYXV0bycpKVxuICAgIC5zdHlsZSgnc3Ryb2tlLW9wYWNpdHknLCAoZCkgPT4gKGQuX2dyZXllZCA/IGdyZXllZE9wYWNpdHkgOiAxKSk7XG5cbiAgZ3JvdXBzXG4gICAgLnNlbGVjdEFsbDxTVkdUZXh0RWxlbWVudCwgQ2hhcnROb2RlPignLmdyb3VwLWJ1dHRvbi10ZXh0JylcbiAgICAudGV4dCgoZCkgPT4gKGQuX2dyb3VwT3BlbiA/ICdIaWRlJyA6ICdTaG93JykpXG4gICAgLmF0dHIoJ3gnLCAoZCkgPT4gKGQuX2dyb3VwT3BlbiA/IG5vZGVXaWR0aCAvIDIgOiAobm9kZVdpZHRoICogNikgLyA3IC0gbm9kZVBhZGRpbmcpKVxuICAgIC5hdHRyKCd5JywgKGQpID0+IChkLl9ncm91cE9wZW4gPyBub2RlTWFyZ2luICsgbGluZUhlaWdodCArIGxpbmVIZWlnaHQgLyAyIDogbm9kZUhlaWdodCAvIDIpKVxuICAgIC5hdHRyKCdmb250LXNpemUnLCAoZCkgPT4gYCR7Zm9udFNpemUgKiAxLjN9cHhgKTtcblxuICBzZWxlY3Rpb24uc2VsZWN0QWxsKCcuc2libGluZy1tYXNrJykucmVtb3ZlKCk7XG5cbiAgc2VsZWN0aW9uXG4gICAgLmZpbHRlcigoZCkgPT4gZC5fZ3JleWVkICYmICFkLmRhdGEuZ3JvdXApXG4gICAgLmFwcGVuZCgncmVjdCcpXG4gICAgLmNsYXNzZWQoJ25vZGUtb3BlbmFibGUnLCAoZCkgPT4gISFkLmhlaWdodClcbiAgICAuY2xhc3NlZCgnc2libGluZy1tYXNrIG1hc2stb3BlbmFibGUnLCB0cnVlKVxuICAgIC5jYWxsKHNldE5vZGVTaXplKTtcblxuICBzZWxlY3Rpb25cbiAgICAuZmlsdGVyKChkKSA9PiBkLl9ncmV5ZWQgJiYgZC5kYXRhLmdyb3VwKVxuICAgIC5hcHBlbmQoJ3JlY3QnKVxuICAgIC5jbGFzc2VkKCdzaWJsaW5nLW1hc2snLCB0cnVlKVxuICAgIC5jYWxsKHNldEdyb3VwQnV0dG9uWFkpO1xuXG4gIHJldHVybiBzZWxlY3Rpb247XG59O1xuXG5jb25zdCBlbnRlck5vZGVzID0gKHNlbGVjdGlvbjogTm9kZVNlbGVjdGlvbikgPT4ge1xuICBjb25zdCBub2RlcyA9IHNlbGVjdGlvbi5maWx0ZXIoKGQpID0+IGQuZGF0YS50eXBlICE9PSBDaGFydE5vZGVUeXBlLnJvb3QgJiYgIWQuZGF0YS5ncm91cCk7XG5cbiAgbm9kZXMuYXBwZW5kKCdyZWN0JykuY2xhc3NlZCgnbm9kZS1ib3gnLCB0cnVlKTtcblxuICBub2Rlc1xuICAgIC5hcHBlbmQoJ3RleHQnKVxuICAgIC5jbGFzc2VkKCdub2RlLWxhYmVsJywgdHJ1ZSlcbiAgICAudGV4dCgoeyBkYXRhIH0pID0+IGRhdGEubGFiZWwgKyAnICcgKyBkYXRhLnVuaXRzKVxuICAgIC5hdHRyKCdvcGFjaXR5JywgMCk7XG5cbiAgLy8gVGV4dCBlbGVtZW50cyBtdXN0IGJlIHJlbmRlcmVkIGJlZm9yZSB3ZSBjYW4gY2FsY3VsYXRlIHdyYXBwaW5nXG4gIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGNvbnN0IGxhYmVscyA9IG5vZGVzLnNlbGVjdEFsbDxTVkdUZXh0RWxlbWVudCwgQ2hhcnROb2RlPignLm5vZGUtbGFiZWwnKS5jYWxsKHdyYXApO1xuICAgIGxhYmVscy5hdHRyKCdvcGFjaXR5JywgMSk7XG4gIH0pO1xuXG4gIGNvbnN0IGdyb3VwcyA9IHNlbGVjdGlvbi5maWx0ZXIoKGQpID0+IGQuZGF0YS5ncm91cCk7XG5cbiAgZ3JvdXBzLmFwcGVuZCgncmVjdCcpLmF0dHIoJ2NsYXNzJywgJ2dyb3VwLWJvcmRlcicpO1xuICBncm91cHMuYXBwZW5kKCd0ZXh0JykuYXR0cignY2xhc3MnLCAnZ3JvdXAtbGFiZWwnKTtcbiAgLy8gZ3JvdXBzLmFwcGVuZCgnbGluZScpLmF0dHIoJ2NsYXNzJywgJ2dyb3VwLWxpbmUnKTtcbiAgZ3JvdXBzLmFwcGVuZCgncmVjdCcpLmF0dHIoJ2NsYXNzJywgJ2dyb3VwLWJ1dHRvbicpO1xuICBncm91cHMuYXBwZW5kKCd0ZXh0JykuYXR0cignY2xhc3MnLCAnZ3JvdXAtYnV0dG9uLXRleHQnKTtcblxuICBjb25zdCB3aXRoQmFyID0gbm9kZXMuZmlsdGVyKChkKSA9PiBkLmRhdGEuc2hvd0Jhcik7XG5cbiAgd2l0aEJhclxuICAgIC5maWx0ZXIoKGQpID0+IGQuZGF0YS5mcmFjdGlvbiA+IDApXG4gICAgLmFwcGVuZCgncmVjdCcpXG4gICAgLmNsYXNzZWQoJ2Jhci1iYWNrZ3JvdW5kJywgdHJ1ZSlcbiAgICAuYXR0cignd2lkdGgnLCBub2RlQ29udGVudFdpZHRoKVxuICAgIC5jYWxsKGZvcm1hdEJhcik7XG5cbiAgd2l0aEJhclxuICAgIC5hcHBlbmQoJ3JlY3QnKVxuICAgIC5jbGFzc2VkKCdiYXItZm9yZWdyb3VuZCcsIHRydWUpXG4gICAgLmNhbGwoZm9ybWF0QmFyKVxuICAgIC5hdHRyKCd3aWR0aCcsIChkKSA9PiBkLmRhdGEuZnJhY3Rpb24gKiBub2RlQ29udGVudFdpZHRoKVxuICAgIC5hdHRyKCdmaWxsJywgKGQpID0+IG5vZGVDb2xvdXJzW2QuZGF0YS50eXBlXSk7XG5cbiAgd2l0aEJhclxuICAgIC5hcHBlbmQoJ3RleHQnKVxuICAgIC5jbGFzc2VkKCdiYXItbGFiZWwnLCB0cnVlKVxuICAgIC50ZXh0KCh7IGRhdGEgfSkgPT5cbiAgICAgIGRhdGEuZnJhY3Rpb24gPT09IDBcbiAgICAgICAgPyAnbm8gY29udHJpYnV0aW9uJ1xuICAgICAgICA6IGAke01hdGgucm91bmQoMTAwICogZGF0YS5mcmFjdGlvbil9JSAke01hdGgucm91bmQoMTAwICogZGF0YS5mcmFjdGlvbikgPT09IDAgPyAnIChyb3VuZGVkKScgOiAnJ31gXG4gICAgKVxuICAgIC5hdHRyKCd0ZXh0LWFuY2hvcicsIChkKSA9PiAoZC5kYXRhLmZyYWN0aW9uID09PSAwID8gJ21pZGRsZScgOiBkLmRhdGEuZnJhY3Rpb24gPiAwLjcgPyAnZW5kJyA6ICdzdGFydCcpKVxuICAgIC5hdHRyKCd4JywgKGQpID0+XG4gICAgICBkLmRhdGEuZnJhY3Rpb24gPT09IDBcbiAgICAgICAgPyBub2RlV2lkdGggLyAyXG4gICAgICAgIDogZC5kYXRhLmZyYWN0aW9uICogbm9kZUNvbnRlbnRXaWR0aCArIG5vZGVQYWRkaW5nICsgKGQuZGF0YS5mcmFjdGlvbiA+IDAuNyA/IC00IDogNClcbiAgICApXG4gICAgLmF0dHIoJ3knLCBub2RlSGVpZ2h0IC0gbm9kZVBhZGRpbmcgLSBiYXJIZWlnaHQgLyAyKTtcblxuICByZXR1cm4gc2VsZWN0aW9uO1xufTtcblxuY29uc3QgbWVyZ2VkTGlua3MgPSAoc2VsZWN0aW9uOiBMaW5rU2VsZWN0aW9uLCB7IHRvZ2dsaW5nR3JvdXAsIHN3aXRjaGluZ1NlbGVjdGlvbiB9KSA9PlxuICBzZWxlY3Rpb25cbiAgICAuc3R5bGUoJ3N0cm9rZScsIChkKSA9PiB7XG4gICAgICBjb25zdCBjb2xvdXJzID0ge1xuICAgICAgICBbQ2hhcnROb2RlVHlwZS5taWRwb2ludF06IG5vZGVDb2xvdXJzW0NoYXJ0Tm9kZVR5cGUubWlkcG9pbnRdLFxuICAgICAgICBbQ2hhcnROb2RlVHlwZS5lbmRwb2ludF06IG5vZGVDb2xvdXJzW0NoYXJ0Tm9kZVR5cGUuZW5kcG9pbnRdLFxuICAgICAgICBbQ2hhcnROb2RlVHlwZS5lbWlzc2lvbl06IG5vZGVDb2xvdXJzW0NoYXJ0Tm9kZVR5cGUuZW1pc3Npb25dXG4gICAgICB9O1xuICAgICAgcmV0dXJuIChkLnRhcmdldC5fb3BlbiAmJiBjb2xvdXJzW2Quc291cmNlLmRhdGEudHlwZV0pIHx8IG51bGw7XG4gICAgfSlcbiAgICAuYXR0cignc3Ryb2tlLWRhc2hhcnJheScsIChkKSA9PiAoZC50YXJnZXQuZGF0YS5ncm91cCA/ICcyLDUnIDogbnVsbCkpXG4gICAgLmF0dHIoJ3N0cm9rZS13aWR0aCcsIChkKSA9PiAoZC50YXJnZXQuX29wZW4gPyAzIDogZC50YXJnZXQuX2dyb3VwT3BlbiA/IDAgOiAyKSlcbiAgICAuYXR0cignc3Ryb2tlLW9wYWNpdHknLCAoZCkgPT4gKGQudGFyZ2V0Ll9ncmV5ZWQgPyAwLjEgOiAwLjYpKVxuICAgIC50cmFuc2l0aW9uKClcbiAgICAuZHVyYXRpb24obGlua0R1cmF0aW9uKVxuICAgIC5kZWxheSgoZCkgPT4ge1xuICAgICAgY29uc3QgZ3JvdXBDbG9zaW5nID0gdG9nZ2xpbmdHcm91cCAmJiAhZC50YXJnZXQucGFyZW50Py5jaGlsZHJlbj8uZmluZCgobikgPT4gbi5kYXRhLmdyb3VwKT8uX2dyb3VwT3BlbjtcbiAgICAgIHJldHVybiBncm91cENsb3NpbmdcbiAgICAgICAgPyBncm91cERlbGF5XG4gICAgICAgIDogKHN3aXRjaGluZ1NlbGVjdGlvbiA/IG5vZGVEdXJhdGlvbiA6IDApICsgZC5zb3VyY2UuY2hpbGRyZW4/LmluZGV4T2YoZC50YXJnZXQpICogMTA7XG4gICAgfSlcbiAgICAuYXR0cignb3BhY2l0eScsIDEpXG4gICAgLmF0dHIoJ2QnLCAoZCkgPT4ge1xuICAgICAgY29uc3QgdGFyZ2V0RHkgPSBkLnRhcmdldC5fZ3JvdXBPcGVuID8gbm9kZVBhZGRpbmcgKyBsaW5lSGVpZ2h0IC8gMiArIG5vZGVNYXJnaW4gKiAyIDogbm9kZUhlaWdodCAvIDI7XG4gICAgICByZXR1cm4gZDNMaW5rSG9yaXpvbnRhbCgpKHtcbiAgICAgICAgc291cmNlOiBbZC5zb3VyY2UueSArIG5vZGVXaWR0aCwgZC5zb3VyY2UueCArIG5vZGVIZWlnaHQgLyAyXSxcbiAgICAgICAgdGFyZ2V0OiBbZC50YXJnZXQueSwgZC50YXJnZXQueCArIHRhcmdldER5XVxuICAgICAgfSk7XG4gICAgfSk7XG5cbmNvbnN0IGdyb3VwQnlQZXJjZW50YWdlID0gKG5vZGUpID0+XG4gIFtDaGFydE5vZGVUeXBlLmVuZHBvaW50LCBDaGFydE5vZGVUeXBlLm1pZHBvaW50LCBDaGFydE5vZGVUeXBlLmVtaXNzaW9uXS5pbmNsdWRlcyhub2RlLmRhdGEudHlwZSk7XG5cbmNvbnN0IGdyb3VwUGVyY2VudGFnZSA9IChub2RlLCBwZXJjZW50YWdlID0gMC4wMikgPT4ge1xuICBjb25zdCBncm91cGVkID0gbm9kZS5fY2hpbGRyZW4/LmZpbHRlcigoY2hpbGQpID0+IGNoaWxkLmRhdGEuZnJhY3Rpb24gPCBwZXJjZW50YWdlKTtcbiAgaWYgKG5vZGUuX2NoaWxkcmVuPy5sZW5ndGggPiA2ICYmIGdyb3VwZWQ/Lmxlbmd0aCA+IDEpIHtcbiAgICBjb25zdCB0eXBlID0gbm9kZS5fY2hpbGRyZW5bMF0uZGF0YS50eXBlO1xuICAgIGNvbnN0IGdyb3VwTm9kZSA9IHtcbiAgICAgIC4uLmQzSGllcmFyY2h5KHtcbiAgICAgICAgaWQ6IGAke3R5cGV9LWdyb3VwYCxcbiAgICAgICAgbGFiZWw6IGAke2dyb3VwZWQubGVuZ3RofSBtb3JlIHVuZGVyICR7TWF0aC5yb3VuZChwZXJjZW50YWdlICogMTAwKX0lLmAsXG4gICAgICAgIHdlaWdodGVkVmFsdWU6IG51bGwsXG4gICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICB0eXBlLFxuICAgICAgICBncm91cDogdHJ1ZVxuICAgICAgfSksXG4gICAgICBkZXB0aDogbm9kZS5kZXB0aCArIDEsXG4gICAgICBoZWlnaHQ6IDEsXG4gICAgICBwYXJlbnQ6IG5vZGVcbiAgICB9O1xuICAgIGNvbnN0IG5vdEdyb3VwZWQgPSBub2RlLl9jaGlsZHJlbj8uZmlsdGVyKChjaGlsZCkgPT4gY2hpbGQuZGF0YS5mcmFjdGlvbiA+PSBwZXJjZW50YWdlKTtcbiAgICBub2RlLl9jaGlsZHJlbi5zcGxpY2Uobm90R3JvdXBlZC5sZW5ndGgsIDAsIGdyb3VwTm9kZSk7XG4gICAgbm90R3JvdXBlZC5wdXNoKGdyb3VwTm9kZSk7XG4gICAgbm9kZS5fZ3JvdXBDaGlsZHJlbiA9IG5vZGUuX2NoaWxkcmVuO1xuICAgIG5vZGUuX2NoaWxkcmVuID0gbm90R3JvdXBlZDtcbiAgfVxufTtcblxuY29uc3Qgc2hvd0JhciA9IChub2RlKSA9PlxuICBbXG4gICAgbm9kZS5wYXJlbnQ/LmRhdGEudHlwZSAhPT0gQ2hhcnROb2RlVHlwZS5yb290LFxuICAgIG5vZGUucGFyZW50Py5kYXRhLmlkICE9PSBub25MQ0FJbmRpY2F0b3JzSWQsXG4gICAgIW5vZGUuZGF0YS5ncm91cCxcbiAgICBub2RlLmRhdGEuZnJhY3Rpb24gPj0gMFxuICBdLmV2ZXJ5KEJvb2xlYW4pO1xuXG5jb25zdCBnZXRVbml0c0FuZExhYmVsID0gKHRlcm06IFBhcnRpYWw8SVRlcm1KU09OTEQ+LCBmYWxsYmFja0xhYmVsID0gJ3Vua25vd24gdGVybScpID0+IHtcbiAgY29uc3QgbGFiZWwgPSB0ZXJtPy5uYW1lIHx8IHRlcm0/LlsnQGlkJ10gfHwgZmFsbGJhY2tMYWJlbDtcbiAgY29uc3QgdW5pdHMgPSBgKCR7dGVybT8udW5pdHMgfHwgJ3Vua25vd24gdW5pdHMnfSlgO1xuICByZXR1cm4geyBsYWJlbDogbGFiZWwucmVwbGFjZSh1bml0cywgJycpLnRyaW0oKSwgdGVybTogbGFiZWwsIHVuaXRzIH07XG59O1xuXG5jb25zdCBxdWVyeSA9IChzaG91bGQpID0+ICh7XG4gIGZpZWxkczogWydAdHlwZScsICdAaWQnLCAnbmFtZScsICd1bml0cycsICd0ZXJtVHlwZSddLFxuICBsaW1pdDogMTAwMDAsXG4gIHF1ZXJ5OiB7XG4gICAgYm9vbDoge1xuICAgICAgbXVzdDogW21hdGNoVHlwZShOb2RlVHlwZS5UZXJtKV0sXG4gICAgICBzaG91bGQsXG4gICAgICBtaW5pbXVtX3Nob3VsZF9tYXRjaDogMVxuICAgIH1cbiAgfVxufSk7XG5cbnR5cGUgVGVybSA9IElUZXJtSlNPTkxEICYgSVNlYXJjaFJlc3VsdEV4dGVuZGVkICYgeyBkb2NzPzogc3RyaW5nIH07XG5cbmNvbnN0IGxlZ2VuZCA9IFtcbiAgeyB0eXBlOiBDaGFydE5vZGVUeXBlLmVuZHBvaW50LCBtb2JpbGVUZXh0OiAnRW5kcG9pbnQnLCB0ZXh0OiAnRW5kcG9pbnQgSW5kaWNhdG9yJyB9LFxuICB7IHR5cGU6IENoYXJ0Tm9kZVR5cGUubWlkcG9pbnQsIHRleHQ6ICdDaGFyYWN0ZXJpc2VkIEluZGljYXRvcicsIG1vYmlsZVRleHQ6ICdJbXBhY3QnIH0sXG4gIHsgdHlwZTogQ2hhcnROb2RlVHlwZS5lbWlzc2lvbiwgbW9iaWxlVGV4dDogJ0VtaXNzaW9uJywgdGV4dDogJ0VtaXNzaW9uIG9yIFJlc291cmNlIFVzZScgfSxcbiAgeyB0eXBlOiBDaGFydE5vZGVUeXBlLmlucHV0LCB0ZXh0OiAnSW5wdXQnLCBtb2JpbGVUZXh0OiAnSW5wdXQnIH0sXG4gIHsgdHlwZTogQ2hhcnROb2RlVHlwZS5vcGVyYXRpb24sIHRleHQ6ICdPcGVyYXRpb24nLCBtb2JpbGVUZXh0OiAnT3BlcmF0aW9uJyB9XG5dO1xuXG5jb25zdCB3YXJuaW5ncyA9IChsb2dzOiBJTG9nW10sIHRlcm1zOiB7IFtpZDogc3RyaW5nXTogVGVybSB9KSA9PiBbXG4gICFsb2dzLmV2ZXJ5KGxvZyA9PiB0ZXJtc1tsb2cuaW5kaWNhdG9yXSAmJiB0ZXJtc1tsb2cuY29udHJpYnV0b3JdKSAmJiAnbWlzc2luZy10ZXJtcydcbl0uZmlsdGVyKEJvb2xlYW4pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1pbXBhY3QtYXNzZXNzbWVudHMtZ3JhcGgnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW1wYWN0LWFzc2Vzc21lbnRzLWdyYXBoLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW1wYWN0LWFzc2Vzc21lbnRzLWdyYXBoLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSW1wYWN0QXNzZXNzbWVudHNHcmFwaENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGluaXRpYWxUZXJtczogeyBbaWQ6IHN0cmluZ106IFRlcm0gfTtcbiAgcHJpdmF0ZSBhbGxUZXJtczogeyBbaWQ6IHN0cmluZ106IFRlcm0gfTtcblxuICBwcml2YXRlIHJvb3Q/OiBITm9kZTtcbiAgcHJpdmF0ZSBub2RlOiBOb2RlU2VsZWN0aW9uO1xuICBwcml2YXRlIGxpbms6IExpbmtTZWxlY3Rpb247XG4gIHByaXZhdGUgc3ZnOiBTZWxlY3Rpb248U1ZHU1ZHRWxlbWVudCwgYW55LCBIVE1MRWxlbWVudCwgdW5rbm93bj47XG4gIHByaXZhdGUgeU1pbjogbnVtYmVyO1xuICBwcml2YXRlIHlUb3RhbDogbnVtYmVyO1xuICBwcml2YXRlIGxvZ3NBbGxNb2RlbHM6IElMb2dbXTtcblxuICBAVmlld0NoaWxkKCdjaGFydCcpXG4gIHByaXZhdGUgY2hhcnRSZWY/OiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ3QnKVxuICBwcml2YXRlIHRvb2x0aXBPcGVyYXRvcj86IE5nYlBvcG92ZXI7XG5cbiAgQElucHV0KClcbiAgcHJpdmF0ZSBpbXBhY3RBc3Nlc3NtZW50czogSUltcGFjdEFzc2Vzc21lbnRKU09OTERbXSA9IFtdO1xuICBASW5wdXQoKVxuICBwcml2YXRlIGRhdGFTdGF0ZSA9IERhdGFTdGF0ZS5yZWNhbGN1bGF0ZWQ7XG5cbiAgcHVibGljIGxvYWRpbmcgPSB0cnVlO1xuICBwdWJsaWMgbm9kZUNvbG91cnMgPSBub2RlQ29sb3VycztcbiAgcHVibGljIG5vRGF0YSA9IGZhbHNlO1xuICBwdWJsaWMgZXJyb3I/OiBhbnk7XG4gIHB1YmxpYyB3YXJuaW5nczogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIHNob3dXYXJuaW5ncyA9IGZhbHNlO1xuICBwdWJsaWMgc2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50SWQ6IHN0cmluZztcbiAgcHVibGljIGZpbHRlcmVkSW1wYWN0QXNzZXNzbWVudHM6IElJbXBhY3RBc3Nlc3NtZW50SlNPTkxEW107XG4gIHB1YmxpYyBzZWxlY3RlZE1vZGVsSWQ6IHN0cmluZztcbiAgcHVibGljIG1vZGVsczogUGFydGlhbDxJVGVybUpTT05MRD5bXTtcbiAgcHVibGljIGxlZ2VuZCA9IGxlZ2VuZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogSGVTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgbm9kZVNlcnZpY2U6IEhlTm9kZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbmdpbmVTZXJ2aWNlOiBIZUVuZ2luZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHJldHVybiB0aGlzLmluaXRJbXBhY3RBc3Nlc3NtZW50cygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVsb2FkQ2hhcnQoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoJ2ltcGFjdEFzc2Vzc21lbnRzJyBpbiBjaGFuZ2VzKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZEltcGFjdEFzc2Vzc21lbnRJZCA9IHRoaXMuc2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50SWQ7XG4gICAgICB0aGlzLmluaXRJbXBhY3RBc3Nlc3NtZW50cygpO1xuICAgICAgLy8gb25seSByZWxvYWQgdGhlIGNoYXJ0IGlmIHRoZSBzZWxlY3QgSUEgaGFzIGNoYW5nZWRcbiAgICAgIHNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudElkICE9PSB0aGlzLnNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudElkICYmIHRoaXMucmVsb2FkQ2hhcnQoKTtcbiAgICB9XG4gICAgaWYgKCdkYXRhU3RhdGUnIGluIGNoYW5nZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbG9hZENoYXJ0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0SW1wYWN0QXNzZXNzbWVudHMoKSB7XG4gICAgdGhpcy5maWx0ZXJlZEltcGFjdEFzc2Vzc21lbnRzID0gdGhpcy5pbXBhY3RBc3Nlc3NtZW50cy5maWx0ZXIoKGlhKSA9PiBpYS5lbmRwb2ludHM/Lmxlbmd0aCB8fCBpYS5pbXBhY3RzPy5sZW5ndGgpO1xuICAgIHRoaXMuc2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50SWQgPSB0aGlzLnNlbGVjdGVkSW1wYWN0QXNzZXNzbWVudElkIHx8IHRoaXMuZmlsdGVyZWRJbXBhY3RBc3Nlc3NtZW50cz8uWzBdPy5bJ0BpZCddO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkSW5pdGlhbFRlcm1zKCkge1xuICAgIGNvbnN0IHsgcmVzdWx0czogdGVybXMgfSA9IGF3YWl0IHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2g8SVRlcm1KU09OTEQsIE5vZGVUeXBlLlRlcm0+KFxuICAgICAgcXVlcnkoZmlsdGVyVGVybVR5cGVzLm1hcCgodGVybVR5cGUpID0+IG1hdGNoVGVybVR5cGUodGVybVR5cGUpKSlcbiAgICApO1xuICAgIGNvbnN0IGF1Z21lbnRlZFRlcm1zID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB0ZXJtcy5tYXAoYXN5bmMgKHQ6IFRlcm0pID0+IHtcbiAgICAgICAgaWYgKHQudGVybVR5cGUgPT09ICdtb2RlbCcpIHtcbiAgICAgICAgICBjb25zdCBtb2RlbCA9IGF3YWl0IHRoaXMuZW5naW5lU2VydmljZS5tb2RlbCh7IG1vZGVsOiB0WydAaWQnXSB9KTtcbiAgICAgICAgICB0LmRvY3MgPSBtb2RlbD8uYXBpRG9jc1BhdGggfHwgbW9kZWw/LmRvY1BhdGggfHwgbW9kZWw/LnBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5pbml0aWFsVGVybXMgPSBPYmplY3QuZnJvbUVudHJpZXMoYXVnbWVudGVkVGVybXMubWFwKCh0ZXJtKSA9PiBbdGVybVsnQGlkJ10sIHRlcm1dKSk7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbFRlcm1zO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkTG9nVGVybXMobG9nczogSUxvZ1tdKSB7XG4gICAgY29uc3QgaW5wdXRJZHMgPSB1bmlxdWUobG9ncy5mbGF0TWFwKChsKSA9PiBbbC5jb250cmlidXRvciwgbC5pbmRpY2F0b3JdKS5maWx0ZXIoKHRlcm1JZCkgPT4gIXRoaXMuaW5pdGlhbFRlcm1zW3Rlcm1JZF0pKTtcbiAgICBjb25zdCB7IHJlc3VsdHM6IGlucHV0cyB9ID0gYXdhaXQgdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaDxJVGVybUpTT05MRCwgTm9kZVR5cGUuVGVybT4oXG4gICAgICBxdWVyeShpbnB1dElkcy5tYXAoKGlkKSA9PiBtYXRjaEV4YWN0UXVlcnkoJ0BpZCcsIGlkKSkpXG4gICAgKTtcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKGlucHV0cy5tYXAoKHRlcm0pID0+IFt0ZXJtWydAaWQnXSwgdGVybV0pKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNSZWNhbGN1bGF0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVN0YXRlID09PSBEYXRhU3RhdGUucmVjYWxjdWxhdGVkO1xuICB9XG5cbiAgcHVibGljIHJlbG9hZENoYXJ0KCkge1xuICAgIGlmICghdGhpcy5pc1JlY2FsY3VsYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGltcGFjdEFzc2Vzc21lbnQgPVxuICAgICAgdGhpcy5maWx0ZXJlZEltcGFjdEFzc2Vzc21lbnRzLmZpbmQoKGlhKSA9PiBpYVsnQGlkJ10gPT09IHRoaXMuc2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50SWQpIHx8XG4gICAgICB0aGlzLmZpbHRlcmVkSW1wYWN0QXNzZXNzbWVudHNbMF07XG4gICAgY29uc3QgaW5kaWNhdG9ycyA9IFtcbiAgICAgIC4uLihpbXBhY3RBc3Nlc3NtZW50Py5lbmRwb2ludHMgfHwgW10pLFxuICAgICAgLi4uKGltcGFjdEFzc2Vzc21lbnQ/LmltcGFjdHMgfHwgW10pXG4gICAgXTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gb2YoaW1wYWN0QXNzZXNzbWVudClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4gKHRoaXMubG9hZGluZyA9IHRydWUpKSxcbiAgICAgICAgbWVyZ2VNYXAobm9kZSA9PiAodGhpcy5pbml0aWFsVGVybXMgPyBvZihub2RlKSA6IGZyb20odGhpcy5sb2FkSW5pdGlhbFRlcm1zKCkpLnBpcGUobWFwKCgpID0+IG5vZGUpKSkpLFxuICAgICAgICBtZXJnZU1hcChub2RlID0+XG4gICAgICAgICAgdGhpcy5ub2RlU2VydmljZS5nZXRMb2coe1xuICAgICAgICAgICAgLi4ubm9kZSxcbiAgICAgICAgICAgIGRhdGFTdGF0ZTogRGF0YVN0YXRlLnJlY2FsY3VsYXRlZFxuICAgICAgICAgIH0pXG4gICAgICAgICksXG4gICAgICAgIG1hcCgodmFsdWUpID0+ICh2YWx1ZSA/IHBhcnNlTGluZXModmFsdWUpIDogW10pKSxcbiAgICAgICAgbWVyZ2VBbGwoKSxcbiAgICAgICAgZmlsdGVyKCh7IGRhdGEgfSkgPT4gZGF0YS5sb2dnZXIgPT09ICdoZXN0aWFfZWFydGgubW9kZWxzJyAmJiBkYXRhLmxldmVsID09PSBMZXZlbC5kZWJ1ZyksXG4gICAgICAgIG1hcCgoeyBkYXRhIH0pID0+IHBhcnNlTWVzc2FnZShkYXRhLm1lc3NhZ2UpKSxcbiAgICAgICAgZmlsdGVyKChtZXNzYWdlKSA9PiAnbm9kZScgaW4gbWVzc2FnZSksXG4gICAgICAgIG1hcChwYXJzZUxvZyksXG4gICAgICAgIGZpbHRlcigobG9nKSA9PiBbXG4gICAgICAgICAgISFsb2cuaW5kaWNhdG9yLFxuICAgICAgICAgICEhbG9nLmNvbnRyaWJ1dG9yLFxuICAgICAgICAgICFpc05hTihsb2cud2VpZ2h0ZWRWYWx1ZSksXG4gICAgICAgICAgbG9nLmNvZWZmaWNpZW50ID4gMCxcbiAgICAgICAgICBpbmRpY2F0b3JzLnNvbWUoKGVydSkgPT4gZXJ1LnRlcm1bJ0BpZCddID09PSBsb2cuaW5kaWNhdG9yKVxuICAgICAgICBdLmV2ZXJ5KEJvb2xlYW4pKSxcbiAgICAgICAgZ3JvdXBCeSgobG9nKSA9PiBbbG9nLmluZGljYXRvciwgbG9nLmNvbnRyaWJ1dG9yLCBsb2cubW9kZWxJZF0uam9pbignLycpKSxcbiAgICAgICAgbWVyZ2VNYXAoKGdyb3VwKSA9PiBncm91cC5waXBlKHRvQXJyYXkoKSkpLFxuICAgICAgICBtYXAoKHZhbHVlczogSUxvZ1tdKSA9PiB7XG4gICAgICAgICAgY29uc3QgbG9nID0gdmFsdWVzWzBdO1xuICAgICAgICAgIGNvbnN0IHsgd2VpZ2h0ZWRUb3RhbCwgdG90YWwgfSA9IHZhbHVlcy5yZWR1Y2UoXG4gICAgICAgICAgICAocHJldiwgY3VycikgPT4gKHtcbiAgICAgICAgICAgICAgd2VpZ2h0ZWRUb3RhbDogcHJldi53ZWlnaHRlZFRvdGFsICsgY3Vyci53ZWlnaHRlZFZhbHVlLFxuICAgICAgICAgICAgICB0b3RhbDogcHJldi50b3RhbCArIGN1cnIudmFsdWVcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgeyB3ZWlnaHRlZFRvdGFsOiAwLCB0b3RhbDogMCB9XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IGlucHV0c09iaiA9IChpbXBhY3RBc3Nlc3NtZW50LmVtaXNzaW9uc1Jlc291cmNlVXNlIHx8IFtdKVxuICAgICAgICAgICAgLmZpbHRlcigoZXJ1KSA9PiBlcnUudGVybVsnQGlkJ10gPT09IGxvZy5jb250cmlidXRvciAmJiBlcnUuaW5wdXRzPy5sZW5ndGgpXG4gICAgICAgICAgICAucmVkdWNlKChhY2MsIGVydSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBpbnB1dElkID0gZXJ1LmlucHV0cy5tYXAoKGkpID0+IGlbJ0BpZCddKS5qb2luKCc7Jyk7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRPcGVyYXRpb25zID0gZXJ1Lm9wZXJhdGlvblxuICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQ6IGVydS5vcGVyYXRpb25bJ0BpZCddLFxuICAgICAgICAgICAgICAgICAgICAgIC4uLmdldFVuaXRzQW5kTGFiZWwoZXJ1Lm9wZXJhdGlvbiksXG4gICAgICAgICAgICAgICAgICAgICAgbW9kZWxJZDogbG9nLm1vZGVsSWQsXG4gICAgICAgICAgICAgICAgICAgICAgd2VpZ2h0ZWRWYWx1ZTogZXJ1LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICA6IFtdO1xuXG4gICAgICAgICAgICAgIGFjY1tpbnB1dElkXSA9IGFjY1tpbnB1dElkXVxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAuLi5hY2NbaW5wdXRJZF0sXG4gICAgICAgICAgICAgICAgICAgIHdlaWdodGVkVmFsdWU6IGFjY1tpbnB1dElkXS53ZWlnaHRlZFZhbHVlICsgZXJ1LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBtb2RlbElkOiBsb2cubW9kZWxJZCxcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uczogWy4uLmFjY1tpbnB1dElkXS5vcGVyYXRpb25zLCAuLi5jdXJyZW50T3BlcmF0aW9uc11cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGlucHV0SWQsXG4gICAgICAgICAgICAgICAgICAgIC4uLmdldFVuaXRzQW5kTGFiZWwoXG4gICAgICAgICAgICAgICAgICAgICAgZXJ1LmlucHV0cy5sZW5ndGggPT09IDEgPyBlcnUuaW5wdXRzWzBdIDogeyBuYW1lOiAnSW5wdXQgZ3JvdXAgKHVuZGVyIGRldmVsb3BtZW50KScgfVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBtb2RlbElkOiBsb2cubW9kZWxJZCxcbiAgICAgICAgICAgICAgICAgICAgd2VpZ2h0ZWRWYWx1ZTogZXJ1LnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zOiBbLi4uY3VycmVudE9wZXJhdGlvbnNdXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSwge30pO1xuICAgICAgICAgIGNvbnN0IGlucHV0czogSUlucHV0TG9nW10gPSBPYmplY3QudmFsdWVzKGlucHV0c09iaik7XG4gICAgICAgICAgcmV0dXJuIHsgLi4ubG9nLCB3ZWlnaHRlZFZhbHVlOiB3ZWlnaHRlZFRvdGFsLCB2YWx1ZTogdG90YWwsIGlucHV0cyB9IGFzIElMb2c7XG4gICAgICAgIH0pLFxuICAgICAgICB0b0FycmF5KCksXG4gICAgICAgIG1lcmdlTWFwKChsb2dzKSA9PiBmcm9tKHRoaXMubG9hZExvZ1Rlcm1zKGxvZ3MpKS5waXBlKFxuICAgICAgICAgIG1hcChsb2dUZXJtcyA9PiB7XG4gICAgICAgICAgICB0aGlzLmFsbFRlcm1zID0geyAuLi50aGlzLmluaXRpYWxUZXJtcywgLi4ubG9nVGVybXMgfTtcbiAgICAgICAgICAgIHJldHVybiBsb2dzO1xuICAgICAgICAgIH0pXG4gICAgICAgICkpLFxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgdGhpcy5lcnJvciA9IGVycjtcbiAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKCgpID0+ICh0aGlzLmxvYWRpbmcgPSBmYWxzZSkpLFxuICAgICAgICB0YXAoKGxvZ3MpID0+ICh0aGlzLm5vRGF0YSA9ICFsb2dzLmxlbmd0aCkpLFxuICAgICAgICB0YXAoKGxvZ3M6IElMb2dbXSkgPT4ge1xuICAgICAgICAgIHRoaXMud2FybmluZ3MgPSB3YXJuaW5ncyhsb2dzLCB0aGlzLmFsbFRlcm1zKTtcbiAgICAgICAgICB0aGlzLnNob3dXYXJuaW5ncyA9IHRoaXMud2FybmluZ3MubGVuZ3RoID4gMDtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGxvZ3M6IElMb2dbXSkgPT4ge1xuICAgICAgICB0aGlzLnJvb3QgPSBudWxsO1xuICAgICAgICB0aGlzLm5vZGUgPSBudWxsO1xuICAgICAgICB0aGlzLmxpbmsgPSBudWxsO1xuICAgICAgICBjb25zdCBoYXNEZWZhdWx0TW9kZWxMb2dzID0gbG9ncy5zb21lKChsb2cpID0+IGxvZy5tb2RlbElkID09PSBnZXREZWZhdWx0TW9kZWxJZChsb2cuaW5kaWNhdG9yKSk7XG4gICAgICAgIHRoaXMubW9kZWxzID0gW1xuICAgICAgICAgIC4uLihoYXNEZWZhdWx0TW9kZWxMb2dzXG4gICAgICAgICAgICA/IFt7ICdAaWQnOiBkZWZhdWx0SW5kaWNhdG9yc01vZGVsSWQsIG5hbWU6IGRlZmF1bHRJbmRpY2F0b3JzTW9kZWxOYW1lIH1dXG4gICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICAuLi51bmlxdWUobG9ncy5tYXAoKHsgbW9kZWxJZCB9KSA9PiB0aGlzLmFsbFRlcm1zW21vZGVsSWRdIHx8IHsgJ0BpZCc6IG1vZGVsSWQgfSkpXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNb2RlbElkID0gdGhpcy5tb2RlbHM/LlswXT8uWydAaWQnXTtcbiAgICAgICAgaWYgKGxvZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5sb2dzQWxsTW9kZWxzID0gbG9ncztcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluaXRDaGFydCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0Q2hhcnQoKSB7XG4gICAgY29uc3QgbG9ncyA9IHRoaXMubG9nc0FsbE1vZGVscy5maWx0ZXIoXG4gICAgICAobG9nKSA9PlxuICAgICAgICBsb2cubW9kZWxJZCA9PT1cbiAgICAgICAgKHRoaXMuc2VsZWN0ZWRNb2RlbElkID09PSBkZWZhdWx0SW5kaWNhdG9yc01vZGVsSWQgPyBnZXREZWZhdWx0TW9kZWxJZChsb2cuaW5kaWNhdG9yKSA6IHRoaXMuc2VsZWN0ZWRNb2RlbElkKVxuICAgICk7XG4gICAgY29uc3QgdG90YWxzUGVySW5kaWNhdG9yID0gbG9ncy5yZWR1Y2UoKGFjYywgbG9nKSA9PiB7XG4gICAgICBhY2NbbG9nLmluZGljYXRvcl0gPSAoYWNjW2xvZy5pbmRpY2F0b3JdIHx8IDApICsgbG9nLndlaWdodGVkVmFsdWU7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcbiAgICBjb25zdCBpbmRpY2F0b3JzOiB7IFtpZDogc3RyaW5nXTogTm9kZURhdHVtIH0gPSBsb2dzLnJlZHVjZSgoYWNjLCBsb2cpID0+IHtcbiAgICAgIGNvbnN0IHR5cGVNYXBwaW5nID0ge1xuICAgICAgICBbVGVybVRlcm1UeXBlLmVuZHBvaW50SW5kaWNhdG9yXTogQ2hhcnROb2RlVHlwZS5lbmRwb2ludCxcbiAgICAgICAgW1Rlcm1UZXJtVHlwZS5jaGFyYWN0ZXJpc2VkSW5kaWNhdG9yXTogQ2hhcnROb2RlVHlwZS5taWRwb2ludCxcbiAgICAgICAgW1Rlcm1UZXJtVHlwZS5lbWlzc2lvbl06IENoYXJ0Tm9kZVR5cGUuZW1pc3Npb24sXG4gICAgICAgIFtUZXJtVGVybVR5cGUucmVzb3VyY2VVc2VdOiBDaGFydE5vZGVUeXBlLmVtaXNzaW9uLFxuICAgICAgICBbVGVybVRlcm1UeXBlLm9wZXJhdGlvbl06IENoYXJ0Tm9kZVR5cGUub3BlcmF0aW9uXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjb250cmlidXRvclR5cGUgPSB0eXBlTWFwcGluZ1t0aGlzLmFsbFRlcm1zW2xvZy5jb250cmlidXRvcl0/LnRlcm1UeXBlXSB8fCBDaGFydE5vZGVUeXBlLmlucHV0O1xuICAgICAgY29uc3QgaW5kaWNhdG9yVHlwZSA9IHR5cGVNYXBwaW5nW3RoaXMuYWxsVGVybXNbbG9nLmluZGljYXRvcl0/LnRlcm1UeXBlXTtcbiAgICAgIGNvbnN0IGNvbnRyaWJ1dG9yTm9kZSA9IHtcbiAgICAgICAgaWQ6IGxvZy5jb250cmlidXRvcixcbiAgICAgICAgLi4uZ2V0VW5pdHNBbmRMYWJlbCh0aGlzLmFsbFRlcm1zW2xvZy5jb250cmlidXRvcl0sIGxvZy5jb250cmlidXRvciksXG4gICAgICAgIHR5cGU6IGNvbnRyaWJ1dG9yVHlwZSxcbiAgICAgICAgdmFsdWU6IGxvZy52YWx1ZSxcbiAgICAgICAgd2VpZ2h0ZWRWYWx1ZTogbG9nLndlaWdodGVkVmFsdWUsXG4gICAgICAgIG1vZGVsSWQ6IGxvZy5tb2RlbElkLFxuICAgICAgICBmcmFjdGlvbjogbG9nLndlaWdodGVkVmFsdWUgLyB0b3RhbHNQZXJJbmRpY2F0b3JbbG9nLmluZGljYXRvcl0sXG4gICAgICAgIGNoaWxkcmVuOlxuICAgICAgICAgIGNvbnRyaWJ1dG9yVHlwZSA9PT0gQ2hhcnROb2RlVHlwZS5lbWlzc2lvblxuICAgICAgICAgICAgPyBsb2cuaW5wdXRzLm1hcCgoaSkgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5pLFxuICAgICAgICAgICAgICAgIHR5cGU6IENoYXJ0Tm9kZVR5cGUuaW5wdXQsXG4gICAgICAgICAgICAgICAgZnJhY3Rpb246IGkud2VpZ2h0ZWRWYWx1ZSAvIGxvZy52YWx1ZSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogaS5vcGVyYXRpb25zLm1hcCgobykgPT4gKHtcbiAgICAgICAgICAgICAgICAgIC4uLm8sXG4gICAgICAgICAgICAgICAgICB0eXBlOiBDaGFydE5vZGVUeXBlLm9wZXJhdGlvbixcbiAgICAgICAgICAgICAgICAgIGZyYWN0aW9uOiBvLndlaWdodGVkVmFsdWUgLyBpLndlaWdodGVkVmFsdWVcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICA6IFtdXG4gICAgICB9O1xuXG4gICAgICBhY2NbbG9nLmluZGljYXRvcl1cbiAgICAgICAgPyBhY2NbbG9nLmluZGljYXRvcl0uY2hpbGRyZW4ucHVzaChjb250cmlidXRvck5vZGUpXG4gICAgICAgIDogKGFjY1tsb2cuaW5kaWNhdG9yXSA9IHtcbiAgICAgICAgICAgIGlkOiBsb2cuaW5kaWNhdG9yLFxuICAgICAgICAgICAgLi4uZ2V0VW5pdHNBbmRMYWJlbCh0aGlzLmFsbFRlcm1zW2xvZy5pbmRpY2F0b3JdLCBsb2cuaW5kaWNhdG9yKSxcbiAgICAgICAgICAgIG1vZGVsSWQ6IGxvZy5tb2RlbElkLFxuICAgICAgICAgICAgdHlwZTogaW5kaWNhdG9yVHlwZSxcbiAgICAgICAgICAgIHZhbHVlOiB0b3RhbHNQZXJJbmRpY2F0b3JbbG9nLmluZGljYXRvcl0sXG4gICAgICAgICAgICBjaGlsZHJlbjogW2NvbnRyaWJ1dG9yTm9kZV1cbiAgICAgICAgICB9KTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICAgIGNvbnN0IGluZGljYXRvckFycmF5ID0gT2JqZWN0LnZhbHVlcyhpbmRpY2F0b3JzKTtcbiAgICBjb25zdCBsaW5rZWRJbmRpY2F0b3JzID0gaW5kaWNhdG9yQXJyYXlcbiAgICAgIC8vIGxpbmsgZW5kcG9pbnRzIHRvIG1pZHBvaW50cyBhbmQgbWlkcG9pbnRzIHRvIGFueSBjaGlsZCBtaWRwb2ludHNcbiAgICAgIC5tYXAoKGluZGljYXRvcikgPT4gKHtcbiAgICAgICAgLi4uaW5kaWNhdG9yLFxuICAgICAgICBjaGlsZHJlbjogaW5kaWNhdG9yLmNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IHtcbiAgICAgICAgICBjb25zdCBwcmVmaXhSZW1vdmVkID0gaW5kaWNhdG9yLnR5cGUgPT09IENoYXJ0Tm9kZVR5cGUuZW5kcG9pbnQgJiYgY2hpbGQubGFiZWwuc3BsaXQoJywgJylbMV07XG4gICAgICAgICAgcmV0dXJuIGNoaWxkLnR5cGUgPT09IENoYXJ0Tm9kZVR5cGUubWlkcG9pbnRcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBwcmVmaXhSZW1vdmVkXG4gICAgICAgICAgICAgICAgICA/ICdbLi4uXScgKyBwcmVmaXhSZW1vdmVkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcHJlZml4UmVtb3ZlZC5zbGljZSgxKVxuICAgICAgICAgICAgICAgICAgOiBjaGlsZC5sYWJlbCxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogaW5kaWNhdG9yc1tjaGlsZC5pZF0/LmNoaWxkcmVuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogY2hpbGQ7XG4gICAgICAgIH0pXG4gICAgICB9KSlcbiAgICAgIC8vIHJlbW92ZSBkdXBsaWNhdGVkIGluZGljYXRvcnNcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChpbmRpY2F0b3IpID0+ICFpbmRpY2F0b3JBcnJheS5zb21lKChwYXJlbnQpID0+IHBhcmVudC5jaGlsZHJlbi5zb21lKChjaGlsZCkgPT4gY2hpbGQuaWQgPT09IGluZGljYXRvci5pZCkpXG4gICAgICApO1xuXG4gICAgY29uc3QgZW5kcG9pbnRzID0gbGlua2VkSW5kaWNhdG9ycy5maWx0ZXIoKGluZGljYXRvcikgPT4gaW5kaWNhdG9yLnR5cGUgPT09IENoYXJ0Tm9kZVR5cGUuZW5kcG9pbnQpO1xuICAgIGNvbnN0IG5vbkxDQUluZGljYXRvcnMgPSBsaW5rZWRJbmRpY2F0b3JzLmZpbHRlcigoaW5kaWNhdG9yKSA9PiBpbmRpY2F0b3IudHlwZSA9PT0gQ2hhcnROb2RlVHlwZS5taWRwb2ludCk7XG5cbiAgICBlbmRwb2ludHMubGVuZ3RoICYmXG4gICAgICBub25MQ0FJbmRpY2F0b3JzLmxlbmd0aCAmJlxuICAgICAgZW5kcG9pbnRzLnB1c2goe1xuICAgICAgICBpZDogbm9uTENBSW5kaWNhdG9yc0lkLFxuICAgICAgICBsYWJlbDogJ090aGVyIGluZGljYXRvcnMnLFxuICAgICAgICB0ZXJtOiAnbi9hJyxcbiAgICAgICAgbW9kZWxJZDogJ24vYScsXG4gICAgICAgIHVuaXRzOiAnJyxcbiAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgIHdlaWdodGVkVmFsdWU6IG51bGwsXG4gICAgICAgIHR5cGU6IENoYXJ0Tm9kZVR5cGUuZW5kcG9pbnQsXG4gICAgICAgIGZyYWN0aW9uOiBudWxsLFxuICAgICAgICBjaGlsZHJlbjogbm9uTENBSW5kaWNhdG9yc1xuICAgICAgfSk7XG5cbiAgICBjb25zdCByb290ID0gZDNIaWVyYXJjaHk8Tm9kZURhdHVtPih7XG4gICAgICBpZDogJ2R1bW15LXJvb3QnLFxuICAgICAgbGFiZWw6ICcnLFxuICAgICAgdGVybTogJycsXG4gICAgICBtb2RlbElkOiAnJyxcbiAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgd2VpZ2h0ZWRWYWx1ZTogbnVsbCxcbiAgICAgIHVuaXRzOiAnJyxcbiAgICAgIHR5cGU6IENoYXJ0Tm9kZVR5cGUucm9vdCxcbiAgICAgIGNoaWxkcmVuOiBlbmRwb2ludHMubGVuZ3RoID8gZW5kcG9pbnRzIDogbGlua2VkSW5kaWNhdG9yc1xuICAgIH0pO1xuXG4gICAgY29uc3QgaW5jbHVkZWRUeXBlcyA9IHVuaXF1ZShyb290LmRlc2NlbmRhbnRzKCkubWFwKChuKSA9PiBuLmRhdGEudHlwZSkpO1xuICAgIHRoaXMubGVnZW5kID0gbGVnZW5kLmZpbHRlcigoeyB0eXBlIH0pID0+IGluY2x1ZGVkVHlwZXMuaW5jbHVkZXModHlwZSkpO1xuXG4gICAgdGhpcy5yb290ID0gcm9vdFxuICAgICAgLnNvcnQoKGEsIGIpID0+IGIuZGF0YS5mcmFjdGlvbiAtIGEuZGF0YS5mcmFjdGlvbilcbiAgICAgIC5lYWNoQWZ0ZXIoKG5vZGUpID0+IHtcbiAgICAgICAgaWYgKG5vZGUuZGF0YS5mcmFjdGlvbiA9PT0gMCkge1xuICAgICAgICAgIG5vZGUuY2hpbGRyZW4gPSBudWxsO1xuICAgICAgICAgIChub2RlLmhlaWdodCBhcyBudW1iZXIpID0gMDtcbiAgICAgICAgfVxuICAgICAgICBub2RlLmRhdGEudHlwZSAhPT0gQ2hhcnROb2RlVHlwZS5yb290ICYmIGNvbGxhcHNlQ2hpbGRyZW4obm9kZSk7XG4gICAgICAgIGdyb3VwQnlQZXJjZW50YWdlKG5vZGUpICYmIGdyb3VwUGVyY2VudGFnZShub2RlKTtcbiAgICAgICAgbm9kZS5kYXRhLnNob3dCYXIgPSBzaG93QmFyKG5vZGUpO1xuICAgICAgICBub2RlLmRhdGEubW9kZWxOYW1lID0gdGhpcy5hbGxUZXJtc1tub2RlLmRhdGEubW9kZWxJZF0/Lm5hbWU7XG4gICAgICAgIG5vZGUuZGF0YS5tb2RlbERvY3MgPSB0aGlzLmFsbFRlcm1zW25vZGUuZGF0YS5tb2RlbElkXT8uZG9jcztcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5yZW5kZXJDaGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJDaGFydCgpIHtcbiAgICB0aGlzLnN2ZyA9IGQzU2VsZWN0KHRoaXMuY2hhcnRSZWY/Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMuc3ZnLnNlbGVjdEFsbCgnKicpLnJlbW92ZSgpO1xuICAgIC8vIHJvb3Qgbm9kZSBpcyBhbHdheXMgcG9zaXRpb25lZCBhdCDin6gwLCAw4p+pXG4gICAgY29uc3QgaW5uZXJIZWlnaHQgPSAodGhpcy5yb290LmNoaWxkcmVuLmxlbmd0aCAtIDEpICogbm9kZUhlaWdodCAqIG5vZGVTcGFjaW5nRmFjdG9yICsgbm9kZUhlaWdodDtcbiAgICB0aGlzLnlNaW4gPSAobm9kZUhlaWdodCAtIGlubmVySGVpZ2h0KSAvIDIgLSBtYXJnaW4udG9wO1xuICAgIHRoaXMueVRvdGFsID0gaW5uZXJIZWlnaHQgKyBtYXJnaW4udG9wICsgbWFyZ2luLmJvdHRvbTtcbiAgICB0aGlzLnN2Z1xuICAgICAgLmF0dHIoJ3ZpZXdCb3gnLCBbLW1hcmdpbi5sZWZ0LCB0aGlzLnlNaW4sIHdpZHRoLCB0aGlzLnlUb3RhbF0uam9pbignICcpKVxuICAgICAgLmF0dHIoJ2ZvbnQtc2l6ZScsIGAke2ZvbnRTaXplfXB4YCk7XG5cbiAgICB0aGlzLm5vZGUgPSB0aGlzLnN2Zy5hcHBlbmQoJ2cnKS5zZWxlY3RBbGwoJ2cnKTtcbiAgICB0aGlzLmxpbmsgPSB0aGlzLnN2Zy5hcHBlbmQoJ2cnKS5zZWxlY3RBbGwoJ3BhdGgnKTtcblxuICAgIHRoaXMuaGFuZGxlTm9kZUNsaWNrKFxuICAgICAgbnVsbCxcbiAgICAgIHRoaXMucm9vdC5maW5kKChub2RlKSA9PiBub2RlLmRlcHRoID09PSAxKVxuICAgICk7XG4gIH1cblxuICAvLyBmbGlwIHgveSB0byBnbyBsZWZ0LXJpZ2h0IGluc3RlYWQgb2YgdG9wLWJvdHRvbVxuICBwcml2YXRlIHVwZGF0ZUNoYXJ0KHsgdG9nZ2xpbmdHcm91cCA9IGZhbHNlLCBzd2l0Y2hpbmdTZWxlY3Rpb24gPSBmYWxzZSB9ID0ge30pIHtcbiAgICBjb25zdCByb290ID0gdGhpcy5yb290O1xuICAgIGNvbnN0IHRyZWVMYXlvdXQgPSBkM1RyZWU8Tm9kZURhdHVtPigpXG4gICAgICAubm9kZVNpemUoW25vZGVIZWlnaHQsIG5vZGVXaWR0aF0pXG4gICAgICAuc2VwYXJhdGlvbigoLi4ubmVpZ2hib3VyczogQ2hhcnROb2RlW10pID0+XG4gICAgICAgIG5laWdoYm91cnMuc29tZSgobikgPT4gbi5kYXRhLmdyb3VwICYmIG4uX2dyb3VwT3BlbikgPyAxIC0gZ3JvdXBPdmVybGFwIC8gbm9kZUhlaWdodCA6IG5vZGVTcGFjaW5nRmFjdG9yXG4gICAgICApO1xuICAgIGNvbnN0IHRyZWU6IENoYXJ0Tm9kZSA9IHRyZWVMYXlvdXQocm9vdCk7XG4gICAgY29uc3QgbGlua3M6IExpbmtbXSA9IHRyZWUubGlua3MoKS5maWx0ZXIoKGQpID0+IGQuc291cmNlLmRhdGEudHlwZSAhPT0gQ2hhcnROb2RlVHlwZS5yb290KSB8fCBbXTtcbiAgICBjb25zdCBub2RlcyA9IHRyZWUuZGVzY2VuZGFudHMoKS5yZXZlcnNlKCk7XG5cbiAgICBub2Rlcy5mb3JFYWNoKChkKSA9PiB7XG4gICAgICBkLnkgPVxuICAgICAgICAoZC5kZXB0aCAtIDEgKyAoT2JqZWN0LmtleXMoQ2hhcnROb2RlVHlwZSkubGVuZ3RoIC0gMSAtIHRoaXMubGVnZW5kLmxlbmd0aCkgLyAyKSAqIChub2RlV2lkdGggKyBsYXllclNwYWNpbmcpO1xuICAgIH0pO1xuXG4gICAgLy8gQnkgZGVmYXVsdCB0aGUgdHJlZSBleHBhbmRzIHN5bW1ldHJpY2FsbHkgdXB3YXJkcyBhbmQgZG93bndhcmRzIGZyb20gdGhlIHNlbGVjdGVkIG5vZGUuXG4gICAgLy8gV2UgbW92ZSBjaGlsZHJlbiBkb3duIHRvIHByZXZlbnQgZXhwYW5zaW9uIHVwd2FyZHMgb3IgdXAgdG8gbWluaW1pc2UgZXhwYW5zaW9uIGRvd253YXJkc1xuICAgIGNvbnN0IG1pbmltaXNlSGVpZ2h0ID0gKHsgcHJldmlvdXNUYW5zbGF0ZVksIHByZXZpb3VzWVRvdGFsIH0sIGRlcHRoOiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IG1heFlUb3RhbCA9IE1hdGgubWF4KHByZXZpb3VzWVRvdGFsLCB0aGlzLnlUb3RhbCk7XG4gICAgICBjb25zdCBwYXJlbnQgPSB0cmVlLmZpbmQoKG5vZGUpID0+IChub2RlLmRlcHRoID09PSBkZXB0aCAtIDEpICYmIG5vZGUuX29wZW4pO1xuICAgICAgcGFyZW50Py5jaGlsZHJlbj8uZm9yRWFjaCgobm9kZSkgPT4gKG5vZGUueCArPSBwcmV2aW91c1RhbnNsYXRlWSkpO1xuXG4gICAgICBjb25zdCB7IG1pbjogbWluWCwgbWF4OiBtYXhYIH0gPSAocGFyZW50Py5jaGlsZHJlbiB8fCBbXSkucmVkdWNlKFxuICAgICAgICAoeyBtaW4sIG1heCB9LCBuKSA9PiAoe1xuICAgICAgICAgIG1pbjogbi54IDwgbWluID8gbi54IDogbWluLFxuICAgICAgICAgIG1heDogbi54ID4gbWF4ID8gbi54IDogbWF4XG4gICAgICAgIH0pLFxuICAgICAgICB7IG1pbjogcGFyZW50Py54LCBtYXg6IHBhcmVudD8ueCB9XG4gICAgICApO1xuXG4gICAgICBjb25zdCB7IHlNaW4sIHlUb3RhbCB9ID0gcGFyZW50Py5jaGlsZHJlbj8ubGVuZ3RoXG4gICAgICAgID8geyB5TWluOiBtaW5YIC0gbWFyZ2luLnRvcCwgeVRvdGFsOiBtYXhYIC0gbWluWCArIG1hcmdpbi5ib3R0b20gKyBtYXJnaW4udG9wICsgbm9kZUhlaWdodCB9XG4gICAgICAgIDogeyB5TWluOiBudWxsLCB5VG90YWw6IG51bGwgfTtcblxuICAgICAgY29uc3Qgb3ZlcmZsb3dBYm92ZSA9IHRoaXMueU1pbiAtIHlNaW47IC8vIHBvc2l0aXZlIHdoZW4gb3ZlcmZsb3dzIGFib3ZlXG4gICAgICBjb25zdCBvdmVyZmxvd0JlbG93ID0geVRvdGFsICsgeU1pbiAtIChtYXhZVG90YWwgKyB0aGlzLnlNaW4pOyAvLyBwb3NpdGl2ZSB3aGVuIG92ZXJmbG93cyBiZWxvd1xuICAgICAgLy8gLSB0cmFuc2xhdGVZIHdoZW4gb3ZlcmZsb3dzIGFib3ZlOiBwb3NpdGl2ZVxuICAgICAgLy8gLSB0cmFuc2xhdGVZIHdoZW4gb3ZlcmZsb3dzIGJlbG93OiBuZWdhdGl2ZSBieSBzbWFsbGVzdCBvZiB1bmRlcmZsb3cgYWJvdmUgb3Igb3ZlcmZsb3cgYmVsb3dcbiAgICAgIC8vIC0gdHJhbnNsYXRlWSB3aGVuIG5vIG92ZXJmbG93OiAwXG4gICAgICBjb25zdCB0cmFuc2xhdGVZID1cbiAgICAgICAgb3ZlcmZsb3dBYm92ZSA+IDAgPyBvdmVyZmxvd0Fib3ZlIDogb3ZlcmZsb3dCZWxvdyA+IDAgPyBNYXRoLm1heCgtb3ZlcmZsb3dCZWxvdywgb3ZlcmZsb3dBYm92ZSkgOiAwO1xuXG4gICAgICBwYXJlbnQ/LmNoaWxkcmVuPy5mb3JFYWNoKChub2RlKSA9PiAobm9kZS54ICs9IHRyYW5zbGF0ZVkpKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcHJldmlvdXNZVG90YWw6IE1hdGgubWF4KHlUb3RhbCwgcHJldmlvdXNZVG90YWwpLFxuICAgICAgICBwcmV2aW91c1RhbnNsYXRlWTogdHJhbnNsYXRlWSArIHByZXZpb3VzVGFuc2xhdGVZXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCB7IHByZXZpb3VzWVRvdGFsOiBuZXdIZWlnaHQgfSA9IFtcbiAgICAgIDIsIDMsIDQsIDVcbiAgICBdLnJlZHVjZShtaW5pbWlzZUhlaWdodCwge1xuICAgICAgcHJldmlvdXNUYW5zbGF0ZVk6IDAsXG4gICAgICBwcmV2aW91c1lUb3RhbDogdGhpcy55VG90YWxcbiAgICB9KTtcblxuICAgIHRoaXMuc3ZnLnRyYW5zaXRpb24oKS5kdXJhdGlvbigzMDApLmF0dHIoJ3ZpZXdCb3gnLCBbLW1hcmdpbi5sZWZ0LCB0aGlzLnlNaW4sIHdpZHRoLCBuZXdIZWlnaHRdLmpvaW4oJyAnKSk7XG5cbiAgICB0aGlzLm5vZGUgPSB0aGlzLm5vZGVcbiAgICAgIC5kYXRhKFxuICAgICAgICBub2RlcyxcbiAgICAgICAgKGQpID0+IGAke2QucGFyZW50Py5wYXJlbnQ/LnBhcmVudD8uZGF0YS5pZH0tJHtkLnBhcmVudD8ucGFyZW50Py5kYXRhLmlkfS0ke2QucGFyZW50Py5kYXRhLmlkfS0ke2QuZGF0YS5pZH1gXG4gICAgICApXG4gICAgICAuam9pbihcbiAgICAgICAgKGVudGVyKSA9PlxuICAgICAgICAgIGVudGVyXG4gICAgICAgICAgICAuYXBwZW5kKCdnJylcbiAgICAgICAgICAgIC5jYWxsKGVudGVyTm9kZXMpXG4gICAgICAgICAgICAuYXR0cignb3BhY2l0eScsIDApXG4gICAgICAgICAgICAuYXR0cigndHJhbnNmb3JtJywgKGQpID0+ICd0cmFuc2xhdGUoJyArICh0b2dnbGluZ0dyb3VwID8gZC55IDogZC55IC0gbm9kZVdpZHRoIC8gMikgKyAnLCcgKyBkLnggKyAnKScpLFxuICAgICAgICAodXBkYXRlKSA9PiB1cGRhdGUsXG4gICAgICAgIChleGl0KSA9PiB7XG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMudG9vbHRpcE9wZXJhdG9yLmNsb3NlKGZhbHNlKSk7XG4gICAgICAgICAgcmV0dXJuIGV4aXRcbiAgICAgICAgICAgIC5zdHlsZSgncG9pbnRlci1ldmVudHMnLCAnbm9uZScpXG4gICAgICAgICAgICAudHJhbnNpdGlvbigpXG4gICAgICAgICAgICAuZHVyYXRpb24obm9kZUR1cmF0aW9uIC8gMilcbiAgICAgICAgICAgIC5kZWxheSgoZCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGQucGFyZW50Py5jaGlsZHJlbiB8fCBkLnBhcmVudD8uX2NoaWxkcmVuO1xuICAgICAgICAgICAgICByZXR1cm4gKGNoaWxkcmVuPy5sZW5ndGggLSBjaGlsZHJlbj8uaW5kZXhPZihkKSAtIDEpICogMTA7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmVhc2UoZDNFYXNlRWxhc3RpY0luLmFtcGxpdHVkZSgwLjUpLnBlcmlvZCgxKSlcbiAgICAgICAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCAoZCkgPT4gJ3RyYW5zbGF0ZSgnICsgKHRvZ2dsaW5nR3JvdXAgPyBkLnkgOiBkLnkgLSBub2RlV2lkdGggLyAyKSArICcsJyArIGQueCArICcpJylcbiAgICAgICAgICAgIC5hdHRyKCdvcGFjaXR5JywgMClcbiAgICAgICAgICAgIC5yZW1vdmUoKVxuICAgICAgICAgICAgLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgIC8vIGluIGNhc2UgYSB0b29sdGlwIHdhcyBvcGVuZWQgb24gYSB0cmFuc2l0aW9uaW5nIGVsZW1lbnRcbiAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMudG9vbHRpcE9wZXJhdG9yLmNsb3NlKGZhbHNlKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIHRoaXMubm9kZVxuICAgICAgLmNhbGwobWVyZ2VkTm9kZXMsIHsgdG9vbHRpcE9wZXJhdG9yOiB0aGlzLnRvb2x0aXBPcGVyYXRvciwgem9uZTogdGhpcy5uZ1pvbmUgfSlcbiAgICAgIC50cmFuc2l0aW9uKClcbiAgICAgIC5kZWxheSgoZCkgPT4ge1xuICAgICAgICBjb25zdCBncm91cENsb3NpbmcgPSB0b2dnbGluZ0dyb3VwICYmICFkLnBhcmVudD8uY2hpbGRyZW4/LmZpbmQoKG4pID0+IG4uZGF0YS5ncm91cCk/Ll9ncm91cE9wZW47XG4gICAgICAgIHJldHVybiBncm91cENsb3NpbmcgPyBncm91cERlbGF5IDogKHN3aXRjaGluZ1NlbGVjdGlvbiA/IG5vZGVEdXJhdGlvbiA6IDApICsgZC5wYXJlbnQ/LmNoaWxkcmVuLmluZGV4T2YoZCkgKiAxMDtcbiAgICAgIH0pXG4gICAgICAuZHVyYXRpb24obm9kZUR1cmF0aW9uKVxuICAgICAgLmVhc2UoZDNFYXNlRWxhc3RpY091dC5hbXBsaXR1ZGUoMC41KS5wZXJpb2QoMSkpXG4gICAgICAuYXR0cigndHJhbnNmb3JtJywgKGQpID0+IGB0cmFuc2xhdGUoJHtkLnl9LCR7ZC54fSlgKVxuICAgICAgLmF0dHIoJ29wYWNpdHknLCAxKTtcblxuICAgIHRoaXMubm9kZS5zZWxlY3RBbGwoJy5ub2RlLW9wZW5hYmxlJykub24oJ2NsaWNrJywgdGhpcy5oYW5kbGVOb2RlQ2xpY2suYmluZCh0aGlzKSk7XG4gICAgdGhpcy5ub2RlLnNlbGVjdEFsbCgnLmdyb3VwLWJ1dHRvbicpLm9uKCdjbGljaycsIHRoaXMuaGFuZGxlR3JvdXBCdXR0b25DbGljay5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMubGluayA9IHRoaXMubGlua1xuICAgICAgLmRhdGEoXG4gICAgICAgIGxpbmtzLFxuICAgICAgICAoZCkgPT4gYCR7ZC5zb3VyY2UucGFyZW50Py5wYXJlbnQ/LmRhdGEuaWR9LSR7ZC5zb3VyY2UucGFyZW50Py5kYXRhLmlkfS0ke2Quc291cmNlLmRhdGEuaWR9LSR7ZC50YXJnZXQuZGF0YS5pZH1gXG4gICAgICApXG4gICAgICAuam9pbihcbiAgICAgICAgKGVudGVyKSA9PiBlbnRlci5hcHBlbmQoJ3BhdGgnKS5jbGFzc2VkKCdsaW5rLXBhdGgnLCB0cnVlKS5hdHRyKCdvcGFjaXR5JywgMCksXG4gICAgICAgICh1cGRhdGUpID0+IHVwZGF0ZSxcbiAgICAgICAgKGV4aXQpID0+XG4gICAgICAgICAgZXhpdFxuICAgICAgICAgICAgLnRyYW5zaXRpb24oKVxuICAgICAgICAgICAgLmR1cmF0aW9uKGxpbmtEdXJhdGlvbiAvIDIpXG4gICAgICAgICAgICAuZGVsYXkoKGQpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBkLnNvdXJjZS5wYXJlbnQ/LmNoaWxkcmVuIHx8IGQuc291cmNlLnBhcmVudD8uX2NoaWxkcmVuO1xuICAgICAgICAgICAgICByZXR1cm4gKGNoaWxkcmVuPy5sZW5ndGggLSBjaGlsZHJlbj8uaW5kZXhPZihkLnRhcmdldCkgLSAxKSAqIDEwO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hdHRyKCdvcGFjaXR5JywgMClcbiAgICAgICAgICAgIC5yZW1vdmUoKVxuICAgICAgKVxuICAgICAgLmNhbGwobWVyZ2VkTGlua3MsIHsgdG9nZ2xpbmdHcm91cCwgc3dpdGNoaW5nU2VsZWN0aW9uIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVHcm91cEJ1dHRvbkNsaWNrKF9ldmVudDogYW55LCBkOiBDaGFydE5vZGUpIHtcbiAgICBpZiAoZC5fZ3JleWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGQuX2dyb3VwT3BlbiA9ICFkLl9ncm91cE9wZW47XG4gICAgY29uc3QgY2hpbGRyZW4gPSBkLnBhcmVudC5fZ3JvdXBDaGlsZHJlbjtcbiAgICBkLnBhcmVudC5fZ3JvdXBDaGlsZHJlbiA9IGQucGFyZW50LmNoaWxkcmVuO1xuICAgIGQucGFyZW50LmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgdGhpcy51cGRhdGVDaGFydCh7IHRvZ2dsaW5nR3JvdXA6IHRydWUgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU5vZGVDbGljayhfZXZlbnQ6IGFueSwgZDogQ2hhcnROb2RlIHwgSE5vZGUpOiB2b2lkIHtcbiAgICBkLl9vcGVuID0gIWQuX29wZW47XG4gICAgY29uc3Qgc3dpdGNoaW5nU2VsZWN0aW9uID0gJ19ncmV5ZWQnIGluIGQgJiYgZC5fZ3JleWVkO1xuICAgIGQucGFyZW50LmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICBjaGlsZC5fZ3JleWVkID0gZmFsc2U7XG4gICAgICBpZiAoY2hpbGQgIT09IGQpIHtcbiAgICAgICAgY2hpbGQuX29wZW4gPSBmYWxzZTtcbiAgICAgICAgY29sbGFwc2VDaGlsZHJlbihjaGlsZCk7XG4gICAgICAgIGNoaWxkLl9ncmV5ZWQgPSBkLl9vcGVuO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGQuY2hpbGRyZW4gPyBjb2xsYXBzZUNoaWxkcmVuKGQpIDogcmVzdG9yZUNoaWxkcmVuKGQpO1xuICAgIHRoaXMudXBkYXRlQ2hhcnQoeyBzd2l0Y2hpbmdTZWxlY3Rpb24gfSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGluZzsgZWxzZSBsb2FkZXJcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUmVjYWxjdWxhdGVkOyBlbHNlIHNob3dTd2l0Y2hSZWNhbGN1bGF0ZWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmllbGQgaGFzLWFkZG9ucyBwdC0yIHB4LTMgbWItMFwiICpuZ0lmPVwiZmlsdGVyZWRJbXBhY3RBc3Nlc3NtZW50cy5sZW5ndGggPiAxXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImJ1dHRvbiBpcy1zbWFsbCBpcy1zdGF0aWMgaXMtc2Vjb25kYXJ5XCI+U2VsZWN0IGFuIEltcGFjdCBBc3Nlc3NtZW50PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLXNtYWxsIGlzLWZ1bGx3aWR0aCBpcy1zZWNvbmRhcnlcIj5cbiAgICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwic2VsZWN0ZWRJbXBhY3RBc3Nlc3NtZW50SWRcIiAoY2hhbmdlKT1cInJlbG9hZENoYXJ0KClcIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiPlxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgZmlsdGVyZWRJbXBhY3RBc3Nlc3NtZW50c1wiIFt2YWx1ZV09XCJ2YWx1ZVsnQGlkJ11cIj5cbiAgICAgICAgICAgICAge3sgdmFsdWUubmFtZSB8fCB2YWx1ZVsnQGlkJ10gfX1cbiAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhbm9EYXRhXCIgY2xhc3M9XCJmaWVsZCBoYXMtYWRkb25zIHB5LTIgcHgtM1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbnRyb2xcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJidXR0b24gaXMtc21hbGwgaXMtc3RhdGljIGlzLXNlY29uZGFyeVwiPlNlbGVjdCBhIG1vZGVsPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29udHJvbCBpcy1leHBhbmRlZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0IGlzLXNtYWxsIGlzLWZ1bGx3aWR0aCBpcy1zZWNvbmRhcnlcIj5cbiAgICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwic2VsZWN0ZWRNb2RlbElkXCIgKGNoYW5nZSk9XCJpbml0Q2hhcnQoKVwiIFtkaXNhYmxlZF09XCJsb2FkaW5nXCI+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBtb2RlbCBvZiBtb2RlbHNcIiBbdmFsdWVdPVwibW9kZWxbJ0BpZCddXCI+e3sgbW9kZWwubmFtZSB8fCBtb2RlbFsnQGlkJ10gfX08L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbm9EYXRhICYmICFzaG93V2FybmluZ3NcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zIGlzLWNlbnRlcmVkIHB5LTIgaXMtc2l6ZS03IGlzLW1vYmlsZSBpcy1tdWx0aWxpbmVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbGVnZW5kSXRlbSBvZiBsZWdlbmRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGlzLW5hcnJvdyBweS0wIGlzLWZsZXgtbW9iaWxlIGlzLWZsZXgtZGlyZWN0aW9uLWNvbHVtbiBpcy1hbGlnbi1pdGVtcy1jZW50ZXIgaXMtbGVnZW5kLWl0ZW1cIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwia2V5LWNvbG91ciBpcy1pbmxpbmUtYmxvY2stdGFibGV0IGlzLWFsaWduLW1pZGRsZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwibm9kZUNvbG91cnNbbGVnZW5kSXRlbS50eXBlXVwiXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImhhcy10ZXh0LWJsYWNrIGlzLWFsaWduLW1pZGRsZSBrZXktbGFiZWwgaXMtcGwtdGFibGV0LTJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpcy1oaWRkZW4tZGVza3RvcFwiPnt7bGVnZW5kSXRlbS5tb2JpbGVUZXh0fX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXMtaGlkZGVuLXRvdWNoXCI+e3tsZWdlbmRJdGVtLnRleHR9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPHAgKm5nSWY9XCJlcnJvclwiIGNsYXNzPVwiaGFzLXRleHQtZGFuZ2VyIHB5LTNcIj5cbiAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImVycm9yXCI+XG4gICAgICAgIDxwICpuZ1N3aXRjaENhc2U9XCInbm90LWZvdW5kJ1wiPkltcGFjdCBBc3Nlc3NtZW50IG5vdCBmb3VuZDwvcD5cbiAgICAgICAgPGRpdiAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgIDxzcGFuPkFuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWQ6PC9zcGFuPlxuICAgICAgICAgIDxwIGNsYXNzPVwibXQtMVwiPnt7IGVycm9yIH19PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvcD5cblxuICAgIDxkaXYgKm5nSWY9XCJzaG93V2FybmluZ3NcIiBjbGFzcz1cImhhcy10ZXh0LXdhcm5pbmcgcHktMyBoYXMtdGV4dC1jZW50ZXJlZFwiPlxuICAgICAgPHAgY2xhc3M9XCJpcy1tYi0yXCIgKm5nRm9yPVwibGV0IHdhcm5pbmcgb2Ygd2FybmluZ3NcIj5cbiAgICAgICAgPGZhLWljb24gY2xhc3M9XCJwci0yXCIgaWNvbj1cImV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCI+PC9mYS1pY29uPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ3YXJuaW5nXCI+XG4gICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidtaXNzaW5nLXRlcm1zJ1wiPkNhbGN1bGF0aW9ucyBhcmUgbm90IHVwIHRvIGRhdGUuIFNvbWUgdGVybXMgbWF5IG5vdCBkaXNwbGF5IGNvcnJlY3RseS48L3NwYW4+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9wPlxuICAgICAgPHAgY2xhc3M9XCJpcy11bmRlcmxpbmVkIGlzLXNpemUtN1wiPjxhIChjbGljayk9XCJzaG93V2FybmluZ3MgPSBmYWxzZVwiPlZpZXcgY2hhcnQgYW55d2F5LjwvYT48L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwibm9EYXRhXCIgY2xhc3M9XCJweS0zXCI+XG4gICAgICA8cCBjbGFzcz1cImhhcy10ZXh0LWNlbnRlcmVkXCI+Tm8gY2hhcnQgYXZhaWxhYmxlLjwvcD5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPGRpdiBbY2xhc3MuaXMtaGlkZGVuXT1cIiFpc1JlY2FsY3VsYXRlZCB8fCBsb2FkaW5nIHx8IGVycm9yIHx8IG5vRGF0YSB8fCBzaG93V2FybmluZ3NcIiBjbGFzcz1cImNoYXJ0LWNvbnRhaW5lciBpcy1yZWxhdGl2ZSB3LTEwMFwiPlxuICA8c3ZnIGNsYXNzPVwidy0xMDAgaC0xMDBcIiAjY2hhcnQ+PC9zdmc+XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJpcy1oaWRkZW5cIlxuICAgIFtuZ2JQb3BvdmVyXT1cInRpcENvbnRlbnRcIlxuICAgIHRyaWdnZXJzPVwibWFudWFsXCJcbiAgICBwbGFjZW1lbnQ9XCJyaWdodCBsZWZ0IGF1dG9cIlxuICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICN0PVwibmdiUG9wb3ZlclwiXG4gICAgcG9zaXRpb25UYXJnZXQ9XCIudGlwLXRhcmdldFwiXG4gICAgcG9wb3ZlckNsYXNzPVwiaXMtbmFycm93IGRyaXZlci1jaGFydC10b29sdGlwXCJcbiAgICBbYW5pbWF0aW9uXT1cInRydWVcIlxuICA+PC9zcGFuPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGVyPlxuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXIgaGFzLXRleHQtY2VudGVyIG15LTUgcHktNVwiPlxuICAgIDxmYS1pY29uIGljb249XCJzcGlubmVyXCIgW3B1bHNlXT1cInRydWVcIiBzaXplPVwibGdcIj48L2ZhLWljb24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzaG93U3dpdGNoUmVjYWxjdWxhdGVkPlxuICA8cCBjbGFzcz1cImhhcy10ZXh0LWNlbnRlcmVkIHB5LTNcIj5ObyBjaGFydCBhdmFpbGFibGUuIFN3aXRjaCB0byA8Y29kZT5yZWNhbGN1bGF0ZWQ8L2NvZGU+IHZlcnNpb24uPC9wPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0aXBDb250ZW50IGxldC10aXBEYXRhPVwidGlwRGF0YVwiPlxuICA8cCAqbmdJZj1cInRpcERhdGEuaGFzV2VpZ2h0ZWRWYWx1ZVwiPmNvbnRyaWJ1dGlvbjoge3sgdGlwRGF0YS53ZWlnaHRlZFZhbHVlVGV4dCB9fTwvcD5cbiAgPHA+XG4gICAgPGEgY2xhc3M9XCJpcy1kYXJrXCIgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwidGlwRGF0YS52YWx1ZUtleUhyZWZcIj52YWx1ZTwvYT46IHt7IHRpcERhdGEudmFsdWVWYWx1ZVRleHQgfX1cbiAgICA8YSBjbGFzcz1cImlzLWRhcmtcIiAqbmdJZj1cInRpcERhdGEuaGFzVmFsdWVcIiBbaHJlZl09XCJ0aXBEYXRhLm1vZGVsRG9jc0hyZWZcIiB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgIDxzcGFuPkRvY3M8L3NwYW4+XG4gICAgICA8ZmEtaWNvbiBjbGFzcz1cIm1sLTFcIiBpY29uPVwiZXh0ZXJuYWwtbGluay1hbHRcIiBzaXplPVwic21cIj48L2ZhLWljb24+XG4gICAgPC9hPlxuICA8L3A+XG4gIDxwPlxuICAgIDxhIGNsYXNzPVwiaXMtZGFya1wiIHRhcmdldD1cIl9ibGFua1wiIFtocmVmXT1cInRpcERhdGEubW9kZWxLZXlIcmVmXCI+bWV0aG9kTW9kZWw8L2E+OiBcbiAgICA8YSBjbGFzcz1cImlzLWRhcmtcIiB0YXJnZXQ9XCJfYmxhbmtcIiBbaHJlZl09XCJ0aXBEYXRhLm1vZGVsVmFsdWVIcmVmXCI+e3sgdGlwRGF0YS5tb2RlbFZhbHVlIH19PC9hPlxuICA8L3A+XG4gIDxwPlxuICAgIDxhIGNsYXNzPVwiaXMtZGFya1wiIHRhcmdldD1cIl9ibGFua1wiIFtocmVmXT1cInRpcERhdGEudGVybUtleUhyZWZcIj50ZXJtPC9hPjogXG4gICAgPGEgY2xhc3M9XCJpcy1kYXJrXCIgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwidGlwRGF0YS50ZXJtVmFsdWVIcmVmXCI+e3sgdGlwRGF0YS50ZXJtVmFsdWUgfX08L2E+XG4gIDwvcD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=