vcomply-workflow-engine 6.0.14 → 6.0.15

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.
@@ -562,60 +562,6 @@ export class FrequencyService {
562
562
  const formattedDate = `${day}-${month}-${year}`;
563
563
  return formattedDate;
564
564
  }
565
- setFrequencyObject(frequency) {
566
- const repeatOptions = this.repeatOptions(frequency);
567
- console.log(repeatOptions, 'repeatOptions');
568
- const frequencyObject = {
569
- type: frequency.case,
570
- endAfter: frequency.failedAfter,
571
- auttoDeactivate: frequency.continuous_failed_days,
572
- day: frequency.day,
573
- time: frequency.timeIn24hr,
574
- repeatOptions: {
575
- every: frequency.every,
576
- repeatOn: repeatOptions,
577
- lifecycle: {
578
- startFrom: moment(frequency.startFrom * 1000).format('YYYY-MM-DD'),
579
- endBy: frequency?.lifecycleDetails !== '0000-00-00~~0' ? moment(frequency.failed_time_utc * 1000).format('YYYY-MM-DD') : undefined,
580
- endAfter: frequency.endAfter
581
- }
582
- },
583
- random: {},
584
- onComplete: {},
585
- onGoing: {},
586
- };
587
- return frequencyObject;
588
- }
589
- repeatOptions(frequency) {
590
- if (frequency?.selectedDay?.length > 0) {
591
- const weekDays = [];
592
- for (let i = 0; i < 7; i++) {
593
- if (frequency.selectedDay.includes(i + 1)) {
594
- weekDays.push(1);
595
- }
596
- else {
597
- weekDays.push(0);
598
- }
599
- }
600
- console.log(weekDays, 'weekDays', weekDays.join(''));
601
- return weekDays.join('');
602
- }
603
- else if (frequency?.selectedMonth?.length > 0) {
604
- const months = [];
605
- for (let i = 0; i < 12; i++) {
606
- if (frequency?.selectedMonth?.includes(i)) {
607
- months.push(1);
608
- }
609
- else {
610
- months.push(0);
611
- }
612
- }
613
- return months.join('');
614
- }
615
- else {
616
- return '';
617
- }
618
- }
619
565
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FrequencyService, deps: [{ token: i1.HttpClient }, { token: i2.AuthService }, { token: i3.Configurations, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
620
566
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FrequencyService, providedIn: 'root' }); }
621
567
  }
@@ -627,4 +573,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
627
573
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.AuthService }, { type: i3.Configurations, decorators: [{
628
574
  type: Optional
629
575
  }] }]; } });
630
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFHLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hDLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUNuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7O0FBTTlELE1BQU0sT0FBTyxnQkFBZ0I7SUFxRTNCLFlBQ1UsSUFBZ0IsRUFDaEIsV0FBd0IsRUFDcEIsTUFBdUI7UUFGM0IsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQXRFM0IsZUFBVSxHQUFrQjtZQUNqQyxTQUFTO1lBQ1QsVUFBVTtZQUNWLE9BQU87WUFDUCxPQUFPO1lBQ1AsS0FBSztZQUNMLE1BQU07WUFDTixNQUFNO1lBQ04sUUFBUTtZQUNSLFdBQVc7WUFDWCxTQUFTO1lBQ1QsVUFBVTtZQUNWLFVBQVU7U0FDWCxDQUFDO1FBRUssWUFBTyxHQUFrQjtZQUM5QixRQUFRO1lBQ1IsU0FBUztZQUNULFdBQVc7WUFDWCxVQUFVO1lBQ1YsUUFBUTtZQUNSLFVBQVU7WUFDVixRQUFRO1NBQ1QsQ0FBQyxDQUFDLGdCQUFnQjtRQUVaLG1CQUFjLEdBQWtCO1lBQ3JDLCtCQUErQjtZQUMvQixpQ0FBaUM7WUFDakMsa0NBQWtDO1NBQ25DLENBQUM7UUFFSyxlQUFVLEdBQUc7WUFDbEIsTUFBTSxFQUFFLFlBQVk7WUFDcEIsZUFB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QVU7UUFDaEUsTUFBTSxVQUFVLEdBQUc7WUFDakIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDMUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDMUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDMUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDMUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDMUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDMUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDMUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDMUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDMUIsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDM0IsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDM0IsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7U0FDNUIsQ0FBQztRQUNGLElBQUksaUJBQWlCLENBQUM7UUFDdEIsSUFBSSxzQkFBc0IsR0FBRyxDQUFDLENBQUM7UUFDL0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUU5QixVQUFVLENBQUMsUUFBUSxDQUNqQixPQUFPLEtBQUssS0FBSyxRQUFRO1lBQ3ZCLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFF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QUFHLFNBQVMsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUN4QyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNoQjtxQkFBTTtvQkFDTCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNoQjthQUNIO1lBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3RCO2FBQU07WUFDTixPQUFPLEVBQUUsQ0FBQztTQUNWO0lBQ0YsQ0FBQzsrR0F2b0JVLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBeUVJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyAgcmV0cnkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9ucyB9IGZyb20gJy4uLy4uL2NvbmZpZ3VyYXRpb25zJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XG5pbXBvcnQgeyBERUZBVUxUX1RJTUUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdGltZS5jb25zdGFudHMnO1xuaW1wb3J0IHsgRnJlcXVlbmN5T2JqZWN0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9mcmVxdWVuY3kuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEZyZXF1ZW5jeVNlcnZpY2Uge1xuICBwdWJsaWMgbW9udGhBcnJheTogQXJyYXk8c3RyaW5nPiA9IFtcbiAgICAnSmFudWFyeScsXG4gICAgJ0ZlYnJ1YXJ5JyxcbiAgICAnTWFyY2gnLFxuICAgICdBcHJpbCcsXG4gICAgJ01heScsXG4gICAgJ0p1bmUnLFxuICAgICdKdWx5JyxcbiAgICAnQXVndXN0JyxcbiAgICAnU2VwdGVtYmVyJyxcbiAgICAnT2N0b2JlcicsXG4gICAgJ05vdmVtYmVyJyxcbiAgICAnRGVjZW1iZXInLFxuICBdO1xuXG4gIHB1YmxpYyBkYXlOYW1lOiBBcnJheTxzdHJpbmc+ID0gW1xuICAgICdNb25kYXknLFxuICAgICdUdWVzZGF5JyxcbiAgICAnV2VkbmVzZGF5JyxcbiAgICAnVGh1cnNkYXknLFxuICAgICdGcmlkYXknLFxuICAgICdTYXR1cmRheScsXG4gICAgJ1N1bmRheScsXG4gIF07IC8vIGZ1bGwgZGF5IG5hbWVcblxuICBwdWJsaWMgcXVhcnRlcmx5TW9udGg6IEFycmF5PHN0cmluZz4gPSBbXG4gICAgJ0phbnVhcnksIEFwcmlsLCBKdWx5LCBPY3RvYmVyJyxcbiAgICAnRmVicnVhcnksIE1heSwgQXVndXN0LCBOb3ZlbWJlcicsXG4gICAgJ01hcmNoLCBKdW5lLCBTZXB0ZW1iZXIsIERlY2VtYmVyJyxcbiAgXTtcblxuICBwdWJsaWMgZGF0ZUNvbmZpZyA9IHtcbiAgICBmb3JtYXQ6ICdERCBNTSBZWVlZJyxcbiAgICBzaG93R29Ub0N1cnJlbnQ6IGZhbHNlLFxuICB9O1xuXG4gIHB1YmxpYyBmcmVxdWVuY3lJbmZvID0ge1xuICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICBwYXR0ZXJuOiAnJyxcbiAgICBjYXNlOiAnJyxcbiAgICBmYWlsZWRBZnRlcjogMCxcbiAgICB3aW5kb3c6IDAsXG4gICAgdGltZUluMTJocjogJycsXG4gICAgdGltZUluMjRIcjogJycsXG4gICAgbGlmZWN5Y2xlRGV0YWlsczogJzAwMDAtMDAtMDB+fjAnLFxuICAgIHN0YXJ0RnJvbTogTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXG4gICAgcmVwb3J0SWQ6IDAsXG4gICAgZmFpbGVkX3RpbWVfdXRjOiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcbiAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAwLFxuICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxuICAgIHN0YXJ0RGF0ZTogJycsXG4gIH07XG5cbiAgcHVibGljIGZyZXF1ZW5jeURldGFpbHM6IG9iamVjdCA9IHtcbiAgICBwYXR0ZXJuOiAnJyxcbiAgICBub3RpZmljYXRpb25QZW5kaW5nOiAwLFxuICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxuICAgIGRlYWN0aXZhdGlvblZhbHVlOiAwLFxuICAgIHNlbGVjdGVkUmVwb3J0OiAwLFxuICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxuICAgIHN0YXJ0RGF0ZTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxuICAgIHN0YXJ0T25UaGVEYXk6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcbiAgICB3aW5kb3c6IDAsXG4gICAgZmFpbGVkOiAwLFxuICAgIHRpbWU6IERFRkFVTFRfVElNRSxcbiAgfTtcblxuICBwcml2YXRlIGVudiE6IGFueTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXG4gICkge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcbiAgICB9XG4gIH1cblxuICB0aW1lRnJvbTEyaFRvMjRoKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB0aW1lX2FyciA9IHZhbHVlLnNwbGl0KCcgJyk7XG4gICAgICBjb25zdCBtZXJpZGlhbiA9IHRpbWVfYXJyWzFdO1xuICAgICAgY29uc3QgaHJfbWluID0gdGltZV9hcnJbMF0uc3BsaXQoJzonKS5tYXAoTnVtYmVyKTtcbiAgICAgIGNvbnN0IGhyID0gaHJfbWluWzBdO1xuICAgICAgY29uc3QgbWluID0gaHJfbWluWzFdO1xuXG4gICAgICBsZXQgcmV0dXJuX3RpbWUgPSAnJztcblxuICAgICAgaWYgKG1lcmlkaWFuPy50b0xvd2VyQ2FzZSgpID09ICdwbScpIHtcbiAgICAgICAgaWYgKGhyID09IDEyKSB7XG4gICAgICAgICAgcmV0dXJuX3RpbWUgPSAxMiArICc6JyArIG1pbiArICc6MDAnO1xuICAgICAgICB9IGVsc2UgaWYgKGhyIDwgMTIpIHtcbiAgICAgICAgICByZXR1cm5fdGltZSA9ICtociArIDEyICsgJzonICsgbWluICsgJzowMCc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChociA9PSAxMikge1xuICAgICAgICAgIHJldHVybl90aW1lID0gJzAwOicgKyBtaW4gKyAnOjAwJztcbiAgICAgICAgfSBlbHNlIGlmIChociA8IDEyKSB7XG4gICAgICAgICAgcmV0dXJuX3RpbWUgPSBociArICc6JyArIG1pbiArICc6MDAnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXR1cm5fdGltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIHRpbWVJbjEyKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodmFsdWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgaHI7XG4gICAgICBsZXQgbWluO1xuICAgICAgbGV0IG1lcmlkaWFuO1xuICAgICAgaWYgKHZhbHVlLnNwbGl0KCc6JylbMF0gPj0gMTIpIHtcbiAgICAgICAgaHIgPSB2YWx1ZS5zcGxpdCgnOicpWzBdID09PSAnMTInID8gMTIgOiB2YWx1ZS5zcGxpdCgnOicpWzBdIC0gMTI7XG4gICAgICAgIG1pbiA9IHZhbHVlLnNwbGl0KCc6JylbMV07XG4gICAgICAgIGlmIChtaW4ubGVuZ3RoIDwgMikge1xuICAgICAgICAgIG1pbiA9ICcwJyArIG1pbjtcbiAgICAgICAgfVxuICAgICAgICBtZXJpZGlhbiA9ICdwbSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBociA9IHZhbHVlLnNwbGl0KCc6JylbMF0gPT0gJzAwJyA/IDEyIDogdmFsdWUuc3BsaXQoJzonKVswXTtcbiAgICAgICAgbWluID0gdmFsdWUuc3BsaXQoJzonKVsxXTtcbiAgICAgICAgaWYgKG1pbi5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgbWluID0gJzAnICsgbWluO1xuICAgICAgICB9XG4gICAgICAgIG1lcmlkaWFuID0gJ2FtJztcbiAgICAgIH1cbiAgICAgIHJldHVybiBociArICc6JyArIG1pbiArICcgJyArIG1lcmlkaWFuO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgZnJhbWV3b3JrU3RhcnREYXRlKHJvdzogYW55KSB7XG4gICAgbGV0IGNhbGN1bGF0ZWREYXk6IG51bWJlciA9IDA7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUocGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpICogMTAwMCkuZ2V0RGF5KCk7XG4gICAgY29uc3QgZ2V0RGF0ZSA9IG5ldyBEYXRlKHBhcnNlSW50KHJvdy5zdGFydF9kYXRlKSAqIDEwMDApLmdldERhdGUoKTtcbiAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCkuZ2V0RGF5KCk7XG4gICAgY29uc3Qgc3RhcnRNb250aCA9IG5ldyBEYXRlKHBhcnNlSW50KHJvdy5zdGFydF9kYXRlKSAqIDEwMDApLmdldE1vbnRoKCk7XG5cbiAgICBpZiAoXG4gICAgICBwYXJzZUludChyb3cuc3RhcnRfZGF0ZSkgPCBEYXRlLm5vdygpIC8gMTAwMCAmJlxuICAgICAgKHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgPT09ICdldmVyeSB3ZWVrJyB8fFxuICAgICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgMiB3ZWVrcycgfHxcbiAgICAgICAgcm93LmZyZXF1ZW5jeV90ZW1wbGF0ZSA9PT0gJ2V2ZXJ5IDMgd2Vla3MnKVxuICAgICkge1xuICAgICAgbGV0IGRheXNUb0JlQWRkZWQgPSAwO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgaWYgKChjdXJyZW50RGF0ZSArIGkpICUgNyA9PT0gc3RhcnREYXRlKSB7XG4gICAgICAgICAgZGF5c1RvQmVBZGRlZCA9IGk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHRpbWVzdGFtcFRvQmVBZGRlZCA9IGRheXNUb0JlQWRkZWQgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuICAgICAgY2FsY3VsYXRlZERheSA9IG5ldyBEYXRlKFxuICAgICAgICBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIHRpbWVzdGFtcFRvQmVBZGRlZFxuICAgICAgKS5nZXRUaW1lKCk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHBhcnNlSW50KHJvdy5zdGFydF9kYXRlKSA8IERhdGUubm93KCkgLyAxMDAwICYmXG4gICAgICAhKFxuICAgICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgd2VlaycgfHxcbiAgICAgICAgcm93LmZyZXF1ZW5jeV90ZW1wbGF0ZSA9PT0gJ2V2ZXJ5IDIgd2Vla3MnIHx8XG4gICAgICAgIHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgPT09ICdldmVyeSAzIHdlZWtzJ1xuICAgICAgKSAmJlxuICAgICAgcm93LmZyZXF1ZW5jeV90ZW1wbGF0ZSAhPT0gJ2V2ZXJ5IGRheSdcbiAgICApIHtcbiAgICAgIGNvbnN0IG1vbWVudFVuaXggPSBtb21lbnQoXG4gICAgICAgIGdldERhdGUgK1xuICAgICAgICAgICctJyArXG4gICAgICAgICAgKG5ldyBEYXRlKCkuZ2V0TW9udGgoKSArIDEpICtcbiAgICAgICAgICAnLScgK1xuICAgICAgICAgIG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSArXG4gICAgICAgICAgJyAwMDowMCcsXG4gICAgICAgICdERC1NTS1ZWVlZIEhIOm1tJ1xuICAgICAgKS51bml4KCk7XG4gICAgICBjYWxjdWxhdGVkRGF5ID0gbW9tZW50VW5peCAqIDEwMDA7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgPT09ICdldmVyeSBkYXknICYmXG4gICAgICBwYXJzZUludChyb3cuc3RhcnRfZGF0ZSkgPCBEYXRlLm5vdygpIC8gMTAwMFxuICAgICkge1xuICAgICAgY2FsY3VsYXRlZERheSA9IERhdGUubm93KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGN1bGF0ZWREYXkgPSBwYXJzZUludChyb3cuc3RhcnRfZGF0ZSkgKiAxMDAwO1xuICAgIH1cbiAgICByZXR1cm4gY2FsY3VsYXRlZERheSAvIDEwMDA7XG4gIH1cblxuICBmcmFtZXdvcmtGcmVxdWVuY3koZnJlcXVlbmN5OiBhbnksIHN0YXJ0X2RhdGU6IGFueSkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdGFydERhdGUgPSBuZXcgRGF0ZShzdGFydF9kYXRlICogMTAwMCk7XG4gICAgICBjb25zdCBmaXJzdEhhbGZNb250aCA9IFsnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnXTtcbiAgICAgIGNvbnN0IHNlY29uZEhhbGZNb250aCA9IFsnNycsICc4JywgJzknLCAnMTAnLCAnMTEnLCAnMTInXTtcbiAgICAgIGNvbnN0IGdldERheURhdGEgPSBzdGFydERhdGUuZ2V0RGF5KCkgPT09IDAgPyA3IDogc3RhcnREYXRlLmdldERheSgpO1xuICAgICAgY29uc3QgbW9udGggPSBzdGFydERhdGUuZ2V0TW9udGgoKTtcbiAgICAgIGxldCBxdWFydGVyUGF0dGVybiA9ICd+MSw0LDcsMTB+MCc7XG4gICAgICBzd2l0Y2ggKG1vbnRoKSB7XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICBjYXNlIDY6XG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICBxdWFydGVyUGF0dGVybiA9ICd+MSw0LDcsMTB+MCc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICBjYXNlIDc6XG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgcXVhcnRlclBhdHRlcm4gPSAnfjIsNSw4LDExfjAnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgIGNhc2UgNTpcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICBjYXNlIDExOlxuICAgICAgICAgIHF1YXJ0ZXJQYXR0ZXJuID0gJ34zLDYsOSwxMn4wJztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vIF07XG4gICAgICBsZXQgZnJlcXVlbmN5X3BhdHRlcm47XG5cbiAgICAgIGZyZXF1ZW5jeSA9IGZyZXF1ZW5jeS50b0xvd2VyQ2FzZSgpO1xuICAgICAgbGV0IGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAwO1xuICAgICAgLy8gQCA9PiBkYXkgKDEgdG8gNylcbiAgICAgIC8vICMgPT4gbW9udGggKDEgdG8gMTIpXG4gICAgICAvLyA/ID0+IG1vbnRoICUgMiA9PSAwID8gXCIyLDQsNiw4LDEwLDEyXCIgOiBcIjEsMyw1LDcsOSwxMVwiXG5cbiAgICAgIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSB3ZWVrJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcyficgKyBnZXREYXlEYXRhICsgJ34wfjEnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ29uZSB0aW1lJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XG4gICAgICAgICAgJzB+JyArXG4gICAgICAgICAgc3RhcnREYXRlLmdldEZ1bGxZZWFyKCkgK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgc3RhcnREYXRlLmdldERhdGUoKTtcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgZGF5Jykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcxfjB+MH4xJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSBhbHRlcm5hdGUgZGF5Jykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcxfjB+MH4yJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSAxMCBkYXlzJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcxfjB+MH4xMCc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgMiB3ZWVrcycpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMn4nICsgZ2V0RGF5RGF0YSArICd+MH4yJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSBmb3J0bmlnaHQnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+JyArIGdldERheURhdGEgKyAnfjB+MTQnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDMgd2Vla3MnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzJ+JyArIGdldERheURhdGEgKyAnfjB+Myc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgbW9udGgnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cbiAgICAgICAgICAnM34nICsgc3RhcnREYXRlLmdldERhdGUoKSArICd+MSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJ+MCc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgNDUgZGF5cycpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMX4wfjB+NDUnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IGFsdGVybmF0ZSBtb250aCcpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxuICAgICAgICAgICczficgK1xuICAgICAgICAgIHN0YXJ0RGF0ZS5nZXREYXRlKCkgK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgKChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICUgMiA9PSAwXG4gICAgICAgICAgICA/ICcyLDQsNiw4LDEwLDEyJ1xuICAgICAgICAgICAgOiAnMSwzLDUsNyw5LDExJykgK1xuICAgICAgICAgICd+MCc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgcXVhcnRlcicpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnN34nICsgc3RhcnREYXRlLmdldERhdGUoKSArIHF1YXJ0ZXJQYXR0ZXJuO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSAxMjAgZGF5cycpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMX4wfjB+MTIwJztcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnaGFsZiB5ZWFybHknKSB7XG4gICAgICAgIGNvbnN0IGluZGV4MSA9IGZpcnN0SGFsZk1vbnRoLmluZGV4T2YoXG4gICAgICAgICAgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBpbmRleDIgPSBzZWNvbmRIYWxmTW9udGguaW5kZXhPZihcbiAgICAgICAgICAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHBhdHRlcm4gPVxuICAgICAgICAgIGluZGV4MSA+IC0xXG4gICAgICAgICAgICA/ICd+JyArXG4gICAgICAgICAgICAgIGZpcnN0SGFsZk1vbnRoW2luZGV4MV0gK1xuICAgICAgICAgICAgICAnLCcgK1xuICAgICAgICAgICAgICBzZWNvbmRIYWxmTW9udGhbaW5kZXgxXSArXG4gICAgICAgICAgICAgICd+MCdcbiAgICAgICAgICAgIDogJ34nICtcbiAgICAgICAgICAgICAgZmlyc3RIYWxmTW9udGhbaW5kZXgyXSArXG4gICAgICAgICAgICAgICcsJyArXG4gICAgICAgICAgICAgIHNlY29uZEhhbGZNb250aFtpbmRleDJdICtcbiAgICAgICAgICAgICAgJ34wJztcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnM34nICsgc3RhcnREYXRlLmdldERhdGUoKSArIHBhdHRlcm47XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAneWVhcmx5Jykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XG4gICAgICAgICAgJzR+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnficgKyAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArICd+MSc7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDIgeWVhcnMnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cbiAgICAgICAgICAnNH4nICsgc3RhcnREYXRlLmdldERhdGUoKSArICd+JyArIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICsgJ34yJztcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgMyB5ZWFycycpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxuICAgICAgICAgICc0ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34nICsgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgKyAnfjMnO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSA0IHllYXJzJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XG4gICAgICAgICAgJzR+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnficgKyAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArICd+NCc7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDUgeWVhcnMnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cbiAgICAgICAgICAnNH4nICsgc3RhcnREYXRlLmdldERhdGUoKSArICd+JyArIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICsgJ341JztcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgMTAgeWVhcnMnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cbiAgICAgICAgICAnNH4nICsgc3RhcnREYXRlLmdldERhdGUoKSArICd+JyArIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICsgJ34xMCc7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ3RvIGJlIGRlY2lkZWQgbGF0ZXInKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcnO1xuICAgICAgfVxuICAgICAgLy8gdGhpcy5lZGl0RGF0YS5mcmVxdWVuY3lfZGV0YWlscyA9IGZyZXF1ZW5jeV9wYXR0ZXJuO1xuXG4gICAgICByZXR1cm4geyBmcmVxdWVuY3lfcGF0dGVybiwgY29udGludW91c19mYWlsZWRfZGF5cyB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICByZXR1cm4geyBmcmVxdWVuY3lfcGF0dGVybjogJycsIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDAgfTtcbiAgICB9XG4gIH1cblxuICBzaG9ydEhhbmRfZnJlcUNhbChmcmVxdWVuY3k6IGFueSwgZGF5OiBhbnksIG1vbnRoOiBhbnksIHllYXI/OiBhbnkpIHtcbiAgICBjb25zdCBtb250aE5hbWVzID0gW1xuICAgICAgeyB2YWx1ZTogMSwgbW9udGg6ICdKYW4nIH0sXG4gICAgICB7IHZhbHVlOiAyLCBtb250aDogJ0ZlYicgfSxcbiAgICAgIHsgdmFsdWU6IDMsIG1vbnRoOiAnTWFyJyB9LFxuICAgICAgeyB2YWx1ZTogNCwgbW9udGg6ICdBcHInIH0sXG4gICAgICB7IHZhbHVlOiA1LCBtb250aDogJ01heScgfSxcbiAgICAgIHsgdmFsdWU6IDYsIG1vbnRoOiAnSnVuJyB9LFxuICAgICAgeyB2YWx1ZTogNywgbW9udGg6ICdKdWwnIH0sXG4gICAgICB7IHZhbHVlOiA4LCBtb250aDogJ0F1ZycgfSxcbiAgICAgIHsgdmFsdWU6IDksIG1vbnRoOiAnU2VwJyB9LFxuICAgICAgeyB2YWx1ZTogMTAsIG1vbnRoOiAnT2N0JyB9LFxuICAgICAgeyB2YWx1ZTogMTEsIG1vbnRoOiAnTm92JyB9LFxuICAgICAgeyB2YWx1ZTogMTIsIG1vbnRoOiAnRGVjJyB9LFxuICAgIF07XG4gICAgbGV0IGZyZXF1ZW5jeV9kZXRhaWxzO1xuICAgIGxldCBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMDtcbiAgICBjb25zdCBkYXRlX3ZhbHVlID0gbmV3IERhdGUoKTtcblxuICAgIGRhdGVfdmFsdWUuc2V0TW9udGgoXG4gICAgICB0eXBlb2YgbW9udGggIT09ICdudW1iZXInXG4gICAgICAgID8gbW9udGhOYW1lcy5maWx0ZXIoKHgpID0+IHgubW9udGggPT09IG1vbnRoPy5zdWJzdHJpbmcoMCwgMykpWzBdXG4gICAgICAgICAgICA/LnZhbHVlIC0gMVxuICAgICAgICA6IG1vbnRoXG4gICAgKTtcbiAgICBpZiAoIXllYXIpIHtcbiAgICAgIGRhdGVfdmFsdWUuc2V0RnVsbFllYXIoMjAgKyBtb250aC5zcGxpdChcIidcIilbMV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXRlX3ZhbHVlLnNldEZ1bGxZZWFyKHllYXIpO1xuICAgIH1cbiAgICBkYXRlX3ZhbHVlLnNldERhdGUoZGF5KTtcbiAgICBsZXQgcXVhcnRlclBhdHRlcm4gPSAnfjEsNCw3LDEwfjAnO1xuICAgIGNvbnN0IGZpcnN0SGFsZk1vbnRoID0gWycxJywgJzInLCAnMycsICc0JywgJzUnLCAnNiddO1xuICAgIGNvbnN0IHNlY29uZEhhbGZNb250aCA9IFsnNycsICc4JywgJzknLCAnMTAnLCAnMTEnLCAnMTInXTtcbiAgICBmcmVxdWVuY3kgPSBmcmVxdWVuY3kudG9Mb3dlckNhc2UoKTtcblxuICAgIHN3aXRjaCAoZGF0ZV92YWx1ZS5nZXRNb250aCgpKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICBjYXNlIDM6XG4gICAgICBjYXNlIDY6XG4gICAgICBjYXNlIDk6XG4gICAgICAgIHF1YXJ0ZXJQYXR0ZXJuID0gJ34xLDQsNywxMH4wJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE6XG4gICAgICBjYXNlIDQ6XG4gICAgICBjYXNlIDc6XG4gICAgICBjYXNlIDEwOlxuICAgICAgICBxdWFydGVyUGF0dGVybiA9ICd+Miw1LDgsMTF+MCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgY2FzZSA1OlxuICAgICAgY2FzZSA4OlxuICAgICAgY2FzZSAxMTpcbiAgICAgICAgcXVhcnRlclBhdHRlcm4gPSAnfjMsNiw5LDEyfjAnO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgY29uc3QgZ2V0RGF5ID0gZGF0ZV92YWx1ZS5nZXREYXkoKSA9PT0gMCA/IDcgOiBkYXRlX3ZhbHVlLmdldERheSgpO1xuICAgIHN3aXRjaCAoZnJlcXVlbmN5KSB7XG4gICAgICBjYXNlICdldmVyeSB3ZWVrJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMn4nICsgZ2V0RGF5ICsgJ34wfjEnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb25lIHRpbWUnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XG4gICAgICAgICAgJzB+JyArXG4gICAgICAgICAgJycgK1xuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RnVsbFllYXIoKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgZGF5JzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMX4wfjB+MSc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSBhbHRlcm5hdGUgZGF5JzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMX4wfjB+Mic7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSAxMCBkYXlzJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMX4wfjB+MTAnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgMiB3ZWVrcyc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzJ+JyArIGdldERheSArICd+MH4yJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IGZvcnRuaWdodCc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzF+JyArIGdldERheSArICd+MH4xNCc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSAzIHdlZWtzJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMn4nICsgZ2V0RGF5ICsgJ34wfjMnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgbW9udGgnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XG4gICAgICAgICAgJzN+JyArIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICsgJ34xLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMn4wJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IDQ1IGRheXMnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxfjB+MH40NSc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSBhbHRlcm5hdGUgbW9udGgnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XG4gICAgICAgICAgJzN+JyArXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgKChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKSAlIDIgPT09IDBcbiAgICAgICAgICAgID8gJzIsNCw2LDgsMTAsMTInXG4gICAgICAgICAgICA6ICcxLDMsNSw3LDksMTEnKSArXG4gICAgICAgICAgJ34wJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IHF1YXJ0ZXInOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICc3ficgKyBkYXRlX3ZhbHVlLmdldERhdGUoKSArIHF1YXJ0ZXJQYXR0ZXJuO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IDEyMCBkYXlzJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMX4wfjB+MTIwJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2hhbGYgeWVhcmx5JzpcbiAgICAgICAgY29uc3QgaW5kZXgxID0gZmlyc3RIYWxmTW9udGguaW5kZXhPZihcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBpbmRleDIgPSBzZWNvbmRIYWxmTW9udGguaW5kZXhPZihcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBwYXR0ZXJuID1cbiAgICAgICAgICBpbmRleDEgPiAtMVxuICAgICAgICAgICAgPyAnficgK1xuICAgICAgICAgICAgICBmaXJzdEhhbGZNb250aFtpbmRleDFdICtcbiAgICAgICAgICAgICAgJywnICtcbiAgICAgICAgICAgICAgc2Vjb25kSGFsZk1vbnRoW2luZGV4MV0gK1xuICAgICAgICAgICAgICAnfjAnXG4gICAgICAgICAgICA6ICd+JyArXG4gICAgICAgICAgICAgIGZpcnN0SGFsZk1vbnRoW2luZGV4Ml0gK1xuICAgICAgICAgICAgICAnLCcgK1xuICAgICAgICAgICAgICBzZWNvbmRIYWxmTW9udGhbaW5kZXgyXSArXG4gICAgICAgICAgICAgICd+MCc7XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzN+JyArIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICsgcGF0dGVybjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhbm51YWwnOlxuICAgICAgY2FzZSAneWVhcmx5JzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxuICAgICAgICAgICc0ficgK1xuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgJ34xJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSAyIHllYXJzJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxuICAgICAgICAgICc0ficgK1xuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgJ34yJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSAzIHllYXJzJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxuICAgICAgICAgICc0ficgK1xuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgJ34zJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSA0IHllYXJzJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxuICAgICAgICAgICc0ficgK1xuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgJ340JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSA1IHllYXJzJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxuICAgICAgICAgICc0ficgK1xuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgJ341JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSAxMCB5ZWFycyc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cbiAgICAgICAgICAnNH4nICtcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgK1xuICAgICAgICAgICd+MTAnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29uZ29pbmcnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxMH4wfjB+MCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG8gYmUgZGVjaWRlZCBsYXRlcic6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICc1fjB+MH4wJztcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhdHRlcm46IGZyZXF1ZW5jeV9kZXRhaWxzLFxuICAgICAgY29udGludW91c19mYWlsZWRfZGF5czogY29udGludW91c19mYWlsZWRfZGF5cyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0T25Db21wbGV0aW9uT2ZSZXNwb25zaWJpbGl0eSgpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55W10+KHRoaXMuZW52LmNvbXBsaWFuY2VHZXQgKyAncmVwb3J0cy9vbkNvbXBsZXRpb25PZlJlcG9ydHMnLCB7XG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9KVxuICAgICAgLnBpcGUocmV0cnkoMikpO1xuICB9XG5cbiAgY2hhbmdlVGltZVpvbmUoZGF0ZTogYW55KSB7XG4gICAgaWYgKHR5cGVvZiBkYXRlID09PSAnbnVtYmVyJykge1xuICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgIH1cbiAgICBjb25zdCBpbnZEYXRlID0gbmV3IERhdGUoXG4gICAgICBkYXRlLnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHtcbiAgICAgICAgdGltZVpvbmU6IHRoaXMuYXV0aFNlcnZpY2U/LnVzZXJEZXRhaWxzPy50aW1lem9uZSxcbiAgICAgIH0pXG4gICAgKTtcbiAgICByZXR1cm4gaW52RGF0ZTtcbiAgfVxuXG4gIGdldFJlc3BvbnNpYmlsaXR5TGlzdChwYXlsb2FkOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PGFueT4oXG4gICAgICAgIHRoaXMuZW52LnJlc3BvbnNpYmlsaXR5UG9zdCArICdtYW5hZ2VfcmVzcG9uc2liaWxpdGllc19yZXBvcnRzJyxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDEpKTtcbiAgfVxuXG4gIGdldFJlc3BvbnNpYmlsaXRpZXNDb3VudChwYXlsb2FkOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PGFueT4oXG4gICAgICAgIHRoaXMuZW52LnJlc3BvbnNpYmlsaXR5UG9zdCArICdtYW5hZ2VfcmVzcG9uc2liaWxpdGllc19yZXBvcnRzX2NvdW50JyxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDEpKTtcbiAgfVxuXG4gIGZvcm1hdERhdGUoKSB7XG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGRheSA9IFN0cmluZyhjdXJyZW50RGF0ZT8uZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIGNvbnN0IG1vbnRoID0gU3RyaW5nKGN1cnJlbnREYXRlPy5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCB5ZWFyID0gY3VycmVudERhdGU/LmdldEZ1bGxZZWFyKCk7XG4gICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGAke2RheX0tJHttb250aH0tJHt5ZWFyfWA7XG4gICAgcmV0dXJuIGZvcm1hdHRlZERhdGU7XG4gIH1cbiAgXG4gIHNldEZyZXF1ZW5jeU9iamVjdChmcmVxdWVuY3k6IGFueSk6IEZyZXF1ZW5jeU9iamVjdCB8IG51bGwge1xuICAgIGNvbnN0IHJlcGVhdE9wdGlvbnMgPSB0aGlzLnJlcGVhdE9wdGlvbnMoZnJlcXVlbmN5KTtcbiAgICBjb25zb2xlLmxvZyhyZXBlYXRPcHRpb25zLCAncmVwZWF0T3B0aW9ucycpO1xuICAgIGNvbnN0IGZyZXF1ZW5jeU9iamVjdDogRnJlcXVlbmN5T2JqZWN0ID0ge1xuICAgICAgdHlwZTogZnJlcXVlbmN5LmNhc2UsXG4gICAgICBlbmRBZnRlcjogZnJlcXVlbmN5LmZhaWxlZEFmdGVyLFxuICAgICAgYXV0dG9EZWFjdGl2YXRlOiBmcmVxdWVuY3kuY29udGludW91c19mYWlsZWRfZGF5cyxcbiAgICAgIGRheTogZnJlcXVlbmN5LmRheSwgLy8gaG93IHRvIGJyZWFrIGRheSA/XG4gICAgICB0aW1lOiBmcmVxdWVuY3kudGltZUluMjRocixcbiAgICAgIHJlcGVhdE9wdGlvbnM6IHtcbiAgICAgICAgZXZlcnk6IGZyZXF1ZW5jeS5ldmVyeSxcbiAgICAgICAgcmVwZWF0T246IHJlcGVhdE9wdGlvbnMsXG4gICAgICAgIGxpZmVjeWNsZToge1xuICAgICAgICAgIHN0YXJ0RnJvbTogbW9tZW50KGZyZXF1ZW5jeS5zdGFydEZyb20gKiAxMDAwKS5mb3JtYXQoJ1lZWVktTU0tREQnKSxcbiAgICAgICAgICBlbmRCeTpmcmVxdWVuY3k/LmxpZmVjeWNsZURldGFpbHMgIT09ICcwMDAwLTAwLTAwfn4wJyA/IG1vbWVudChmcmVxdWVuY3kuZmFpbGVkX3RpbWVfdXRjICogMTAwMCkuZm9ybWF0KCdZWVlZLU1NLUREJykgOiB1bmRlZmluZWQsXG4gICAgICAgICAgZW5kQWZ0ZXI6IGZyZXF1ZW5jeS5lbmRBZnRlclxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcmFuZG9tOiB7fSxcbiAgICAgIG9uQ29tcGxldGU6IHt9LFxuICAgICAgb25Hb2luZzoge30sXG4gICAgfVxuICAgIFxuICAgIHJldHVybiBmcmVxdWVuY3lPYmplY3Q7XG4gIH0gXG5cbiAgcmVwZWF0T3B0aW9ucyhmcmVxdWVuY3k6IGFueSk6IHN0cmluZyB7XG4gICBpZihmcmVxdWVuY3k/LnNlbGVjdGVkRGF5Py5sZW5ndGggPiAwKSB7XG4gICAgY29uc3Qgd2Vla0RheXMgPSBbXTtcbiAgICAgZm9yKGxldCBpID0gMDsgaSA8IDc7IGkgKyspIHtcbiAgICAgIGlmKGZyZXF1ZW5jeS5zZWxlY3RlZERheS5pbmNsdWRlcyhpICsgMSkpIHtcbiAgICAgICAgd2Vla0RheXMucHVzaCgxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdlZWtEYXlzLnB1c2goMCk7XG4gICAgICB9XG4gICAgIH1cbiAgICAgY29uc29sZS5sb2cod2Vla0RheXMsICd3ZWVrRGF5cycsIHdlZWtEYXlzLmpvaW4oJycpKTtcbiAgICAgcmV0dXJuIHdlZWtEYXlzLmpvaW4oJycpO1xuICAgfSBlbHNlIGlmKGZyZXF1ZW5jeT8uc2VsZWN0ZWRNb250aD8ubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IG1vbnRocyA9IFsgXTtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgMTI7IGkgKyspIHtcbiAgICAgIGlmKGZyZXF1ZW5jeT8uc2VsZWN0ZWRNb250aD8uaW5jbHVkZXMoaSkpIHtcbiAgICAgICAgbW9udGhzLnB1c2goMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb250aHMucHVzaCgwKTtcbiAgICAgIH1cbiAgIH1cbiAgIHJldHVybiBtb250aHMuam9pbignJyk7XG4gICB9IGVsc2Uge1xuICAgIHJldHVybiAnJztcbiAgIH1cbiAgfVxufVxuIl19
576
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFHLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hDLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUNuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7O0FBSzlELE1BQU0sT0FBTyxnQkFBZ0I7SUFxRTNCLFlBQ1UsSUFBZ0IsRUFDaEIsV0FBd0IsRUFDcEIsTUFBdUI7UUFGM0IsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQXRFM0IsZUFBVSxHQUFrQjtZQUNqQyxTQUFTO1lBQ1QsVUFBVTtZQUNWLE9BQU87WUFDUCxPQUFPO1lBQ1AsS0FBSztZQUNMLE1BQU07WUFDTixNQUFNO1lBQ04sUUFBUTtZQUNSLFdBQVc7WUFDWCxTQUFTO1lBQ1QsVUFBVTtZQUNWLFVBQVU7U0FDWCxDQUFDO1FBRUssWUFBTyxHQUFrQjtZQUM5QixRQUFRO1lBQ1IsU0FBUztZQUNULFdBQVc7WUFDWCxVQUFVO1lBQ1YsUUFBUTtZQUNSLFVBQVU7WUFDVixRQUFRO1NBQ1QsQ0FBQyxDQUFDLGdCQUFnQjtRQUVaLG1CQUFjLEdBQWtCO1lBQ3JDLCtCQUErQjtZQUMvQixpQ0FBaUM7WUFDakMsa0NBQWtDO1NBQ25DLENBQUM7UUFFSyxlQUFVLEdBQUc7WUFDbEIsTUFBTSxFQUFFLFlBQVk7WUFDcEIsZUFB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QVU7UUFDaEUsTUFBTSxVQUFVLEdBQUc7WUFDakIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDMUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDMUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDMUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDMUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDMUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDMUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDMUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDMUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDMUIsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDM0IsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDM0IsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7U0FDNUIsQ0FBQztRQUNGLElBQUksaUJBQWlCLENBQUM7UUFDdEIsSUFBSSxzQkFBc0IsR0FBRyxDQUFDLENBQUM7UUFDL0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUU5QixVQUFVLENBQUMsUUFBUSxDQUNqQixPQUFPLEtBQUssS0FBSyxRQUFRO1lBQ3ZCLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFF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SUFFRCxVQUFVO1FBQ1IsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUMvQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM1RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkUsTUFBTSxJQUFJLEdBQUcsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sYUFBYSxHQUFHLEdBQUcsR0FBRyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNoRCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDOytHQWxsQlUsZ0JBQWdCO21IQUFoQixnQkFBZ0IsY0FGZixNQUFNOzs0RkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkF5RUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7ICByZXRyeSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbnMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcbmltcG9ydCB7IERFRkFVTFRfVElNRSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy90aW1lLmNvbnN0YW50cyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBGcmVxdWVuY3lTZXJ2aWNlIHtcbiAgcHVibGljIG1vbnRoQXJyYXk6IEFycmF5PHN0cmluZz4gPSBbXG4gICAgJ0phbnVhcnknLFxuICAgICdGZWJydWFyeScsXG4gICAgJ01hcmNoJyxcbiAgICAnQXByaWwnLFxuICAgICdNYXknLFxuICAgICdKdW5lJyxcbiAgICAnSnVseScsXG4gICAgJ0F1Z3VzdCcsXG4gICAgJ1NlcHRlbWJlcicsXG4gICAgJ09jdG9iZXInLFxuICAgICdOb3ZlbWJlcicsXG4gICAgJ0RlY2VtYmVyJyxcbiAgXTtcblxuICBwdWJsaWMgZGF5TmFtZTogQXJyYXk8c3RyaW5nPiA9IFtcbiAgICAnTW9uZGF5JyxcbiAgICAnVHVlc2RheScsXG4gICAgJ1dlZG5lc2RheScsXG4gICAgJ1RodXJzZGF5JyxcbiAgICAnRnJpZGF5JyxcbiAgICAnU2F0dXJkYXknLFxuICAgICdTdW5kYXknLFxuICBdOyAvLyBmdWxsIGRheSBuYW1lXG5cbiAgcHVibGljIHF1YXJ0ZXJseU1vbnRoOiBBcnJheTxzdHJpbmc+ID0gW1xuICAgICdKYW51YXJ5LCBBcHJpbCwgSnVseSwgT2N0b2JlcicsXG4gICAgJ0ZlYnJ1YXJ5LCBNYXksIEF1Z3VzdCwgTm92ZW1iZXInLFxuICAgICdNYXJjaCwgSnVuZSwgU2VwdGVtYmVyLCBEZWNlbWJlcicsXG4gIF07XG5cbiAgcHVibGljIGRhdGVDb25maWcgPSB7XG4gICAgZm9ybWF0OiAnREQgTU0gWVlZWScsXG4gICAgc2hvd0dvVG9DdXJyZW50OiBmYWxzZSxcbiAgfTtcblxuICBwdWJsaWMgZnJlcXVlbmN5SW5mbyA9IHtcbiAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgcGF0dGVybjogJycsXG4gICAgY2FzZTogJycsXG4gICAgZmFpbGVkQWZ0ZXI6IDAsXG4gICAgd2luZG93OiAwLFxuICAgIHRpbWVJbjEyaHI6ICcnLFxuICAgIHRpbWVJbjI0SHI6ICcnLFxuICAgIGxpZmVjeWNsZURldGFpbHM6ICcwMDAwLTAwLTAwfn4wJyxcbiAgICBzdGFydEZyb206IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApLFxuICAgIHJlcG9ydElkOiAwLFxuICAgIGZhaWxlZF90aW1lX3V0YzogTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXG4gICAgY29udGludW91c19mYWlsZWRfZGF5czogMCxcbiAgICBkYXRlT2ZNb2RpZmllZDogMCxcbiAgICBzdGFydERhdGU6ICcnLFxuICB9O1xuXG4gIHB1YmxpYyBmcmVxdWVuY3lEZXRhaWxzOiBvYmplY3QgPSB7XG4gICAgcGF0dGVybjogJycsXG4gICAgbm90aWZpY2F0aW9uUGVuZGluZzogMCxcbiAgICBkYXRlT2ZNb2RpZmllZDogMCxcbiAgICBkZWFjdGl2YXRpb25WYWx1ZTogMCxcbiAgICBzZWxlY3RlZFJlcG9ydDogMCxcbiAgICBsaWZlY3ljbGU6ICcwMDAwLTAwLTAwfn4wJyxcbiAgICBzdGFydERhdGU6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcbiAgICBzdGFydE9uVGhlRGF5OiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgd2luZG93OiAwLFxuICAgIGZhaWxlZDogMCxcbiAgICB0aW1lOiBERUZBVUxUX1RJTUUsXG4gIH07XG5cbiAgcHJpdmF0ZSBlbnYhOiBhbnk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBjb25maWc/OiBDb25maWd1cmF0aW9uc1xuICApIHtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICB0aGlzLmVudiA9IGNvbmZpZy5lbnZDb25maWc7XG4gICAgfVxuICB9XG5cbiAgdGltZUZyb20xMmhUbzI0aCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlICE9IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgdGltZV9hcnIgPSB2YWx1ZS5zcGxpdCgnICcpO1xuICAgICAgY29uc3QgbWVyaWRpYW4gPSB0aW1lX2FyclsxXTtcbiAgICAgIGNvbnN0IGhyX21pbiA9IHRpbWVfYXJyWzBdLnNwbGl0KCc6JykubWFwKE51bWJlcik7XG4gICAgICBjb25zdCBociA9IGhyX21pblswXTtcbiAgICAgIGNvbnN0IG1pbiA9IGhyX21pblsxXTtcblxuICAgICAgbGV0IHJldHVybl90aW1lID0gJyc7XG5cbiAgICAgIGlmIChtZXJpZGlhbj8udG9Mb3dlckNhc2UoKSA9PSAncG0nKSB7XG4gICAgICAgIGlmIChociA9PSAxMikge1xuICAgICAgICAgIHJldHVybl90aW1lID0gMTIgKyAnOicgKyBtaW4gKyAnOjAwJztcbiAgICAgICAgfSBlbHNlIGlmIChociA8IDEyKSB7XG4gICAgICAgICAgcmV0dXJuX3RpbWUgPSAraHIgKyAxMiArICc6JyArIG1pbiArICc6MDAnO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaHIgPT0gMTIpIHtcbiAgICAgICAgICByZXR1cm5fdGltZSA9ICcwMDonICsgbWluICsgJzowMCc7XG4gICAgICAgIH0gZWxzZSBpZiAoaHIgPCAxMikge1xuICAgICAgICAgIHJldHVybl90aW1lID0gaHIgKyAnOicgKyBtaW4gKyAnOjAwJztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmV0dXJuX3RpbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICB0aW1lSW4xMih2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlICE9IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IGhyO1xuICAgICAgbGV0IG1pbjtcbiAgICAgIGxldCBtZXJpZGlhbjtcbiAgICAgIGlmICh2YWx1ZS5zcGxpdCgnOicpWzBdID49IDEyKSB7XG4gICAgICAgIGhyID0gdmFsdWUuc3BsaXQoJzonKVswXSA9PT0gJzEyJyA/IDEyIDogdmFsdWUuc3BsaXQoJzonKVswXSAtIDEyO1xuICAgICAgICBtaW4gPSB2YWx1ZS5zcGxpdCgnOicpWzFdO1xuICAgICAgICBpZiAobWluLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICBtaW4gPSAnMCcgKyBtaW47XG4gICAgICAgIH1cbiAgICAgICAgbWVyaWRpYW4gPSAncG0nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaHIgPSB2YWx1ZS5zcGxpdCgnOicpWzBdID09ICcwMCcgPyAxMiA6IHZhbHVlLnNwbGl0KCc6JylbMF07XG4gICAgICAgIG1pbiA9IHZhbHVlLnNwbGl0KCc6JylbMV07XG4gICAgICAgIGlmIChtaW4ubGVuZ3RoIDwgMikge1xuICAgICAgICAgIG1pbiA9ICcwJyArIG1pbjtcbiAgICAgICAgfVxuICAgICAgICBtZXJpZGlhbiA9ICdhbSc7XG4gICAgICB9XG4gICAgICByZXR1cm4gaHIgKyAnOicgKyBtaW4gKyAnICcgKyBtZXJpZGlhbjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIGZyYW1ld29ya1N0YXJ0RGF0ZShyb3c6IGFueSkge1xuICAgIGxldCBjYWxjdWxhdGVkRGF5OiBudW1iZXIgPSAwO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHBhcnNlSW50KHJvdy5zdGFydF9kYXRlKSAqIDEwMDApLmdldERheSgpO1xuICAgIGNvbnN0IGdldERhdGUgPSBuZXcgRGF0ZShwYXJzZUludChyb3cuc3RhcnRfZGF0ZSkgKiAxMDAwKS5nZXREYXRlKCk7XG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpLmdldERheSgpO1xuICAgIGNvbnN0IHN0YXJ0TW9udGggPSBuZXcgRGF0ZShwYXJzZUludChyb3cuc3RhcnRfZGF0ZSkgKiAxMDAwKS5nZXRNb250aCgpO1xuXG4gICAgaWYgKFxuICAgICAgcGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpIDwgRGF0ZS5ub3coKSAvIDEwMDAgJiZcbiAgICAgIChyb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgd2VlaycgfHxcbiAgICAgICAgcm93LmZyZXF1ZW5jeV90ZW1wbGF0ZSA9PT0gJ2V2ZXJ5IDIgd2Vla3MnIHx8XG4gICAgICAgIHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgPT09ICdldmVyeSAzIHdlZWtzJylcbiAgICApIHtcbiAgICAgIGxldCBkYXlzVG9CZUFkZGVkID0gMDtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICAgIGlmICgoY3VycmVudERhdGUgKyBpKSAlIDcgPT09IHN0YXJ0RGF0ZSkge1xuICAgICAgICAgIGRheXNUb0JlQWRkZWQgPSBpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCB0aW1lc3RhbXBUb0JlQWRkZWQgPSBkYXlzVG9CZUFkZGVkICogMjQgKiA2MCAqIDYwICogMTAwMDtcbiAgICAgIGNhbGN1bGF0ZWREYXkgPSBuZXcgRGF0ZShcbiAgICAgICAgbmV3IERhdGUoKS5nZXRUaW1lKCkgKyB0aW1lc3RhbXBUb0JlQWRkZWRcbiAgICAgICkuZ2V0VGltZSgpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBwYXJzZUludChyb3cuc3RhcnRfZGF0ZSkgPCBEYXRlLm5vdygpIC8gMTAwMCAmJlxuICAgICAgIShcbiAgICAgICAgcm93LmZyZXF1ZW5jeV90ZW1wbGF0ZSA9PT0gJ2V2ZXJ5IHdlZWsnIHx8XG4gICAgICAgIHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgPT09ICdldmVyeSAyIHdlZWtzJyB8fFxuICAgICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgMyB3ZWVrcydcbiAgICAgICkgJiZcbiAgICAgIHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgIT09ICdldmVyeSBkYXknXG4gICAgKSB7XG4gICAgICBjb25zdCBtb21lbnRVbml4ID0gbW9tZW50KFxuICAgICAgICBnZXREYXRlICtcbiAgICAgICAgICAnLScgK1xuICAgICAgICAgIChuZXcgRGF0ZSgpLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgJy0nICtcbiAgICAgICAgICBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgK1xuICAgICAgICAgICcgMDA6MDAnLFxuICAgICAgICAnREQtTU0tWVlZWSBISDptbSdcbiAgICAgICkudW5peCgpO1xuICAgICAgY2FsY3VsYXRlZERheSA9IG1vbWVudFVuaXggKiAxMDAwO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgZGF5JyAmJlxuICAgICAgcGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpIDwgRGF0ZS5ub3coKSAvIDEwMDBcbiAgICApIHtcbiAgICAgIGNhbGN1bGF0ZWREYXkgPSBEYXRlLm5vdygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxjdWxhdGVkRGF5ID0gcGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpICogMTAwMDtcbiAgICB9XG4gICAgcmV0dXJuIGNhbGN1bGF0ZWREYXkgLyAxMDAwO1xuICB9XG5cbiAgZnJhbWV3b3JrRnJlcXVlbmN5KGZyZXF1ZW5jeTogYW55LCBzdGFydF9kYXRlOiBhbnkpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoc3RhcnRfZGF0ZSAqIDEwMDApO1xuICAgICAgY29uc3QgZmlyc3RIYWxmTW9udGggPSBbJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2J107XG4gICAgICBjb25zdCBzZWNvbmRIYWxmTW9udGggPSBbJzcnLCAnOCcsICc5JywgJzEwJywgJzExJywgJzEyJ107XG4gICAgICBjb25zdCBnZXREYXlEYXRhID0gc3RhcnREYXRlLmdldERheSgpID09PSAwID8gNyA6IHN0YXJ0RGF0ZS5nZXREYXkoKTtcbiAgICAgIGNvbnN0IG1vbnRoID0gc3RhcnREYXRlLmdldE1vbnRoKCk7XG4gICAgICBsZXQgcXVhcnRlclBhdHRlcm4gPSAnfjEsNCw3LDEwfjAnO1xuICAgICAgc3dpdGNoIChtb250aCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgcXVhcnRlclBhdHRlcm4gPSAnfjEsNCw3LDEwfjAnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgY2FzZSA3OlxuICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgIHF1YXJ0ZXJQYXR0ZXJuID0gJ34yLDUsOCwxMX4wJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICBjYXNlIDU6XG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICBxdWFydGVyUGF0dGVybiA9ICd+Myw2LDksMTJ+MCc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBdO1xuICAgICAgbGV0IGZyZXF1ZW5jeV9wYXR0ZXJuO1xuXG4gICAgICBmcmVxdWVuY3kgPSBmcmVxdWVuY3kudG9Mb3dlckNhc2UoKTtcbiAgICAgIGxldCBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMDtcbiAgICAgIC8vIEAgPT4gZGF5ICgxIHRvIDcpXG4gICAgICAvLyAjID0+IG1vbnRoICgxIHRvIDEyKVxuICAgICAgLy8gPyA9PiBtb250aCAlIDIgPT0gMCA/IFwiMiw0LDYsOCwxMCwxMlwiIDogXCIxLDMsNSw3LDksMTFcIlxuXG4gICAgICBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgd2VlaycpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMn4nICsgZ2V0RGF5RGF0YSArICd+MH4xJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdvbmUgdGltZScpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxuICAgICAgICAgICcwficgK1xuICAgICAgICAgIHN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIHN0YXJ0RGF0ZS5nZXREYXRlKCk7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IGRheScpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMX4wfjB+MSc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgYWx0ZXJuYXRlIGRheScpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMX4wfjB+Mic7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgMTAgZGF5cycpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMX4wfjB+MTAnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDIgd2Vla3MnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzJ+JyArIGdldERheURhdGEgKyAnfjB+Mic7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgZm9ydG5pZ2h0Jykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcxficgKyBnZXREYXlEYXRhICsgJ34wfjE0JztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSAzIHdlZWtzJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcyficgKyBnZXREYXlEYXRhICsgJ34wfjMnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IG1vbnRoJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XG4gICAgICAgICAgJzN+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnfjEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyfjAnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDQ1IGRheXMnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+MH4wfjQ1JztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSBhbHRlcm5hdGUgbW9udGgnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cbiAgICAgICAgICAnM34nICtcbiAgICAgICAgICBzdGFydERhdGUuZ2V0RGF0ZSgpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgICgoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSAlIDIgPT0gMFxuICAgICAgICAgICAgPyAnMiw0LDYsOCwxMCwxMidcbiAgICAgICAgICAgIDogJzEsMyw1LDcsOSwxMScpICtcbiAgICAgICAgICAnfjAnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IHF1YXJ0ZXInKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzd+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyBxdWFydGVyUGF0dGVybjtcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgMTIwIGRheXMnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+MH4wfjEyMCc7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2hhbGYgeWVhcmx5Jykge1xuICAgICAgICBjb25zdCBpbmRleDEgPSBmaXJzdEhhbGZNb250aC5pbmRleE9mKFxuICAgICAgICAgIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgaW5kZXgyID0gc2Vjb25kSGFsZk1vbnRoLmluZGV4T2YoXG4gICAgICAgICAgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBwYXR0ZXJuID1cbiAgICAgICAgICBpbmRleDEgPiAtMVxuICAgICAgICAgICAgPyAnficgK1xuICAgICAgICAgICAgICBmaXJzdEhhbGZNb250aFtpbmRleDFdICtcbiAgICAgICAgICAgICAgJywnICtcbiAgICAgICAgICAgICAgc2Vjb25kSGFsZk1vbnRoW2luZGV4MV0gK1xuICAgICAgICAgICAgICAnfjAnXG4gICAgICAgICAgICA6ICd+JyArXG4gICAgICAgICAgICAgIGZpcnN0SGFsZk1vbnRoW2luZGV4Ml0gK1xuICAgICAgICAgICAgICAnLCcgK1xuICAgICAgICAgICAgICBzZWNvbmRIYWxmTW9udGhbaW5kZXgyXSArXG4gICAgICAgICAgICAgICd+MCc7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzN+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyBwYXR0ZXJuO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ3llYXJseScpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxuICAgICAgICAgICc0ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34nICsgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgKyAnfjEnO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSAyIHllYXJzJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XG4gICAgICAgICAgJzR+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnficgKyAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArICd+Mic7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDMgeWVhcnMnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cbiAgICAgICAgICAnNH4nICsgc3RhcnREYXRlLmdldERhdGUoKSArICd+JyArIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICsgJ34zJztcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgNCB5ZWFycycpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxuICAgICAgICAgICc0ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34nICsgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgKyAnfjQnO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSA1IHllYXJzJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XG4gICAgICAgICAgJzR+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnficgKyAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArICd+NSc7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDEwIHllYXJzJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XG4gICAgICAgICAgJzR+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnficgKyAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArICd+MTAnO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICd0byBiZSBkZWNpZGVkIGxhdGVyJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnJztcbiAgICAgIH1cbiAgICAgIC8vIHRoaXMuZWRpdERhdGEuZnJlcXVlbmN5X2RldGFpbHMgPSBmcmVxdWVuY3lfcGF0dGVybjtcblxuICAgICAgcmV0dXJuIHsgZnJlcXVlbmN5X3BhdHRlcm4sIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgcmV0dXJuIHsgZnJlcXVlbmN5X3BhdHRlcm46ICcnLCBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAwIH07XG4gICAgfVxuICB9XG5cbiAgc2hvcnRIYW5kX2ZyZXFDYWwoZnJlcXVlbmN5OiBhbnksIGRheTogYW55LCBtb250aDogYW55LCB5ZWFyPzogYW55KSB7XG4gICAgY29uc3QgbW9udGhOYW1lcyA9IFtcbiAgICAgIHsgdmFsdWU6IDEsIG1vbnRoOiAnSmFuJyB9LFxuICAgICAgeyB2YWx1ZTogMiwgbW9udGg6ICdGZWInIH0sXG4gICAgICB7IHZhbHVlOiAzLCBtb250aDogJ01hcicgfSxcbiAgICAgIHsgdmFsdWU6IDQsIG1vbnRoOiAnQXByJyB9LFxuICAgICAgeyB2YWx1ZTogNSwgbW9udGg6ICdNYXknIH0sXG4gICAgICB7IHZhbHVlOiA2LCBtb250aDogJ0p1bicgfSxcbiAgICAgIHsgdmFsdWU6IDcsIG1vbnRoOiAnSnVsJyB9LFxuICAgICAgeyB2YWx1ZTogOCwgbW9udGg6ICdBdWcnIH0sXG4gICAgICB7IHZhbHVlOiA5LCBtb250aDogJ1NlcCcgfSxcbiAgICAgIHsgdmFsdWU6IDEwLCBtb250aDogJ09jdCcgfSxcbiAgICAgIHsgdmFsdWU6IDExLCBtb250aDogJ05vdicgfSxcbiAgICAgIHsgdmFsdWU6IDEyLCBtb250aDogJ0RlYycgfSxcbiAgICBdO1xuICAgIGxldCBmcmVxdWVuY3lfZGV0YWlscztcbiAgICBsZXQgY29udGludW91c19mYWlsZWRfZGF5cyA9IDA7XG4gICAgY29uc3QgZGF0ZV92YWx1ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICBkYXRlX3ZhbHVlLnNldE1vbnRoKFxuICAgICAgdHlwZW9mIG1vbnRoICE9PSAnbnVtYmVyJ1xuICAgICAgICA/IG1vbnRoTmFtZXMuZmlsdGVyKCh4KSA9PiB4Lm1vbnRoID09PSBtb250aD8uc3Vic3RyaW5nKDAsIDMpKVswXVxuICAgICAgICAgICAgPy52YWx1ZSAtIDFcbiAgICAgICAgOiBtb250aFxuICAgICk7XG4gICAgaWYgKCF5ZWFyKSB7XG4gICAgICBkYXRlX3ZhbHVlLnNldEZ1bGxZZWFyKDIwICsgbW9udGguc3BsaXQoXCInXCIpWzFdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0ZV92YWx1ZS5zZXRGdWxsWWVhcih5ZWFyKTtcbiAgICB9XG4gICAgZGF0ZV92YWx1ZS5zZXREYXRlKGRheSk7XG4gICAgbGV0IHF1YXJ0ZXJQYXR0ZXJuID0gJ34xLDQsNywxMH4wJztcbiAgICBjb25zdCBmaXJzdEhhbGZNb250aCA9IFsnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnXTtcbiAgICBjb25zdCBzZWNvbmRIYWxmTW9udGggPSBbJzcnLCAnOCcsICc5JywgJzEwJywgJzExJywgJzEyJ107XG4gICAgZnJlcXVlbmN5ID0gZnJlcXVlbmN5LnRvTG93ZXJDYXNlKCk7XG5cbiAgICBzd2l0Y2ggKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSkge1xuICAgICAgY2FzZSAwOlxuICAgICAgY2FzZSAzOlxuICAgICAgY2FzZSA2OlxuICAgICAgY2FzZSA5OlxuICAgICAgICBxdWFydGVyUGF0dGVybiA9ICd+MSw0LDcsMTB+MCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgY2FzZSA0OlxuICAgICAgY2FzZSA3OlxuICAgICAgY2FzZSAxMDpcbiAgICAgICAgcXVhcnRlclBhdHRlcm4gPSAnfjIsNSw4LDExfjAnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgIGNhc2UgNTpcbiAgICAgIGNhc2UgODpcbiAgICAgIGNhc2UgMTE6XG4gICAgICAgIHF1YXJ0ZXJQYXR0ZXJuID0gJ34zLDYsOSwxMn4wJztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNvbnN0IGdldERheSA9IGRhdGVfdmFsdWUuZ2V0RGF5KCkgPT09IDAgPyA3IDogZGF0ZV92YWx1ZS5nZXREYXkoKTtcbiAgICBzd2l0Y2ggKGZyZXF1ZW5jeSkge1xuICAgICAgY2FzZSAnZXZlcnkgd2Vlayc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzJ+JyArIGdldERheSArICd+MH4xJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29uZSB0aW1lJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxuICAgICAgICAgICcwficgK1xuICAgICAgICAgICcnICtcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldEZ1bGxZZWFyKCkgK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IGRheSc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzF+MH4wfjEnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgYWx0ZXJuYXRlIGRheSc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzF+MH4wfjInO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgMTAgZGF5cyc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzF+MH4wfjEwJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IDIgd2Vla3MnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcyficgKyBnZXREYXkgKyAnfjB+Mic7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSBmb3J0bmlnaHQnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxficgKyBnZXREYXkgKyAnfjB+MTQnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgMyB3ZWVrcyc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzJ+JyArIGdldERheSArICd+MH4zJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IG1vbnRoJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxuICAgICAgICAgICczficgKyBkYXRlX3ZhbHVlLmdldERhdGUoKSArICd+MSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJ+MCc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSA0NSBkYXlzJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMX4wfjB+NDUnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgYWx0ZXJuYXRlIG1vbnRoJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxuICAgICAgICAgICczficgK1xuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgICgoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgJSAyID09PSAwXG4gICAgICAgICAgICA/ICcyLDQsNiw4LDEwLDEyJ1xuICAgICAgICAgICAgOiAnMSwzLDUsNyw5LDExJykgK1xuICAgICAgICAgICd+MCc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSBxdWFydGVyJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnN34nICsgZGF0ZV92YWx1ZS5nZXREYXRlKCkgKyBxdWFydGVyUGF0dGVybjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSAxMjAgZGF5cyc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzF+MH4wfjEyMCc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdoYWxmIHllYXJseSc6XG4gICAgICAgIGNvbnN0IGluZGV4MSA9IGZpcnN0SGFsZk1vbnRoLmluZGV4T2YoXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgaW5kZXgyID0gc2Vjb25kSGFsZk1vbnRoLmluZGV4T2YoXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcGF0dGVybiA9XG4gICAgICAgICAgaW5kZXgxID4gLTFcbiAgICAgICAgICAgID8gJ34nICtcbiAgICAgICAgICAgICAgZmlyc3RIYWxmTW9udGhbaW5kZXgxXSArXG4gICAgICAgICAgICAgICcsJyArXG4gICAgICAgICAgICAgIHNlY29uZEhhbGZNb250aFtpbmRleDFdICtcbiAgICAgICAgICAgICAgJ34wJ1xuICAgICAgICAgICAgOiAnficgK1xuICAgICAgICAgICAgICBmaXJzdEhhbGZNb250aFtpbmRleDJdICtcbiAgICAgICAgICAgICAgJywnICtcbiAgICAgICAgICAgICAgc2Vjb25kSGFsZk1vbnRoW2luZGV4Ml0gK1xuICAgICAgICAgICAgICAnfjAnO1xuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICczficgKyBkYXRlX3ZhbHVlLmdldERhdGUoKSArIHBhdHRlcm47XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYW5udWFsJzpcbiAgICAgIGNhc2UgJ3llYXJseSc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cbiAgICAgICAgICAnNH4nICtcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgK1xuICAgICAgICAgICd+MSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgMiB5ZWFycyc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cbiAgICAgICAgICAnNH4nICtcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgK1xuICAgICAgICAgICd+Mic7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgMyB5ZWFycyc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cbiAgICAgICAgICAnNH4nICtcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgK1xuICAgICAgICAgICd+Myc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgNCB5ZWFycyc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cbiAgICAgICAgICAnNH4nICtcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgK1xuICAgICAgICAgICd+NCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgNSB5ZWFycyc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cbiAgICAgICAgICAnNH4nICtcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICAoZGF0ZV92YWx1ZS5nZXRNb250aCgpICsgMSkgK1xuICAgICAgICAgICd+NSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgMTAgeWVhcnMnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XG4gICAgICAgICAgJzR+JyArXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcbiAgICAgICAgICAnfjEwJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvbmdvaW5nJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMTB+MH4wfjAnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvIGJlIGRlY2lkZWQgbGF0ZXInOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnNX4wfjB+MCc7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwYXR0ZXJuOiBmcmVxdWVuY3lfZGV0YWlscyxcbiAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IGNvbnRpbnVvdXNfZmFpbGVkX2RheXMsXG4gICAgfTtcbiAgfVxuXG4gIGdldE9uQ29tcGxldGlvbk9mUmVzcG9uc2liaWxpdHkoKSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueVtdPih0aGlzLmVudi5jb21wbGlhbmNlR2V0ICsgJ3JlcG9ydHMvb25Db21wbGV0aW9uT2ZSZXBvcnRzJywge1xuICAgICAgICBoZWFkZXJzLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHJldHJ5KDIpKTtcbiAgfVxuXG4gIGNoYW5nZVRpbWVab25lKGRhdGU6IGFueSkge1xuICAgIGlmICh0eXBlb2YgZGF0ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICB9XG4gICAgY29uc3QgaW52RGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgZGF0ZS50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7XG4gICAgICAgIHRpbWVab25lOiB0aGlzLmF1dGhTZXJ2aWNlPy51c2VyRGV0YWlscz8udGltZXpvbmUsXG4gICAgICB9KVxuICAgICk7XG4gICAgcmV0dXJuIGludkRhdGU7XG4gIH1cblxuICBnZXRSZXNwb25zaWJpbGl0eUxpc3QocGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdDxhbnk+KFxuICAgICAgICB0aGlzLmVudi5yZXNwb25zaWJpbGl0eVBvc3QgKyAnbWFuYWdlX3Jlc3BvbnNpYmlsaXRpZXNfcmVwb3J0cycsXG4gICAgICAgIHBheWxvYWQsXG4gICAgICAgIHsgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgxKSk7XG4gIH1cblxuICBnZXRSZXNwb25zaWJpbGl0aWVzQ291bnQocGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdDxhbnk+KFxuICAgICAgICB0aGlzLmVudi5yZXNwb25zaWJpbGl0eVBvc3QgKyAnbWFuYWdlX3Jlc3BvbnNpYmlsaXRpZXNfcmVwb3J0c19jb3VudCcsXG4gICAgICAgIHBheWxvYWQsXG4gICAgICAgIHsgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShyZXRyeSgxKSk7XG4gIH1cblxuICBmb3JtYXREYXRlKCkge1xuICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBkYXkgPSBTdHJpbmcoY3VycmVudERhdGU/LmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCBtb250aCA9IFN0cmluZyhjdXJyZW50RGF0ZT8uZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgY29uc3QgeWVhciA9IGN1cnJlbnREYXRlPy5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBgJHtkYXl9LSR7bW9udGh9LSR7eWVhcn1gO1xuICAgIHJldHVybiBmb3JtYXR0ZWREYXRlO1xuICB9XG59XG4iXX0=