vcomply-workflow-engine 7.3.2 → 7.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/sharedComponents/frequency/frequency.service.mjs +2 -1
- package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +5 -4
- package/fesm2022/vcomply-workflow-engine.mjs +5 -3
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -656,6 +656,7 @@ export class FrequencyService {
|
|
|
656
656
|
return frequencyObject;
|
|
657
657
|
}
|
|
658
658
|
repeatOptions(frequency) {
|
|
659
|
+
console.log(frequency, 'repeatOptions frequency');
|
|
659
660
|
if (frequency?.selectedDay?.length > 0) {
|
|
660
661
|
const weekDays = [];
|
|
661
662
|
for (let i = 0; i < 7; i++) {
|
|
@@ -847,4 +848,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
847
848
|
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.AuthService }, { type: i3.GrcService }, { type: i4.Configurations, decorators: [{
|
|
848
849
|
type: Optional
|
|
849
850
|
}] }]; } });
|
|
850
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFHLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hDLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUNuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXBELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQUlwRSxNQUFNLE9BQU8sZ0JBQWdCO0lBcUUzQixZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3hCLFVBQXNCLEVBQ2xCLE1BQXVCO1FBSDNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXZFekIsZUFBVSxHQUFrQjtZQUNqQyxTQUFTO1lBQ1QsVUFBVTtZQUNWLE9BQU87WUFDUCxPQUFPO1lBQ1AsS0FBSztZQUNMLE1BQU07WUFDTixNQUFNO1lBQ04sUUFBUTtZQUNSLFdBQVc7WUFDWCxTQUFTO1lBQ1QsVUFBVTtZQUNWLFVBQVU7U0FDWCxDQUFDO1FBRUssWUFBTyxHQUFrQjtZQUM5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QUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVTtTQUNuRSxDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRTFDLE9BQU8sR0FBRyxHQUFHLElBQUksS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSSxZQUFZLENBQUMsYUFBcUI7UUFDdkMsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLGFBQWEsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUNoRixDQUFDOytHQTcyQlksZ0JBQWdCO21IQUFoQixnQkFBZ0IsY0FGZixNQUFNOzs0RkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkEwRUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7ICByZXRyeSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25zIH0gZnJvbSAnLi4vLi4vY29uZmlndXJhdGlvbnMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQvbW9tZW50JztcbmltcG9ydCB7IERFRkFVTFRfVElNRSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy90aW1lLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBGcmVxdWVuY3lPYmplY3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2ZyZXF1ZW5jeS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQVBJIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2FwaS5jb25zdGFudHMnO1xuaW1wb3J0IHsgR3JjU2VydmljZSB9IGZyb20gJy4uLy4uL3dvcmtmbG93L3NoYXJlZC9zZXJ2aWNlcy9ncmMuc2VydmljZSc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHsgTU9OVEhfTkFNRVMgfSBmcm9tICcuL2ZyZXF1ZW5jeS5jb25zdGFudCc7XG5pbXBvcnQgeyBQQUdJTkFUSU9OX0xJTUlUIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbW1vbi5jb25zdGFudHMnO1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEZyZXF1ZW5jeVNlcnZpY2Uge1xuICBwdWJsaWMgbW9udGhBcnJheTogQXJyYXk8c3RyaW5nPiA9IFtcbiAgICAnSmFudWFyeScsXG4gICAgJ0ZlYnJ1YXJ5JyxcbiAgICAnTWFyY2gnLFxuICAgICdBcHJpbCcsXG4gICAgJ01heScsXG4gICAgJ0p1bmUnLFxuICAgICdKdWx5JyxcbiAgICAnQXVndXN0JyxcbiAgICAnU2VwdGVtYmVyJyxcbiAgICAnT2N0b2JlcicsXG4gICAgJ05vdmVtYmVyJyxcbiAgICAnRGVjZW1iZXInLFxuICBdO1xuXG4gIHB1YmxpYyBkYXlOYW1lOiBBcnJheTxzdHJpbmc+ID0gW1xuICAgICdNb25kYXknLFxuICAgICdUdWVzZGF5JyxcbiAgICAnV2VkbmVzZGF5JyxcbiAgICAnVGh1cnNkYXknLFxuICAgICdGcmlkYXknLFxuICAgICdTYXR1cmRheScsXG4gICAgJ1N1bmRheScsXG4gIF07IC8vIGZ1bGwgZGF5IG5hbWVcblxuICBwdWJsaWMgcXVhcnRlcmx5TW9udGg6IEFycmF5PHN0cmluZz4gPSBbXG4gICAgJ0phbnVhcnksIEFwcmlsLCBKdWx5LCBPY3RvYmVyJyxcbiAgICAnRmVicnVhcnksIE1heSwgQXVndXN0LCBOb3ZlbWJlcicsXG4gICAgJ01hcmNoLCBKdW5lLCBTZXB0ZW1iZXIsIERlY2VtYmVyJyxcbiAgXTtcblxuICBwdWJsaWMgZGF0ZUNvbmZpZyA9IHtcbiAgICBmb3JtYXQ6ICdERCBNTSBZWVlZJyxcbiAgICBzaG93R29Ub0N1cnJlbnQ6IGZhbHNlLFxuICB9O1xuXG4gIHB1YmxpYyBmcmVxdWVuY3lJbmZvID0ge1xuICAgIHBsYWNlaG9sZGVyOiAnJyxcbiAgICBwYXR0ZXJuOiAnJyxcbiAgICBjYXNlOiAnJyxcbiAgICBmYWlsZWRBZnRlcjogMCxcbiAgICB3aW5kb3c6IDAsXG4gICAgdGltZUluMTJocjogJycsXG4gICAgdGltZUluMjRIcjogJycsXG4gICAgbGlmZWN5Y2xlRGV0YWlsczogJzAwMDAtMDAtMDB+fjAnLFxuICAgIHN0YXJ0RnJvbTogTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXG4gICAgcmVwb3J0SWQ6IDAsXG4gICAgZmFpbGVkX3RpbWVfdXRjOiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcbiAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiAwLFxuICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxuICAgIHN0YXJ0RGF0ZTogJycsXG4gIH07XG5cbiAgcHVibGljIGZyZXF1ZW5jeURldGFpbHM6IG9iamVjdCA9IHtcbiAgICBwYXR0ZXJuOiAnJyxcbiAgICBub3RpZmljYXRpb25QZW5kaW5nOiAwLFxuICAgIGRhdGVPZk1vZGlmaWVkOiAwLFxuICAgIGRlYWN0aXZhdGlvblZhbHVlOiAwLFxuICAgIHNlbGVjdGVkUmVwb3J0OiAwLFxuICAgIGxpZmVjeWNsZTogJzAwMDAtMDAtMDB+fjAnLFxuICAgIHN0YXJ0RGF0ZTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxuICAgIHN0YXJ0T25UaGVEYXk6IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcbiAgICB3aW5kb3c6IDAsXG4gICAgZmFpbGVkOiAwLFxuICAgIHRpbWU6IERFRkFVTFRfVElNRSxcbiAgfTtcblxuICBwcml2YXRlIGVudiE6IGFueTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ3JjU2VydmljZTogR3JjU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBjb25maWc/OiBDb25maWd1cmF0aW9uc1xuICApIHtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICB0aGlzLmVudiA9IGNvbmZpZy5lbnZDb25maWc7XG4gICAgfVxuICB9XG5cbiAgdGltZUZyb20xMmhUbzI0aCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlICE9IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgdGltZV9hcnIgPSB2YWx1ZS5zcGxpdCgnICcpO1xuICAgICAgY29uc3QgbWVyaWRpYW4gPSB0aW1lX2FyclsxXTtcbiAgICAgIGNvbnN0IGhyX21pbiA9IHRpbWVfYXJyWzBdLnNwbGl0KCc6JykubWFwKE51bWJlcik7XG4gICAgICBjb25zdCBociA9IGhyX21pblswXTtcbiAgICAgIGNvbnN0IG1pbiA9IGhyX21pblsxXSA/IGhyX21pblsxXSA6ICcwMCc7XG4gICAgICBsZXQgcmV0dXJuX3RpbWUgPSAnJztcblxuICAgICAgaWYgKG1lcmlkaWFuPy50b0xvd2VyQ2FzZSgpID09ICdwbScpIHtcbiAgICAgICAgaWYgKGhyID09IDEyKSB7XG4gICAgICAgICAgcmV0dXJuX3RpbWUgPSAxMiArICc6JyArIG1pbiArICc6MDAnO1xuICAgICAgICB9IGVsc2UgaWYgKGhyIDwgMTIpIHtcbiAgICAgICAgICByZXR1cm5fdGltZSA9ICtociArIDEyICsgJzonICsgbWluICsgJzowMCc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChociA9PSAxMikge1xuICAgICAgICAgIHJldHVybl90aW1lID0gJzAwOicgKyBtaW4gKyAnOjAwJztcbiAgICAgICAgfSBlbHNlIGlmIChociA8IDEyKSB7XG4gICAgICAgICAgcmV0dXJuX3RpbWUgPSBociArICc6JyArIG1pbiArICc6MDAnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXR1cm5fdGltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIHRpbWVJbjEyKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodmFsdWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgaHI7XG4gICAgICBsZXQgbWluO1xuICAgICAgbGV0IG1lcmlkaWFuO1xuICAgICAgaWYgKHZhbHVlLnNwbGl0KCc6JylbMF0gPj0gMTIpIHtcbiAgICAgICAgaHIgPSB2YWx1ZS5zcGxpdCgnOicpWzBdID09PSAnMTInID8gMTIgOiB2YWx1ZS5zcGxpdCgnOicpWzBdIC0gMTI7XG4gICAgICAgIG1pbiA9IHZhbHVlLnNwbGl0KCc6JylbMV07XG4gICAgICAgIGlmIChtaW4ubGVuZ3RoIDwgMikge1xuICAgICAgICAgIG1pbiA9ICcwJyArIG1pbjtcbiAgICAgICAgfVxuICAgICAgICBtZXJpZGlhbiA9ICdwbSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBociA9IHZhbHVlLnNwbGl0KCc6JylbMF0gPT0gJzAwJyA/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/OiBhbnkpIHtcbiAgICBjb25zdCBtb250aE5hbWVzID0gTU9OVEhfTkFNRVM7XG4gICAgbGV0IGZyZXF1ZW5jeV9kZXRhaWxzO1xuICAgIGxldCBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMDtcbiAgICBjb25zdCBkYXRlX3ZhbHVlID0gbmV3IERhdGUoKTtcblxuICAgIGRhdGVfdmFsdWUuc2V0TW9udGgoXG4gICAgICB0eXBlb2YgbW9udGggIT09ICdudW1iZXInXG4gICAgICAgID8gbW9udGhOYW1lcy5maWx0ZXIoKHgpID0+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/LnVzZXJEZXRhaWxzPy50aW1lem9uZSxcbiAgICAgIH0pXG4gICAgKTtcbiAgICByZXR1cm4gaW52RGF0ZTtcbiAgfVxuXG4gIGdldFJlc3BvbnNpYmlsaXR5TGlzdChwYXlsb2FkOiBhbnkpIHtcbiAgICBjb25zdCBsaW1pdCA9IFBBR0lOQVRJT05fTElNSVQ7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldChcbiAgICAgICd0b2tlbicsXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpLFxuICAgIClcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueT4oXG4gICAgICAgIGAke3RoaXMuZW52LmNvbXBsaWFuY2VHZXR9c2FpbHNSZXNwb25zaWJpbGl0aWVzTGlzdCZwYWdlPSR7cGF5bG9hZD8ucGFnZU5vfSZsaW1pdD0ke2xpbWl0fSR7cGF5bG9hZD8uc2VhcmNoVGVybSA/IGAmc2VhcmNoVGVybT0ke3BheWxvYWQ/LnNlYXJjaFRlcm19YCA6ICcnfSZiaXpDeWNsZVJlcXVpcmVkPTAmaW5jbHVkZT1hc3NpZ25lZXMmZ3JvdXA9YWxsYCxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDEpKTtcbiAgfVxuXG4gIGdldFJlc3BvbnNpYmlsaXRpZXNDb3VudChwYXlsb2FkOiBhbnkpIHtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0PGFueT4oXG4gICAgICAgIHRoaXMuZW52LnJlc3BvbnNpYmlsaXR5UG9zdCArICdtYW5hZ2VfcmVzcG9uc2liaWxpdGllc19yZXBvcnRzX2NvdW50JyxcbiAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgeyBoZWFkZXJzIH1cbiAgICAgIClcbiAgICAgIC5waXBlKHJldHJ5KDEpKTtcbiAgfVxuXG4gIGdldEFsbFJlc3BvbnNpYmlsaXRpZXMocGFnZU5vOiBudW1iZXIsIHBheWxvYWQ6IGFueSkge1xuICAgIGNvbnN0IGJ1c2luZXNzQ3ljbGUgPSB0aGlzLmdyY1NlcnZpY2UuZ2V0QnVzaW5lc3NDeWNsZSgpO1xuICAgIGNvbnN0IGZvcm1hdHRlZEN5Y2xlID0gYnVzaW5lc3NDeWNsZS5zZWxlY3RlZF9jeWNsZVxuICAgICAgPyBkYXlqcyhidXNpbmVzc0N5Y2xlLnNlbGVjdGVkX2N5Y2xlLnNwbGl0KCctJylbMF0pLmZvcm1hdCgnWVlZWS1NTS1ERCcpICsgXG4gICAgICAgICc6JyArIFxuICAgICAgICBkYXlqcyhidXNpbmVzc0N5Y2xlLnNlbGVjdGVkX2N5Y2xlLnNwbGl0KCctJylbMV0pLmZvcm1hdCgnWVlZWS1NTS1ERCcpXG4gICAgICA6ICcnO1xuICAgIFxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKVxuICAgICAgLnNldCgndG9rZW4nLCB0aGlzLmF1dGhTZXJ2aWNlLmdldEF1dGhvcml6YXRpb25Ub2tlbigpKVxuICAgICAgLnNldCgnYml6X2N5Y2xlJywgZm9ybWF0dGVkQ3ljbGUpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPihcbiAgICAgIHRoaXMuZW52LmNvbXBsaWFuY2VHZXQgKyBBUEkucmVzcG9uc2liaWxpdHlMaXN0ICsgYCZwYWdlPSR7cGFnZU5vfSZsaW1pdD0ke1BBR0lOQVRJT05fTElNSVR9JHtwYXlsb2FkPy5zZWFyY2hUZXJtID8gYCZzZWFyY2hUZXJtPSR7cGF5bG9hZD8uc2VhcmNoVGVybX1gIDogJyd9YCAsXG4gICAgICB7IGhlYWRlcnMgfVxuICAgICk7XG4gIH1cblxuICBmb3JtYXREYXRlKCkge1xuICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBkYXkgPSBTdHJpbmcoY3VycmVudERhdGU/LmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCBtb250aCA9IFN0cmluZyhjdXJyZW50RGF0ZT8uZ2V0TW9udGgoKSArIDEpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgY29uc3QgeWVhciA9IGN1cnJlbnREYXRlPy5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBgJHtkYXl9LSR7bW9udGh9LSR7eWVhcn1gO1xuICAgIHJldHVybiBmb3JtYXR0ZWREYXRlO1xuICB9XG4gIFxuICAvKipcbiAgICogQ29udmVydHMgYSBmcmVxdWVuY3kgY29uZmlndXJhdGlvbiBvYmplY3QgaW50byBhIHN0YW5kYXJkaXplZCBGcmVxdWVuY3lPYmplY3QgZm9ybWF0LlxuICAgKiBcbiAgICogQHBhcmFtIGZyZXF1ZW5jeSAtIFRoZSBpbnB1dCBmcmVxdWVuY3kgY29uZmlndXJhdGlvbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqIC0gY2FzZTogVGhlIHR5cGUgb2YgZnJlcXVlbmN5ICgnb25lX3RpbWUnIHwgJ2RhaWx5JyB8ICd3ZWVrbHknIHwgJ21vbnRobHknIHwgJ3F1YXJ0ZXJseScgfCAnc2VtZXN0ZXInIHwgJ3llYXJseScgfCAncmFuZG9tJyB8ICdvbmdvaW5nJyB8ICdvbl9jb21wbGV0aW9uX29mJyB8ICdiaWFubnVhbGx5JylcbiAgICogLSB3aW5kb3c6IE51bWJlciBvZiBkYXlzIGJlZm9yZSB0aGUgdGFzayBjYW4gYmUgc3RhcnRlZFxuICAgKiAtIGZhaWxlZEFmdGVyOiBOdW1iZXIgb2YgZGF5cyBhZnRlciB3aGljaCB0aGUgdGFzayBpcyBjb25zaWRlcmVkIGZhaWxlZFxuICAgKiAtIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IE51bWJlciBvZiBkYXlzIGFmdGVyIHdoaWNoIHRoZSB0YXNrIGlzIGF1dG8tZGVhY3RpdmF0ZWRcbiAgICogLSBkYXk6IFRoZSBkYXkgb2Ygb2NjdXJyZW5jZVxuICAgKiAtIHRpbWVJbjI0SHI6IFRpbWUgaW4gMjQtaG91ciBmb3JtYXRcbiAgICogLSBldmVyeTogRnJlcXVlbmN5IGludGVydmFsXG4gICAqIC0gc2VsZWN0ZWREYXk6IEFycmF5IG9mIHNlbGVjdGVkIGRheXMgZm9yIHdlZWtseSBmcmVxdWVuY3kgKDEtNyByZXByZXNlbnRpbmcgTW9uZGF5LVN1bmRheSlcbiAgICogLSBzZWxlY3RlZE1vbnRoOiBBcnJheSBvZiBzZWxlY3RlZCBtb250aHMgKDAtMTEgcmVwcmVzZW50aW5nIEphbnVhcnktRGVjZW1iZXIpXG4gICAqIC0gc3RhcnRGcm9tOiBVbml4IHRpbWVzdGFtcCBmb3IgdGhlIHN0YXJ0IGRhdGVcbiAgICogLSBsaWZlY3ljbGVEZXRhaWxzOiBTdHJpbmcgaW4gZm9ybWF0IFwiWVlZWS1NTS1ERH5+TlwiIHdoZXJlIE4gaXMgdGhlIG51bWJlciBvZiBvY2N1cnJlbmNlc1xuICAgKiAtIHJhbmRvbVR5cGVTZWxlY3RlZDogSW5kZXggZm9yIHJhbmRvbSBmcmVxdWVuY3kgdHlwZSAoMDogd2Vla2x5LCAxOiBtb250aGx5LCAyOiBxdWFydGVybHksIDM6IHllYXJseSlcbiAgICogLSByYW5kb21JbnN0YW5jZXM6IE51bWJlciBvZiByYW5kb20gb2NjdXJyZW5jZXNcbiAgICogLSBzZWxlY3RlZFR5cGU6IE51bWJlciBvZiByZW1pbmRlcnMgZm9yIG9uZ29pbmcgZnJlcXVlbmN5XG4gICAqIC0gc2VsZWN0ZWRPbmdvaW5nVHlwZTogSW5kZXggZm9yIG9uZ29pbmcgZnJlcXVlbmN5IHR5cGUgKDE6IHdlZWssIDI6IG1vbnRoLCAzOiBxdWFydGVyLCA0OiBzZW1lc3RlciwgNTogeWVhcilcbiAgICogXG4gICAqIEByZXR1cm5zIEEgRnJlcXVlbmN5T2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6XG4gICAqIC0gdHlwZTogRnJlcXVlbmN5IHR5cGVcbiAgICogLSBzdGFydEJlZm9yZTogRGF5cyBiZWZvcmUgdGFzayBjYW4gc3RhcnRcbiAgICogLSBlbmRBZnRlcjogRGF5cyBhZnRlciB3aGljaCB0YXNrIGZhaWxzXG4gICAqIC0gYXV0b0RlYWN0aXZhdGU6IERheXMgYWZ0ZXIgd2hpY2ggdGFzayBpcyBkZWFjdGl2YXRlZFxuICAgKiAtIGRheTogRGF5IG9mIG9jY3VycmVuY2VcbiAgICogLSB0aW1lOiBUaW1lIGluIDI0LWhvdXIgZm9ybWF0XG4gICAqIC0gcmVwZWF0T3B0aW9uczoge1xuICAgKiAgICAgZXZlcnk6IG51bWJlcixcbiAgICogICAgIHJlcGVhdE9uOiBzdHJpbmcgKGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBzZWxlY3RlZCBkYXlzL21vbnRocyksXG4gICAqICAgICBsaWZlY3ljbGU6IHtcbiAgICogICAgICAgc3RhcnRGcm9tOiBzdHJpbmcgKFlZWVktTU0tREQpLFxuICAgKiAgICAgICBlbmRCeT86IHN0cmluZyAoWVlZWS1NTS1ERCksXG4gICAqICAgICAgIGVuZEFmdGVyPzogbnVtYmVyXG4gICAqICAgICB9XG4gICAqICAgfVxuICAgKiAtIHJhbmRvbT86IHsgdHlwZTogc3RyaW5nLCBvY2N1cnJlbmNlOiBudW1iZXIgfVxuICAgKiAtIG9uQ29tcGxldGU6IHt9XG4gICAqIC0gb25Hb2luZzogeyByZW1pbmRlcnM6IG51bWJlciwgc3RhcnRPZjogJ3dlZWsnIHwgJ21vbnRoJyB8ICdxdWFydGVyJyB8ICdzZW1lc3RlcicgfCAneWVhcicgfVxuICAgKiBcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBmcmVxdWVuY3kgPSB7XG4gICAqICAgY2FzZTogJ3dlZWtseScsXG4gICAqICAgd2luZG93OiAyLFxuICAgKiAgIGZhaWxlZEFmdGVyOiAxLFxuICAgKiAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDMsXG4gICAqICAgZGF5OiAxLFxuICAgKiAgIHRpbWVJbjI0SHI6ICcwOTowMDowMCcsXG4gICAqICAgZXZlcnk6IDEsXG4gICAqICAgc2VsZWN0ZWREYXk6IFsxLCAzLCA1XSwgLy8gTW9uZGF5LCBXZWRuZXNkYXksIEZyaWRheVxuICAgKiAgIHN0YXJ0RnJvbTogMTY3ODkwMDAwMCxcbiAgICogICBsaWZlY3ljbGVEZXRhaWxzOiAnMjAyNC0xMi0zMX5+MTAnXG4gICAqIH07XG4gICAqIGNvbnN0IHJlc3VsdCA9IHNldEZyZXF1ZW5jeU9iamVjdChmcmVxdWVuY3kpO1xuICAgKiBgYGBcbiAgICovXG4gIHNldEZyZXF1ZW5jeU9iamVjdChmcmVxdWVuY3k6IGFueSk6IEZyZXF1ZW5jeU9iamVjdCB8IG51bGwge1xuICAgIGNvbnNvbGUubG9nKGZyZXF1ZW5jeSwgXCJmcmVxdWVuY3lcIik7XG4gICAgY29uc3QgcmVwZWF0T3B0aW9ucyA9IHRoaXMucmVwZWF0T3B0aW9ucyhmcmVxdWVuY3kpO1xuICAgIGNvbnN0IGxpZmVjeWNsZURldGFpbHMgPSBmcmVxdWVuY3kubGlmZWN5Y2xlRGV0YWlscy5zcGxpdCgnfn4nKTtcbiAgICBjb25zdCBmcmVxdWVuY3lPYmplY3Q6IEZyZXF1ZW5jeU9iamVjdCA9IHtcbiAgICAgIHR5cGU6IGZyZXF1ZW5jeS5jYXNlLFxuICAgICAgc3RhcnRCZWZvcmU6IGZyZXF1ZW5jeS53aW5kb3csXG4gICAgICBlbmRBZnRlcjogZnJlcXVlbmN5LmZhaWxlZEFmdGVyLFxuICAgICAgYXV0b0RlYWN0aXZhdGU6IGZyZXF1ZW5jeS5jb250aW51b3VzX2ZhaWxlZF9kYXlzLFxuICAgICAgZGF5OiBmcmVxdWVuY3kuZGF5LCBcbiAgICAgIHRpbWU6IGZyZXF1ZW5jeS50aW1lSW4yNEhyLFxuICAgICAgcmVwZWF0T3B0aW9uczoge1xuICAgICAgICBldmVyeTogZnJlcXVlbmN5LmV2ZXJ5LFxuICAgICAgICByZXBlYXRPbjogcmVwZWF0T3B0aW9ucyxcbiAgICAgICAgbGlmZWN5Y2xlOiB7XG4gICAgICAgICAgc3RhcnRGcm9tOiBtb21lbnQoZnJlcXVlbmN5LnN0YXJ0RnJvbSAqIDEwMDApLmZvcm1hdCgnWVlZWS1NTS1ERCcpLFxuICAgICAgICAgIGVuZEJ5OmxpZmVjeWNsZURldGFpbHNbMF0gIT09ICcwMDAwLTAwLTAwJyA/IG1vbWVudChsaWZlY3ljbGVEZXRhaWxzWzBdICwgJ0RELU1NTU0tWVlZWScpLmZvcm1hdCgnWVlZWS1NTS1ERCcpIDogdW5kZWZpbmVkLFxuICAgICAgICAgIGVuZEFmdGVyOiBcbiAgICAgICAgICAgICAgICBmcmVxdWVuY3kuY2FzZSA9PT0gJ29uZV90aW1lJ1xuICAgICAgICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgICAgICAgOiBsaWZlY3ljbGVEZXRhaWxzWzFdICE9PSAnMCdcbiAgICAgICAgICAgICAgICAgICAgPyBwYXJzZUludChsaWZlY3ljbGVEZXRhaWxzWzFdKVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJhbmRvbTogdGhpcy5nZXRSYW5kb21GcmVxdWVuY3koZnJlcXVlbmN5KSxcbiAgICAgIG9uQ29tcGxldGU6IGZyZXF1ZW5jeS5jYXNlID09PSAnb25fY29tcGxldGUnID8gZnJlcXVlbmN5Lm9uQ29tcGxldGlvbiA6IHt9LFxuICAgICAgb25Hb2luZzogdGhpcy5nZXRPbmdvaW5nKGZyZXF1ZW5jeSksXG4gICAgfSAgXG4gICAgcmV0dXJuIGZyZXF1ZW5jeU9iamVjdDtcbiAgfSBcblxuICByZXBlYXRPcHRpb25zKGZyZXF1ZW5jeTogYW55KTogc3RyaW5nIHtcbiAgIGlmKGZyZXF1ZW5jeT8uc2VsZWN0ZWREYXk/Lmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCB3ZWVrRGF5cyA9IFtdO1xuICAgICBmb3IobGV0IGkgPSAwOyBpIDwgNzsgaSArKykge1xuICAgICAgaWYoZnJlcXVlbmN5LnNlbGVjdGVkRGF5LmluY2x1ZGVzKGkgKyAxKSkge1xuICAgICAgICB3ZWVrRGF5cy5wdXNoKDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2Vla0RheXMucHVzaCgwKTtcbiAgICAgIH1cbiAgICAgfVxuICAgICByZXR1cm4gd2Vla0RheXMuam9pbignJyk7XG4gICB9IGVsc2UgaWYoZnJlcXVlbmN5Py5zZWxlY3RlZE1vbnRoPy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgbW9udGhzID0gWyBdO1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCAxMjsgaSArKykge1xuICAgICAgaWYoZnJlcXVlbmN5Py5zZWxlY3RlZE1vbnRoPy5pbmNsdWRlcyhpKSkge1xuICAgICAgICBtb250aHMucHVzaCgxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1vbnRocy5wdXNoKDApO1xuICAgICAgfVxuICAgfVxuICAgcmV0dXJuIG1vbnRocy5qb2luKCcnKTtcbiAgIH0gZWxzZSB7XG4gICAgcmV0dXJuICcnO1xuICAgfVxuICB9XG5cbiAgZ2V0T25nb2luZyhmcmVxdWVuY3k6IGFueSkge1xuICAgIHJldHVybiB7XG4gICAgICByZW1pbmRlcnM6IGZyZXF1ZW5jeT8uc2VsZWN0ZWRUeXBlLFxuICAgICAgc3RhcnRPZjogZnJlcXVlbmN5Py5zZWxlY3RlZFR5cGUgPyAgWyd3ZWVrJywnbW9udGgnICwncXVhcnRlcicgLCdzZW1lc3RlcicgLCd5ZWFyJ11bZnJlcXVlbmN5Py5zZWxlY3RlZE9uZ29pbmdUeXBlIC0gMV0gOiAnJ1xuICAgIH1cbiAgfVxuICBnZXRSYW5kb21GcmVxdWVuY3koZnJlcXVlbmN5OiBhbnkpIHtcbiAgICByZXR1cm4ge1xuICAgICB0eXBlOiBbJ3dlZWtseScsICdtb250aGx5JywgJ3F1YXJ0ZXJseScsICd5ZWFybHknXVtmcmVxdWVuY3k/LnJhbmRvbVR5cGVTZWxlY3RlZF0sXG4gICAgIG9jY3VycmVuY2U6IGZyZXF1ZW5jeT8ucmFuZG9tSW5zdGFuY2VzXG4gICAgfVxuICB9XG5cbiAgY3JlYXRlRnJlcXVlbmN5UGF0dGVybihmcmVxdWVuY3k6IGFueSkge1xuICAgIGNvbnNvbGUubG9nKGZyZXF1ZW5jeSwgJ2ZyZXF1ZW5jeScpO1xuICAgIGxldCBwYXR0ZXJuID0gJyc7XG4gICAgbGV0IHNlbGVjdGVkRGF5ID0gZnJlcXVlbmN5LmRheVxuICAgIHN3aXRjaCAoZnJlcXVlbmN5LnR5cGUpIHtcblxuICAgICAgY2FzZSAnb25lX3RpbWUnOlxuICAgICAgICBsZXQgZGF0ZV92YWx1ZSA9IGZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LnN0YXJ0RnJvbT8uc3BsaXQoJy0nKTtcblxuICAgICAgICBwYXR0ZXJuID1cbiAgICAgICAgICAnMH4nICtcbiAgICAgICAgICAnJyArXG4gICAgICAgICAgZGF0ZV92YWx1ZVswXSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICAoZGF0ZV92YWx1ZVsxXSkgK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgZGF0ZV92YWx1ZVsyXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkYWlseSc6XG4gICAgICAgIHBhdHRlcm4gPSBgMX4wfjB+JHtmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8uZXZlcnl9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd3ZWVrbHknOlxuICAgICAgICBwYXR0ZXJuID0gYDJ+JHt0aGlzLmdldERheShmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8ucmVwZWF0T24pfX4wfiR7ZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LmV2ZXJ5fWA7XG4gICAgICAgIGJyZWFrOyAgIFxuICAgICAgY2FzZSAnbW9udGhseSc6XG4gICAgICAgIHBhdHRlcm4gPVxuICAgICAgICAgIGAzfiR7c2VsZWN0ZWREYXl9fiR7dGhpcy5nZXRNb250aChmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8ucmVwZWF0T24pfX4wYDtcbiAgICAgICAgYnJlYWs7XG4gICAgIFxuICAgICAgY2FzZSAncXVhcnRlcmx5JzpcbiAgICAgICAgcGF0dGVybiA9IGA3fiR7c2VsZWN0ZWREYXl9fiR7dGhpcy5nZXRNb250aChmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8ucmVwZWF0T24pfX4wYDtcbiAgICAgICAgYnJlYWs7XG4gICAgIFxuICAgICBjYXNlICdzZW1lc3Rlcic6XG4gICAgICBwYXR0ZXJuID0gYDl+JHtzZWxlY3RlZERheX1+JHt0aGlzLmdldE1vbnRoKGZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5yZXBlYXRPbil9fjBgO1xuICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd5ZWFybHknOlxuICAgICAgICBwYXR0ZXJuID1cbiAgICAgICAgICBgNH4ke3NlbGVjdGVkRGF5fX4ke3RoaXMuZ2V0TW9udGgoZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LnJlcGVhdE9uKX1+MWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb25nb2luZyc6XG4gICAgICAgIGNvbnN0IHR5cGUgPSBbJ3dlZWsnLCAnbW9udGgnLCAncXVhcnRlcicsICdzZW1lc3RlcicsICd5ZWFyJ107XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdHlwZS5pbmRleE9mKGZyZXF1ZW5jeS5vbkdvaW5nPy5zdGFydE9mKTtcbiAgICAgICAgcGF0dGVybiA9IGAxMH4ke2ZyZXF1ZW5jeS5vbkdvaW5nPy5yZW1pbmRlcnN9fiR7aW5kZXh9fjBgO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JhbmRvbSc6IFxuICAgICAgICBsZXQgcmFuZG9tVHlwZSA9IFsnd2Vla2x5JywgJ21vbnRobHknLCAncXVhcnRlcmx5JywgJ3llYXJseSddO1xuICAgICAgICBsZXQgcmFuZG9tSW5kZXggPSByYW5kb21UeXBlLmluZGV4T2YoZnJlcXVlbmN5LnJhbmRvbS50eXBlKTtcbiAgICAgICAgcGF0dGVybiA9IGA4fiR7cmFuZG9tSW5kZXggKyAxfX4ke3RoaXMuZ2V0TW9udGgoZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LnJlcGVhdE9uKX1+JHtmcmVxdWVuY3kucmFuZG9tLm9jY3VycmVuY2V9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvbl9jb21wbGV0ZSc6XG4gICAgICAgIHBhdHRlcm4gPSBgNn4wfjB+JHtmcmVxdWVuY3kub25Db21wbGV0ZT8uZHVlQWZ0ZXJ9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBwYXR0ZXJuID0gYDV+JHtmcmVxdWVuY3kucmFuZG9tLm9jY3VycmVuY2V9fjB+MGA7XG4gICAgfVxuICAgIHJldHVybiBwYXR0ZXJuO1xuICB9XG5cbiAgZ2V0RGF5KHJlcGVhdE9wdGlvbnM6IHN0cmluZykge1xuICAgIGNvbnN0IGRheSA9IHJlcGVhdE9wdGlvbnMuc3BsaXQoJycpLm1hcChOdW1iZXIpO1xuICAgIGNvbnN0IGRheU5hbWUgPSBbXTtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgNzsgaSArKykge1xuICAgICAgaWYoZGF5W2ldID09PSAxKSB7XG4gICAgICAgIGRheU5hbWUucHVzaChpICsgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkYXlOYW1lLmpvaW4oJywnKTtcbiAgfVxuXG4gIGdldE1vbnRoKHJlcGVhdE9wdGlvbnM6IHN0cmluZykge1xuICAgICAgY29uc3QgbW9udGggPSByZXBlYXRPcHRpb25zLnNwbGl0KCcnKS5tYXAoTnVtYmVyKTtcbiAgICAgIGNvbnN0IG1vbnRoTmFtZSA9IFtdO1xuICAgICAgZm9yKGxldCBpID0gMDsgaSA8IDEyOyBpICsrKSB7XG4gICAgICAgIGlmKG1vbnRoW2ldID09PSAxKSB7XG4gICAgICAgICAgbW9udGhOYW1lLnB1c2goaSArIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbW9udGhOYW1lLmpvaW4oJywnKTtcbiAgfVxuICAgIFxuICAgIGdldExpZmVjeWNsZVBhdHRlcm4gKGZyZXF1ZW5jeTogYW55KSB7XG4gICAgICBsZXQgcGF0dGVybiA9IFwiMDAwMC0wMC0wMH5+MFwiO1xuICAgICAgaWYoIWZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5lbmRCeSAmJiAhZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LmVuZEFmdGVyKSB7XG4gICAgICAgIHJldHVybiAge1xuICAgICAgICAgIHN0YXJ0RnJvbTogbmV3IERhdGUoZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LnN0YXJ0RnJvbSkuZ2V0VGltZSgpIC8gMTAwMCxcbiAgICAgICAgICAgcGF0dGVyblxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYoZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LmVuZEJ5KSB7XG4gICAgICAgIHJldHVybiAge1xuICAgICAgICAgIHN0YXJ0RnJvbTogbmV3IERhdGUoZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LnN0YXJ0RnJvbSkuZ2V0VGltZSgpIC8gMTAwMCxcbiAgICAgICAgICAgcGF0dGVybjogdGhpcy5mb3JtYXREYXRlU3RyaW5nKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5lbmRCeSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5lbmRBZnRlcikge1xuICAgICAgICByZXR1cm4gIHtcbiAgICAgICAgICBzdGFydEZyb206IG5ldyBEYXRlKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5zdGFydEZyb20pLmdldFRpbWUoKSAvIDEwMDAsXG4gICAgICAgICAgIHBhdHRlcm46IFwiMDAwMC0wMC0wMH5+XCIgKyBmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uZW5kQWZ0ZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhcnRGcm9tOiBuZXcgRGF0ZShmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uc3RhcnRGcm9tKS5nZXRUaW1lKCkgLyAxMDAwLFxuICAgICAgICBwYXR0ZXJuOiBcIjAwMDAtMDAtMDB+fjBcIlxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICogQ29udmVydHMgYSBkYXRlIHN0cmluZyBpbiBcIllZWVktTU0tRERcIiBmb3JtYXQgdG8gXCJERC1Nb250aC1ZWVlZfn4wXCIuXG4gKiBcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRlU3RyaW5nIC0gVGhlIGlucHV0IGRhdGUgc3RyaW5nIGluIFwiWVlZWS1NTS1ERFwiIGZvcm1hdC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZyBpbiBcIkRELU1vbnRoLVlZWVl+fjBcIiBmb3JtYXQuXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBmb3JtYXREYXRlU3RyaW5nKFwiMjAyNS0wMy0yN1wiKTsgLy8gUmV0dXJucyBcIjI3LU1hcmNoLTIwMjV+fjBcIlxuICogYGBgXG4gKi9cbiBmb3JtYXREYXRlU3RyaW5nKGRhdGVTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkYXRlU3RyaW5nKTtcbiAgXG4gIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF0ZSgpO1xuICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBcbiAgY29uc3QgbW9udGhOYW1lcyA9IFtcbiAgICAgIFwiSmFudWFyeVwiLCBcIkZlYnJ1YXJ5XCIsIFwiTWFyY2hcIiwgXCJBcHJpbFwiLCBcIk1heVwiLCBcIkp1bmVcIixcbiAgICAgIFwiSnVseVwiLCBcIkF1Z3VzdFwiLCBcIlNlcHRlbWJlclwiLCBcIk9jdG9iZXJcIiwgXCJOb3ZlbWJlclwiLCBcIkRlY2VtYmVyXCJcbiAgXTtcbiAgY29uc3QgbW9udGggPSBtb250aE5hbWVzW2RhdGUuZ2V0TW9udGgoKV07XG5cbiAgcmV0dXJuIGAke2RheX0tJHttb250aH0tJHt5ZWFyfX5+MGA7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBuYW1lIG9mIGEgbW9udGggYmFzZWQgb24gaXRzIG51bWVyaWNhbCB2YWx1ZS5cbiAqIFxuICogQHBhcmFtIHtudW1iZXJ9IG1vbnRoIC0gVGhlIG1vbnRoIG51bWJlciAoMS0xMikgd2hlcmU6XG4gKiAgIDEgPSBKYW51YXJ5XG4gKiAgIDIgPSBGZWJydWFyeVxuICogICAuLi5cbiAqICAgMTIgPSBEZWNlbWJlclxuICogXG4gKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSBUaGUgbmFtZSBvZiB0aGUgbW9udGggKGUuZy4sIFwiSkFOXCIsIFwiRkVCXCIsIGV0Yy4pIG9yIHVuZGVmaW5lZCBpZiB0aGUgbW9udGggbnVtYmVyIGlzIGludmFsaWRcbiAqIFxuICogQGV4YW1wbGVcbiAqIGdldE1vbnRoTmFtZSgxKSAgLy8gUmV0dXJuczogXCJKYW5cIlxuICogZ2V0TW9udGhOYW1lKDEyKSAvLyBSZXR1cm5zOiBcIkRlY1wiXG4gKiBnZXRNb250aE5hbWUoMTMpIC8vIFJldHVybnM6IHVuZGVmaW5lZFxuICovXG5wdWJsaWMgZ2V0TW9udGhOYW1lKHNlbGVjdGVkTW9udGg6IG51bWJlcikgeyAgXG4gIHJldHVybiBNT05USF9OQU1FUy5maW5kKChtb250aDogYW55KSA9PiBtb250aC52YWx1ZSA9PT0gc2VsZWN0ZWRNb250aCk/Lm1vbnRoO1xufVxuXG59XG4iXX0=
|
|
851
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlcXVlbmN5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFHLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hDLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUNuQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXBELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQUlwRSxNQUFNLE9BQU8sZ0JBQWdCO0lBcUUzQixZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3hCLFVBQXNCLEVBQ2xCLE1BQXVCO1FBSDNCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXZFekIsZUFBVSxHQUFrQjtZQUNqQyxTQUFTO1lBQ1QsVUFBVTtZQUNWLE9BQU87WUFDUCxPQUFPO1lBQ1AsS0FBSztZQUNMLE1BQU07WUFDTixNQUFNO1lBQ04sUUFBUTtZQUNSLFdBQVc7WUFDWCxTQUFTO1lBQ1QsVUFBVTtZQUNWLFVBQVU7U0FDWCxDQUFDO1FBRUssWUFBTyxHQUFrQjtZQUM5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LEVBQUUsS0FBSyxFQUFFLE1BQU07WUFDdEQsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVO1NBQ25FLENBQUM7UUFDRixNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFMUMsT0FBTyxHQUFHLEdBQUcsSUFBSSxLQUFLLElBQUksSUFBSSxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7T0FlRztJQUNJLFlBQVksQ0FBQyxhQUFxQjtRQUN2QyxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssYUFBYSxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQ2hGLENBQUM7K0dBOTJCWSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQUZmLE1BQU07OzRGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQTBFSSxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgIHJldHJ5IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbnMgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9ucyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC9tb21lbnQnO1xuaW1wb3J0IHsgREVGQVVMVF9USU1FIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3RpbWUuY29uc3RhbnRzJztcbmltcG9ydCB7IEZyZXF1ZW5jeU9iamVjdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZnJlcXVlbmN5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBBUEkgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYXBpLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBHcmNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd29ya2Zsb3cvc2hhcmVkL3NlcnZpY2VzL2dyYy5zZXJ2aWNlJztcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQgeyBNT05USF9OQU1FUyB9IGZyb20gJy4vZnJlcXVlbmN5LmNvbnN0YW50JztcbmltcG9ydCB7IFBBR0lOQVRJT05fTElNSVQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29tbW9uLmNvbnN0YW50cyc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRnJlcXVlbmN5U2VydmljZSB7XG4gIHB1YmxpYyBtb250aEFycmF5OiBBcnJheTxzdHJpbmc+ID0gW1xuICAgICdKYW51YXJ5JyxcbiAgICAnRmVicnVhcnknLFxuICAgICdNYXJjaCcsXG4gICAgJ0FwcmlsJyxcbiAgICAnTWF5JyxcbiAgICAnSnVuZScsXG4gICAgJ0p1bHknLFxuICAgICdBdWd1c3QnLFxuICAgICdTZXB0ZW1iZXInLFxuICAgICdPY3RvYmVyJyxcbiAgICAnTm92ZW1iZXInLFxuICAgICdEZWNlbWJlcicsXG4gIF07XG5cbiAgcHVibGljIGRheU5hbWU6IEFycmF5PHN0cmluZz4gPSBbXG4gICAgJ01vbmRheScsXG4gICAgJ1R1ZXNkYXknLFxuICAgICdXZWRuZXNkYXknLFxuICAgICdUaHVyc2RheScsXG4gICAgJ0ZyaWRheScsXG4gICAgJ1NhdHVyZGF5JyxcbiAgICAnU3VuZGF5JyxcbiAgXTsgLy8gZnVsbCBkYXkgbmFtZVxuXG4gIHB1YmxpYyBxdWFydGVybHlNb250aDogQXJyYXk8c3RyaW5nPiA9IFtcbiAgICAnSmFudWFyeSwgQXByaWwsIEp1bHksIE9jdG9iZXInLFxuICAgICdGZWJydWFyeSwgTWF5LCBBdWd1c3QsIE5vdmVtYmVyJyxcbiAgICAnTWFyY2gsIEp1bmUsIFNlcHRlbWJlciwgRGVjZW1iZXInLFxuICBdO1xuXG4gIHB1YmxpYyBkYXRlQ29uZmlnID0ge1xuICAgIGZvcm1hdDogJ0REIE1NIFlZWVknLFxuICAgIHNob3dHb1RvQ3VycmVudDogZmFsc2UsXG4gIH07XG5cbiAgcHVibGljIGZyZXF1ZW5jeUluZm8gPSB7XG4gICAgcGxhY2Vob2xkZXI6ICcnLFxuICAgIHBhdHRlcm46ICcnLFxuICAgIGNhc2U6ICcnLFxuICAgIGZhaWxlZEFmdGVyOiAwLFxuICAgIHdpbmRvdzogMCxcbiAgICB0aW1lSW4xMmhyOiAnJyxcbiAgICB0aW1lSW4yNEhyOiAnJyxcbiAgICBsaWZlY3ljbGVEZXRhaWxzOiAnMDAwMC0wMC0wMH5+MCcsXG4gICAgc3RhcnRGcm9tOiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSxcbiAgICByZXBvcnRJZDogMCxcbiAgICBmYWlsZWRfdGltZV91dGM6IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApLFxuICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXM6IDAsXG4gICAgZGF0ZU9mTW9kaWZpZWQ6IDAsXG4gICAgc3RhcnREYXRlOiAnJyxcbiAgfTtcblxuICBwdWJsaWMgZnJlcXVlbmN5RGV0YWlsczogb2JqZWN0ID0ge1xuICAgIHBhdHRlcm46ICcnLFxuICAgIG5vdGlmaWNhdGlvblBlbmRpbmc6IDAsXG4gICAgZGF0ZU9mTW9kaWZpZWQ6IDAsXG4gICAgZGVhY3RpdmF0aW9uVmFsdWU6IDAsXG4gICAgc2VsZWN0ZWRSZXBvcnQ6IDAsXG4gICAgbGlmZWN5Y2xlOiAnMDAwMC0wMC0wMH5+MCcsXG4gICAgc3RhcnREYXRlOiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXG4gICAgc3RhcnRPblRoZURheTogTWF0aC5mbG9vcihuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApLFxuICAgIHdpbmRvdzogMCxcbiAgICBmYWlsZWQ6IDAsXG4gICAgdGltZTogREVGQVVMVF9USU1FLFxuICB9O1xuXG4gIHByaXZhdGUgZW52ITogYW55O1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBncmNTZXJ2aWNlOiBHcmNTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIGNvbmZpZz86IENvbmZpZ3VyYXRpb25zXG4gICkge1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuZW52ID0gY29uZmlnLmVudkNvbmZpZztcbiAgICB9XG4gIH1cblxuICB0aW1lRnJvbTEyaFRvMjRoKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCB0aW1lX2FyciA9IHZhbHVlLnNwbGl0KCcgJyk7XG4gICAgICBjb25zdCBtZXJpZGlhbiA9IHRpbWVfYXJyWzFdO1xuICAgICAgY29uc3QgaHJfbWluID0gdGltZV9hcnJbMF0uc3BsaXQoJzonKS5tYXAoTnVtYmVyKTtcbiAgICAgIGNvbnN0IGhyID0gaHJfbWluWzBdO1xuICAgICAgY29uc3QgbWluID0gaHJfbWluWzFdID8gaHJfbWluWzFdIDogJzAwJztcbiAgICAgIGxldCByZXR1cm5fdGltZSA9ICcnO1xuXG4gICAgICBpZiAobWVyaWRpYW4/LnRvTG93ZXJDYXNlKCkgPT0gJ3BtJykge1xuICAgICAgICBpZiAoaHIgPT0gMTIpIHtcbiAgICAgICAgICByZXR1cm5fdGltZSA9IDEyICsgJzonICsgbWluICsgJzowMCc7XG4gICAgICAgIH0gZWxzZSBpZiAoaHIgPCAxMikge1xuICAgICAgICAgIHJldHVybl90aW1lID0gK2hyICsgMTIgKyAnOicgKyBtaW4gKyAnOjAwJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGhyID09IDEyKSB7XG4gICAgICAgICAgcmV0dXJuX3RpbWUgPSAnMDA6JyArIG1pbiArICc6MDAnO1xuICAgICAgICB9IGVsc2UgaWYgKGhyIDwgMTIpIHtcbiAgICAgICAgICByZXR1cm5fdGltZSA9IGhyICsgJzonICsgbWluICsgJzowMCc7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJldHVybl90aW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgdGltZUluMTIodmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBocjtcbiAgICAgIGxldCBtaW47XG4gICAgICBsZXQgbWVyaWRpYW47XG4gICAgICBpZiAodmFsdWUuc3BsaXQoJzonKVswXSA+PSAxMikge1xuICAgICAgICBociA9IHZhbHVlLnNwbGl0KCc6JylbMF0gPT09ICcxMicgPyAxMiA6IHZhbHVlLnNwbGl0KCc6JylbMF0gLSAxMjtcbiAgICAgICAgbWluID0gdmFsdWUuc3BsaXQoJzonKVsxXTtcbiAgICAgICAgaWYgKG1pbi5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgbWluID0gJzAnICsgbWluO1xuICAgICAgICB9XG4gICAgICAgIG1lcmlkaWFuID0gJ3BtJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhyID0gdmFsdWUuc3BsaXQoJzonKVswXSA9PSAnMDAnID8gMTIgOiB2YWx1ZS5zcGxpdCgnOicpWzBdO1xuICAgICAgICBtaW4gPSB2YWx1ZS5zcGxpdCgnOicpWzFdO1xuICAgICAgICBpZiAobWluLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICBtaW4gPSAnMCcgKyBtaW47XG4gICAgICAgIH1cbiAgICAgICAgbWVyaWRpYW4gPSAnYW0nO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhyICsgJzonICsgbWluICsgJyAnICsgbWVyaWRpYW47XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBmcmFtZXdvcmtTdGFydERhdGUocm93OiBhbnkpIHtcbiAgICBsZXQgY2FsY3VsYXRlZERheTogbnVtYmVyID0gMDtcbiAgICBjb25zdCBzdGFydERhdGUgPSBuZXcgRGF0ZShwYXJzZUludChyb3cuc3RhcnRfZGF0ZSkgKiAxMDAwKS5nZXREYXkoKTtcbiAgICBjb25zdCBnZXREYXRlID0gbmV3IERhdGUocGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpICogMTAwMCkuZ2V0RGF0ZSgpO1xuICAgIGNvbnN0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoKS5nZXREYXkoKTtcbiAgICBjb25zdCBzdGFydE1vbnRoID0gbmV3IERhdGUocGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpICogMTAwMCkuZ2V0TW9udGgoKTtcblxuICAgIGlmIChcbiAgICAgIHBhcnNlSW50KHJvdy5zdGFydF9kYXRlKSA8IERhdGUubm93KCkgLyAxMDAwICYmXG4gICAgICAocm93LmZyZXF1ZW5jeV90ZW1wbGF0ZSA9PT0gJ2V2ZXJ5IHdlZWsnIHx8XG4gICAgICAgIHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgPT09ICdldmVyeSAyIHdlZWtzJyB8fFxuICAgICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgMyB3ZWVrcycpXG4gICAgKSB7XG4gICAgICBsZXQgZGF5c1RvQmVBZGRlZCA9IDA7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICBpZiAoKGN1cnJlbnREYXRlICsgaSkgJSA3ID09PSBzdGFydERhdGUpIHtcbiAgICAgICAgICBkYXlzVG9CZUFkZGVkID0gaTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgdGltZXN0YW1wVG9CZUFkZGVkID0gZGF5c1RvQmVBZGRlZCAqIDI0ICogNjAgKiA2MCAqIDEwMDA7XG4gICAgICBjYWxjdWxhdGVkRGF5ID0gbmV3IERhdGUoXG4gICAgICAgIG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgdGltZXN0YW1wVG9CZUFkZGVkXG4gICAgICApLmdldFRpbWUoKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgcGFyc2VJbnQocm93LnN0YXJ0X2RhdGUpIDwgRGF0ZS5ub3coKSAvIDEwMDAgJiZcbiAgICAgICEoXG4gICAgICAgIHJvdy5mcmVxdWVuY3lfdGVtcGxhdGUgPT09ICdldmVyeSB3ZWVrJyB8fFxuICAgICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlID09PSAnZXZlcnkgMiB3ZWVrcycgfHxcbiAgICAgICAgcm93LmZyZXF1ZW5jeV90ZW1wbGF0ZSA9PT0gJ2V2ZXJ5IDMgd2Vla3MnXG4gICAgICApICYmXG4gICAgICByb3cuZnJlcXVlbmN5X3RlbXBsYXRlICE9PSAnZXZlcnkgZGF5J1xuICAgICkge1xuICAgICAgY29uc3QgbW9tZW50VW5peCA9IG1vbWVudChcbiAgICAgICAgZ2V0RGF0ZSArXG4gICAgICAgICAgJy0nICtcbiAgICAgICAgICAobmV3IERhdGUoKS5nZXRNb250aCgpICsgMSkgK1xuICAgICAgICAgICctJyArXG4gICAgICAgICAgbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpICtcbiAgICAgICAgICAnIDAwOjAwJyxcbiAgICAgICAgJ0RELU1NLVlZWVkgSEg6bW0nXG4gICAgICApLnVuaXgoKTtcbiAgICAgIGNhbGN1bGF0ZWREYXkgPSBtb21lbnRVbml4ICogMTAwMDtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgcm93LmZyZXF1ZW5jeV90ZW1wbGF0ZSA9PT0gJ2V2ZXJ5IGRheScgJiZcbiAgICAgIHBhcnNlSW50KHJvdy5zdGFydF9kYXRlKSA8IERhdGUubm93KCkgLyAxMDAwXG4gICAgKSB7XG4gICAgICBjYWxjdWxhdGVkRGF5ID0gRGF0ZS5ub3coKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsY3VsYXRlZERheSA9IHBhcnNlSW50KHJvdy5zdGFydF9kYXRlKSAqIDEwMDA7XG4gICAgfVxuICAgIHJldHVybiBjYWxjdWxhdGVkRGF5IC8gMTAwMDtcbiAgfVxuXG4gIGZyYW1ld29ya0ZyZXF1ZW5jeShmcmVxdWVuY3k6IGFueSwgc3RhcnRfZGF0ZTogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKHN0YXJ0X2RhdGUgKiAxMDAwKTtcbiAgICAgIGNvbnN0IGZpcnN0SGFsZk1vbnRoID0gWycxJywgJzInLCAnMycsICc0JywgJzUnLCAnNiddO1xuICAgICAgY29uc3Qgc2Vjb25kSGFsZk1vbnRoID0gWyc3JywgJzgnLCAnOScsICcxMCcsICcxMScsICcxMiddO1xuICAgICAgY29uc3QgZ2V0RGF5RGF0YSA9IHN0YXJ0RGF0ZS5nZXREYXkoKSA9PT0gMCA/IDcgOiBzdGFydERhdGUuZ2V0RGF5KCk7XG4gICAgICBjb25zdCBtb250aCA9IHN0YXJ0RGF0ZS5nZXRNb250aCgpO1xuICAgICAgbGV0IHF1YXJ0ZXJQYXR0ZXJuID0gJ34xLDQsNywxMH4wJztcbiAgICAgIHN3aXRjaCAobW9udGgpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICBjYXNlIDM6XG4gICAgICAgIGNhc2UgNjpcbiAgICAgICAgY2FzZSA5OlxuICAgICAgICAgIHF1YXJ0ZXJQYXR0ZXJuID0gJ34xLDQsNywxMH4wJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICBjYXNlIDQ6XG4gICAgICAgIGNhc2UgNzpcbiAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICBxdWFydGVyUGF0dGVybiA9ICd+Miw1LDgsMTF+MCc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICBjYXNlIDg6XG4gICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgcXVhcnRlclBhdHRlcm4gPSAnfjMsNiw5LDEyfjAnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gXTtcbiAgICAgIGxldCBmcmVxdWVuY3lfcGF0dGVybjtcblxuICAgICAgZnJlcXVlbmN5ID0gZnJlcXVlbmN5LnRvTG93ZXJDYXNlKCk7XG4gICAgICBsZXQgY29udGludW91c19mYWlsZWRfZGF5cyA9IDA7XG4gICAgICAvLyBAID0+IGRheSAoMSB0byA3KVxuICAgICAgLy8gIyA9PiBtb250aCAoMSB0byAxMilcbiAgICAgIC8vID8gPT4gbW9udGggJSAyID09IDAgPyBcIjIsNCw2LDgsMTAsMTJcIiA6IFwiMSwzLDUsNyw5LDExXCJcblxuICAgICAgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IHdlZWsnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzJ+JyArIGdldERheURhdGEgKyAnfjB+MSc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnb25lIHRpbWUnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cbiAgICAgICAgICAnMH4nICtcbiAgICAgICAgICBzdGFydERhdGUuZ2V0RnVsbFllYXIoKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICBzdGFydERhdGUuZ2V0RGF0ZSgpO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSBkYXknKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+MH4wfjEnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IGFsdGVybmF0ZSBkYXknKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+MH4wfjInO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDEwIGRheXMnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJzF+MH4wfjEwJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSAyIHdlZWtzJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcyficgKyBnZXREYXlEYXRhICsgJ34wfjInO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IGZvcnRuaWdodCcpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMX4nICsgZ2V0RGF5RGF0YSArICd+MH4xNCc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgMyB3ZWVrcycpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnMn4nICsgZ2V0RGF5RGF0YSArICd+MH4zJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSBtb250aCcpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxuICAgICAgICAgICczficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34xLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMn4wJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSA0NSBkYXlzJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcxfjB+MH40NSc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgYWx0ZXJuYXRlIG1vbnRoJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XG4gICAgICAgICAgJzN+JyArXG4gICAgICAgICAgc3RhcnREYXRlLmdldERhdGUoKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICAoKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgJSAyID09IDBcbiAgICAgICAgICAgID8gJzIsNCw2LDgsMTAsMTInXG4gICAgICAgICAgICA6ICcxLDMsNSw3LDksMTEnKSArXG4gICAgICAgICAgJ34wJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSBxdWFydGVyJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICc3ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgcXVhcnRlclBhdHRlcm47XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDEyMCBkYXlzJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICcxfjB+MH4xMjAnO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdoYWxmIHllYXJseScpIHtcbiAgICAgICAgY29uc3QgaW5kZXgxID0gZmlyc3RIYWxmTW9udGguaW5kZXhPZihcbiAgICAgICAgICAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGluZGV4MiA9IHNlY29uZEhhbGZNb250aC5pbmRleE9mKFxuICAgICAgICAgIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgcGF0dGVybiA9XG4gICAgICAgICAgaW5kZXgxID4gLTFcbiAgICAgICAgICAgID8gJ34nICtcbiAgICAgICAgICAgICAgZmlyc3RIYWxmTW9udGhbaW5kZXgxXSArXG4gICAgICAgICAgICAgICcsJyArXG4gICAgICAgICAgICAgIHNlY29uZEhhbGZNb250aFtpbmRleDFdICtcbiAgICAgICAgICAgICAgJ34wJ1xuICAgICAgICAgICAgOiAnficgK1xuICAgICAgICAgICAgICBmaXJzdEhhbGZNb250aFtpbmRleDJdICtcbiAgICAgICAgICAgICAgJywnICtcbiAgICAgICAgICAgICAgc2Vjb25kSGFsZk1vbnRoW2luZGV4Ml0gK1xuICAgICAgICAgICAgICAnfjAnO1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9ICczficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgcGF0dGVybjtcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDEwO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICd5ZWFybHknKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cbiAgICAgICAgICAnNH4nICsgc3RhcnREYXRlLmdldERhdGUoKSArICd+JyArIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICsgJ34xJztcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgMiB5ZWFycycpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxuICAgICAgICAgICc0ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34nICsgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgKyAnfjInO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSAzIHllYXJzJykge1xuICAgICAgICBmcmVxdWVuY3lfcGF0dGVybiA9XG4gICAgICAgICAgJzR+JyArIHN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAnficgKyAoc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxKSArICd+Myc7XG4gICAgICB9IGVsc2UgaWYgKGZyZXF1ZW5jeSA9PT0gJ2V2ZXJ5IDQgeWVhcnMnKSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID1cbiAgICAgICAgICAnNH4nICsgc3RhcnREYXRlLmdldERhdGUoKSArICd+JyArIChzdGFydERhdGUuZ2V0TW9udGgoKSArIDEpICsgJ340JztcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAnZXZlcnkgNSB5ZWFycycpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxuICAgICAgICAgICc0ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34nICsgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgKyAnfjUnO1xuICAgICAgfSBlbHNlIGlmIChmcmVxdWVuY3kgPT09ICdldmVyeSAxMCB5ZWFycycpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPVxuICAgICAgICAgICc0ficgKyBzdGFydERhdGUuZ2V0RGF0ZSgpICsgJ34nICsgKHN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSkgKyAnfjEwJztcbiAgICAgIH0gZWxzZSBpZiAoZnJlcXVlbmN5ID09PSAndG8gYmUgZGVjaWRlZCBsYXRlcicpIHtcbiAgICAgICAgZnJlcXVlbmN5X3BhdHRlcm4gPSAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZyZXF1ZW5jeV9wYXR0ZXJuID0gJyc7XG4gICAgICB9XG4gICAgICAvLyB0aGlzLmVkaXREYXRhLmZyZXF1ZW5jeV9kZXRhaWxzID0gZnJlcXVlbmN5X3BhdHRlcm47XG5cbiAgICAgIHJldHVybiB7IGZyZXF1ZW5jeV9wYXR0ZXJuLCBjb250aW51b3VzX2ZhaWxlZF9kYXlzIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgIHJldHVybiB7IGZyZXF1ZW5jeV9wYXR0ZXJuOiAnJywgY29udGludW91c19mYWlsZWRfZGF5czogMCB9O1xuICAgIH1cbiAgfVxuXG4gIHNob3J0SGFuZF9mcmVxQ2FsKGZyZXF1ZW5jeTogYW55LCBkYXk6IGFueSwgbW9udGg6IGFueSwgeWVhcj86IGFueSkge1xuICAgIGNvbnN0IG1vbnRoTmFtZXMgPSBNT05USF9OQU1FUztcbiAgICBsZXQgZnJlcXVlbmN5X2RldGFpbHM7XG4gICAgbGV0IGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAwO1xuICAgIGNvbnN0IGRhdGVfdmFsdWUgPSBuZXcgRGF0ZSgpO1xuXG4gICAgZGF0ZV92YWx1ZS5zZXRNb250aChcbiAgICAgIHR5cGVvZiBtb250aCAhPT0gJ251bWJlcidcbiAgICAgICAgPyBtb250aE5hbWVzLmZpbHRlcigoeCkgPT4geC5tb250aCA9PT0gbW9udGg/LnN1YnN0cmluZygwLCAzKSlbMF1cbiAgICAgICAgICAgID8udmFsdWUgLSAxXG4gICAgICAgIDogbW9udGhcbiAgICApO1xuICAgIGlmICgheWVhcikge1xuICAgICAgZGF0ZV92YWx1ZS5zZXRGdWxsWWVhcigyMCArIG1vbnRoLnNwbGl0KFwiJ1wiKVsxXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGVfdmFsdWUuc2V0RnVsbFllYXIoeWVhcik7XG4gICAgfVxuICAgIGRhdGVfdmFsdWUuc2V0RGF0ZShkYXkpO1xuICAgIGxldCBxdWFydGVyUGF0dGVybiA9ICd+MSw0LDcsMTB+MCc7XG4gICAgY29uc3QgZmlyc3RIYWxmTW9udGggPSBbJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2J107XG4gICAgY29uc3Qgc2Vjb25kSGFsZk1vbnRoID0gWyc3JywgJzgnLCAnOScsICcxMCcsICcxMScsICcxMiddO1xuICAgIGZyZXF1ZW5jeSA9IGZyZXF1ZW5jeS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgc3dpdGNoIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgIGNhc2UgMzpcbiAgICAgIGNhc2UgNjpcbiAgICAgIGNhc2UgOTpcbiAgICAgICAgcXVhcnRlclBhdHRlcm4gPSAnfjEsNCw3LDEwfjAnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTpcbiAgICAgIGNhc2UgNDpcbiAgICAgIGNhc2UgNzpcbiAgICAgIGNhc2UgMTA6XG4gICAgICAgIHF1YXJ0ZXJQYXR0ZXJuID0gJ34yLDUsOCwxMX4wJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICBjYXNlIDU6XG4gICAgICBjYXNlIDg6XG4gICAgICBjYXNlIDExOlxuICAgICAgICBxdWFydGVyUGF0dGVybiA9ICd+Myw2LDksMTJ+MCc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjb25zdCBnZXREYXkgPSBkYXRlX3ZhbHVlLmdldERheSgpID09PSAwID8gNyA6IGRhdGVfdmFsdWUuZ2V0RGF5KCk7XG4gICAgc3dpdGNoIChmcmVxdWVuY3kpIHtcbiAgICAgIGNhc2UgJ2V2ZXJ5IHdlZWsnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcyficgKyBnZXREYXkgKyAnfjB+MSc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvbmUgdGltZSc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cbiAgICAgICAgICAnMH4nICtcbiAgICAgICAgICAnJyArXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXRGdWxsWWVhcigpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSBkYXknOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxfjB+MH4xJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IGFsdGVybmF0ZSBkYXknOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxfjB+MH4yJztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IDEwIGRheXMnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxfjB+MH4xMCc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxNTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSAyIHdlZWtzJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMn4nICsgZ2V0RGF5ICsgJ34wfjInO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgZm9ydG5pZ2h0JzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnMX4nICsgZ2V0RGF5ICsgJ34wfjE0JztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IDMgd2Vla3MnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcyficgKyBnZXREYXkgKyAnfjB+Myc7XG4gICAgICAgIGNvbnRpbnVvdXNfZmFpbGVkX2RheXMgPSAxMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdldmVyeSBtb250aCc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cbiAgICAgICAgICAnM34nICsgZGF0ZV92YWx1ZS5nZXREYXRlKCkgKyAnfjEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyfjAnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgNDUgZGF5cyc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzF+MH4wfjQ1JztcbiAgICAgICAgY29udGludW91c19mYWlsZWRfZGF5cyA9IDE1O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IGFsdGVybmF0ZSBtb250aCc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID1cbiAgICAgICAgICAnM34nICtcbiAgICAgICAgICBkYXRlX3ZhbHVlLmdldERhdGUoKSArXG4gICAgICAgICAgJ34nICtcbiAgICAgICAgICAoKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICUgMiA9PT0gMFxuICAgICAgICAgICAgPyAnMiw0LDYsOCwxMCwxMidcbiAgICAgICAgICAgIDogJzEsMyw1LDcsOSwxMScpICtcbiAgICAgICAgICAnfjAnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgcXVhcnRlcic6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzd+JyArIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICsgcXVhcnRlclBhdHRlcm47XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXZlcnkgMTIwIGRheXMnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9ICcxfjB+MH4xMjAnO1xuICAgICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzID0gMTU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaGFsZiB5ZWFybHknOlxuICAgICAgICBjb25zdCBpbmRleDEgPSBmaXJzdEhhbGZNb250aC5pbmRleE9mKFxuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGluZGV4MiA9IHNlY29uZEhhbGZNb250aC5pbmRleE9mKFxuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHBhdHRlcm4gPVxuICAgICAgICAgIGluZGV4MSA+IC0xXG4gICAgICAgICAgICA/ICd+JyArXG4gICAgICAgICAgICAgIGZpcnN0SGFsZk1vbnRoW2luZGV4MV0gK1xuICAgICAgICAgICAgICAnLCcgK1xuICAgICAgICAgICAgICBzZWNvbmRIYWxmTW9udGhbaW5kZXgxXSArXG4gICAgICAgICAgICAgICd+MCdcbiAgICAgICAgICAgIDogJ34nICtcbiAgICAgICAgICAgICAgZmlyc3RIYWxmTW9udGhbaW5kZXgyXSArXG4gICAgICAgICAgICAgICcsJyArXG4gICAgICAgICAgICAgIHNlY29uZEhhbGZNb250aFtpbmRleDJdICtcbiAgICAgICAgICAgICAgJ34wJztcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPSAnM34nICsgZGF0ZV92YWx1ZS5nZXREYXRlKCkgKyBwYXR0ZXJuO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FubnVhbCc6XG4gICAgICBjYXNlICd5ZWFybHknOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XG4gICAgICAgICAgJzR+JyArXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcbiAgICAgICAgICAnfjEnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IDIgeWVhcnMnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XG4gICAgICAgICAgJzR+JyArXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcbiAgICAgICAgICAnfjInO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IDMgeWVhcnMnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XG4gICAgICAgICAgJzR+JyArXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcbiAgICAgICAgICAnfjMnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IDQgeWVhcnMnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XG4gICAgICAgICAgJzR+JyArXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcbiAgICAgICAgICAnfjQnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IDUgeWVhcnMnOlxuICAgICAgICBmcmVxdWVuY3lfZGV0YWlscyA9XG4gICAgICAgICAgJzR+JyArXG4gICAgICAgICAgZGF0ZV92YWx1ZS5nZXREYXRlKCkgK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgKGRhdGVfdmFsdWUuZ2V0TW9udGgoKSArIDEpICtcbiAgICAgICAgICAnfjUnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V2ZXJ5IDEwIHllYXJzJzpcbiAgICAgICAgZnJlcXVlbmN5X2RldGFpbHMgPVxuICAgICAgICAgICc0ficgK1xuICAgICAgICAgIGRhdGVfdmFsdWUuZ2V0RGF0ZSgpICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIChkYXRlX3ZhbHVlLmdldE1vbnRoKCkgKyAxKSArXG4gICAgICAgICAgJ34xMCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb25nb2luZyc6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzEwfjB+MH4wJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0byBiZSBkZWNpZGVkIGxhdGVyJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGZyZXF1ZW5jeV9kZXRhaWxzID0gJzV+MH4wfjAnO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcGF0dGVybjogZnJlcXVlbmN5X2RldGFpbHMsXG4gICAgICBjb250aW51b3VzX2ZhaWxlZF9kYXlzOiBjb250aW51b3VzX2ZhaWxlZF9kYXlzLFxuICAgIH07XG4gIH1cblxuICBnZXRPbkNvbXBsZXRpb25PZlJlc3BvbnNpYmlsaXR5KCkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxhbnlbXT4odGhpcy5lbnYuY29tcGxpYW5jZUdldCArICdyZXBvcnRzL29uQ29tcGxldGlvbk9mUmVwb3J0cycsIHtcbiAgICAgICAgaGVhZGVycyxcbiAgICAgIH0pXG4gICAgICAucGlwZShyZXRyeSgyKSk7XG4gIH1cblxuICBjaGFuZ2VUaW1lWm9uZShkYXRlOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdudW1iZXInKSB7XG4gICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgfVxuICAgIGNvbnN0IGludkRhdGUgPSBuZXcgRGF0ZShcbiAgICAgIGRhdGUudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJywge1xuICAgICAgICB0aW1lWm9uZTogdGhpcy5hdXRoU2VydmljZT8udXNlckRldGFpbHM/LnRpbWV6b25lLFxuICAgICAgfSlcbiAgICApO1xuICAgIHJldHVybiBpbnZEYXRlO1xuICB9XG5cbiAgZ2V0UmVzcG9uc2liaWxpdHlMaXN0KHBheWxvYWQ6IGFueSkge1xuICAgIGNvbnN0IGxpbWl0ID0gUEFHSU5BVElPTl9MSU1JVDtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCkuc2V0KFxuICAgICAgJ3Rva2VuJyxcbiAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCksXG4gICAgKVxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8YW55PihcbiAgICAgICAgYCR7dGhpcy5lbnYuY29tcGxpYW5jZUdldH1zYWlsc1Jlc3BvbnNpYmlsaXRpZXNMaXN0JnBhZ2U9JHtwYXlsb2FkPy5wYWdlTm99JmxpbWl0PSR7bGltaXR9JHtwYXlsb2FkPy5zZWFyY2hUZXJtID8gYCZzZWFyY2hUZXJtPSR7cGF5bG9hZD8uc2VhcmNoVGVybX1gIDogJyd9JmJpekN5Y2xlUmVxdWlyZWQ9MCZpbmNsdWRlPWFzc2lnbmVlcyZncm91cD1hbGxgLFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMSkpO1xuICB9XG5cbiAgZ2V0UmVzcG9uc2liaWxpdGllc0NvdW50KHBheWxvYWQ6IGFueSkge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKS5zZXQoXG4gICAgICAndG9rZW4nLFxuICAgICAgdGhpcy5hdXRoU2VydmljZS5nZXRBdXRob3JpemF0aW9uVG9rZW4oKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8YW55PihcbiAgICAgICAgdGhpcy5lbnYucmVzcG9uc2liaWxpdHlQb3N0ICsgJ21hbmFnZV9yZXNwb25zaWJpbGl0aWVzX3JlcG9ydHNfY291bnQnLFxuICAgICAgICBwYXlsb2FkLFxuICAgICAgICB7IGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUocmV0cnkoMSkpO1xuICB9XG5cbiAgZ2V0QWxsUmVzcG9uc2liaWxpdGllcyhwYWdlTm86IG51bWJlciwgcGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgYnVzaW5lc3NDeWNsZSA9IHRoaXMuZ3JjU2VydmljZS5nZXRCdXNpbmVzc0N5Y2xlKCk7XG4gICAgY29uc3QgZm9ybWF0dGVkQ3ljbGUgPSBidXNpbmVzc0N5Y2xlLnNlbGVjdGVkX2N5Y2xlXG4gICAgICA/IGRheWpzKGJ1c2luZXNzQ3ljbGUuc2VsZWN0ZWRfY3ljbGUuc3BsaXQoJy0nKVswXSkuZm9ybWF0KCdZWVlZLU1NLUREJykgKyBcbiAgICAgICAgJzonICsgXG4gICAgICAgIGRheWpzKGJ1c2luZXNzQ3ljbGUuc2VsZWN0ZWRfY3ljbGUuc3BsaXQoJy0nKVsxXSkuZm9ybWF0KCdZWVlZLU1NLUREJylcbiAgICAgIDogJyc7XG4gICAgXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpXG4gICAgICAuc2V0KCd0b2tlbicsIHRoaXMuYXV0aFNlcnZpY2UuZ2V0QXV0aG9yaXphdGlvblRva2VuKCkpXG4gICAgICAuc2V0KCdiaXpfY3ljbGUnLCBmb3JtYXR0ZWRDeWNsZSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55W10+KFxuICAgICAgdGhpcy5lbnYuY29tcGxpYW5jZUdldCArIEFQSS5yZXNwb25zaWJpbGl0eUxpc3QgKyBgJnBhZ2U9JHtwYWdlTm99JmxpbWl0PSR7UEFHSU5BVElPTl9MSU1JVH0ke3BheWxvYWQ/LnNlYXJjaFRlcm0gPyBgJnNlYXJjaFRlcm09JHtwYXlsb2FkPy5zZWFyY2hUZXJtfWAgOiAnJ31gICxcbiAgICAgIHsgaGVhZGVycyB9XG4gICAgKTtcbiAgfVxuXG4gIGZvcm1hdERhdGUoKSB7XG4gICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGRheSA9IFN0cmluZyhjdXJyZW50RGF0ZT8uZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIGNvbnN0IG1vbnRoID0gU3RyaW5nKGN1cnJlbnREYXRlPy5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCB5ZWFyID0gY3VycmVudERhdGU/LmdldEZ1bGxZZWFyKCk7XG4gICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGAke2RheX0tJHttb250aH0tJHt5ZWFyfWA7XG4gICAgcmV0dXJuIGZvcm1hdHRlZERhdGU7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIGZyZXF1ZW5jeSBjb25maWd1cmF0aW9uIG9iamVjdCBpbnRvIGEgc3RhbmRhcmRpemVkIEZyZXF1ZW5jeU9iamVjdCBmb3JtYXQuXG4gICAqIFxuICAgKiBAcGFyYW0gZnJlcXVlbmN5IC0gVGhlIGlucHV0IGZyZXF1ZW5jeSBjb25maWd1cmF0aW9uIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICogLSBjYXNlOiBUaGUgdHlwZSBvZiBmcmVxdWVuY3kgKCdvbmVfdGltZScgfCAnZGFpbHknIHwgJ3dlZWtseScgfCAnbW9udGhseScgfCAncXVhcnRlcmx5JyB8ICdzZW1lc3RlcicgfCAneWVhcmx5JyB8ICdyYW5kb20nIHwgJ29uZ29pbmcnIHwgJ29uX2NvbXBsZXRpb25fb2YnIHwgJ2JpYW5udWFsbHknKVxuICAgKiAtIHdpbmRvdzogTnVtYmVyIG9mIGRheXMgYmVmb3JlIHRoZSB0YXNrIGNhbiBiZSBzdGFydGVkXG4gICAqIC0gZmFpbGVkQWZ0ZXI6IE51bWJlciBvZiBkYXlzIGFmdGVyIHdoaWNoIHRoZSB0YXNrIGlzIGNvbnNpZGVyZWQgZmFpbGVkXG4gICAqIC0gY29udGludW91c19mYWlsZWRfZGF5czogTnVtYmVyIG9mIGRheXMgYWZ0ZXIgd2hpY2ggdGhlIHRhc2sgaXMgYXV0by1kZWFjdGl2YXRlZFxuICAgKiAtIGRheTogVGhlIGRheSBvZiBvY2N1cnJlbmNlXG4gICAqIC0gdGltZUluMjRIcjogVGltZSBpbiAyNC1ob3VyIGZvcm1hdFxuICAgKiAtIGV2ZXJ5OiBGcmVxdWVuY3kgaW50ZXJ2YWxcbiAgICogLSBzZWxlY3RlZERheTogQXJyYXkgb2Ygc2VsZWN0ZWQgZGF5cyBmb3Igd2Vla2x5IGZyZXF1ZW5jeSAoMS03IHJlcHJlc2VudGluZyBNb25kYXktU3VuZGF5KVxuICAgKiAtIHNlbGVjdGVkTW9udGg6IEFycmF5IG9mIHNlbGVjdGVkIG1vbnRocyAoMC0xMSByZXByZXNlbnRpbmcgSmFudWFyeS1EZWNlbWJlcilcbiAgICogLSBzdGFydEZyb206IFVuaXggdGltZXN0YW1wIGZvciB0aGUgc3RhcnQgZGF0ZVxuICAgKiAtIGxpZmVjeWNsZURldGFpbHM6IFN0cmluZyBpbiBmb3JtYXQgXCJZWVlZLU1NLUREfn5OXCIgd2hlcmUgTiBpcyB0aGUgbnVtYmVyIG9mIG9jY3VycmVuY2VzXG4gICAqIC0gcmFuZG9tVHlwZVNlbGVjdGVkOiBJbmRleCBmb3IgcmFuZG9tIGZyZXF1ZW5jeSB0eXBlICgwOiB3ZWVrbHksIDE6IG1vbnRobHksIDI6IHF1YXJ0ZXJseSwgMzogeWVhcmx5KVxuICAgKiAtIHJhbmRvbUluc3RhbmNlczogTnVtYmVyIG9mIHJhbmRvbSBvY2N1cnJlbmNlc1xuICAgKiAtIHNlbGVjdGVkVHlwZTogTnVtYmVyIG9mIHJlbWluZGVycyBmb3Igb25nb2luZyBmcmVxdWVuY3lcbiAgICogLSBzZWxlY3RlZE9uZ29pbmdUeXBlOiBJbmRleCBmb3Igb25nb2luZyBmcmVxdWVuY3kgdHlwZSAoMTogd2VlaywgMjogbW9udGgsIDM6IHF1YXJ0ZXIsIDQ6IHNlbWVzdGVyLCA1OiB5ZWFyKVxuICAgKiBcbiAgICogQHJldHVybnMgQSBGcmVxdWVuY3lPYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTpcbiAgICogLSB0eXBlOiBGcmVxdWVuY3kgdHlwZVxuICAgKiAtIHN0YXJ0QmVmb3JlOiBEYXlzIGJlZm9yZSB0YXNrIGNhbiBzdGFydFxuICAgKiAtIGVuZEFmdGVyOiBEYXlzIGFmdGVyIHdoaWNoIHRhc2sgZmFpbHNcbiAgICogLSBhdXRvRGVhY3RpdmF0ZTogRGF5cyBhZnRlciB3aGljaCB0YXNrIGlzIGRlYWN0aXZhdGVkXG4gICAqIC0gZGF5OiBEYXkgb2Ygb2NjdXJyZW5jZVxuICAgKiAtIHRpbWU6IFRpbWUgaW4gMjQtaG91ciBmb3JtYXRcbiAgICogLSByZXBlYXRPcHRpb25zOiB7XG4gICAqICAgICBldmVyeTogbnVtYmVyLFxuICAgKiAgICAgcmVwZWF0T246IHN0cmluZyAoYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHNlbGVjdGVkIGRheXMvbW9udGhzKSxcbiAgICogICAgIGxpZmVjeWNsZToge1xuICAgKiAgICAgICBzdGFydEZyb206IHN0cmluZyAoWVlZWS1NTS1ERCksXG4gICAqICAgICAgIGVuZEJ5Pzogc3RyaW5nIChZWVlZLU1NLUREKSxcbiAgICogICAgICAgZW5kQWZ0ZXI/OiBudW1iZXJcbiAgICogICAgIH1cbiAgICogICB9XG4gICAqIC0gcmFuZG9tPzogeyB0eXBlOiBzdHJpbmcsIG9jY3VycmVuY2U6IG51bWJlciB9XG4gICAqIC0gb25Db21wbGV0ZToge31cbiAgICogLSBvbkdvaW5nOiB7IHJlbWluZGVyczogbnVtYmVyLCBzdGFydE9mOiAnd2VlaycgfCAnbW9udGgnIHwgJ3F1YXJ0ZXInIHwgJ3NlbWVzdGVyJyB8ICd5ZWFyJyB9XG4gICAqIFxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IGZyZXF1ZW5jeSA9IHtcbiAgICogICBjYXNlOiAnd2Vla2x5JyxcbiAgICogICB3aW5kb3c6IDIsXG4gICAqICAgZmFpbGVkQWZ0ZXI6IDEsXG4gICAqICAgY29udGludW91c19mYWlsZWRfZGF5czogMyxcbiAgICogICBkYXk6IDEsXG4gICAqICAgdGltZUluMjRIcjogJzA5OjAwOjAwJyxcbiAgICogICBldmVyeTogMSxcbiAgICogICBzZWxlY3RlZERheTogWzEsIDMsIDVdLCAvLyBNb25kYXksIFdlZG5lc2RheSwgRnJpZGF5XG4gICAqICAgc3RhcnRGcm9tOiAxNjc4OTAwMDAwLFxuICAgKiAgIGxpZmVjeWNsZURldGFpbHM6ICcyMDI0LTEyLTMxfn4xMCdcbiAgICogfTtcbiAgICogY29uc3QgcmVzdWx0ID0gc2V0RnJlcXVlbmN5T2JqZWN0KGZyZXF1ZW5jeSk7XG4gICAqIGBgYFxuICAgKi9cbiAgc2V0RnJlcXVlbmN5T2JqZWN0KGZyZXF1ZW5jeTogYW55KTogRnJlcXVlbmN5T2JqZWN0IHwgbnVsbCB7XG4gICAgY29uc29sZS5sb2coZnJlcXVlbmN5LCBcImZyZXF1ZW5jeVwiKTtcbiAgICBjb25zdCByZXBlYXRPcHRpb25zID0gdGhpcy5yZXBlYXRPcHRpb25zKGZyZXF1ZW5jeSk7XG4gICAgY29uc3QgbGlmZWN5Y2xlRGV0YWlscyA9IGZyZXF1ZW5jeS5saWZlY3ljbGVEZXRhaWxzLnNwbGl0KCd+ficpO1xuICAgIGNvbnN0IGZyZXF1ZW5jeU9iamVjdDogRnJlcXVlbmN5T2JqZWN0ID0ge1xuICAgICAgdHlwZTogZnJlcXVlbmN5LmNhc2UsXG4gICAgICBzdGFydEJlZm9yZTogZnJlcXVlbmN5LndpbmRvdyxcbiAgICAgIGVuZEFmdGVyOiBmcmVxdWVuY3kuZmFpbGVkQWZ0ZXIsXG4gICAgICBhdXRvRGVhY3RpdmF0ZTogZnJlcXVlbmN5LmNvbnRpbnVvdXNfZmFpbGVkX2RheXMsXG4gICAgICBkYXk6IGZyZXF1ZW5jeS5kYXksIFxuICAgICAgdGltZTogZnJlcXVlbmN5LnRpbWVJbjI0SHIsXG4gICAgICByZXBlYXRPcHRpb25zOiB7XG4gICAgICAgIGV2ZXJ5OiBmcmVxdWVuY3kuZXZlcnksXG4gICAgICAgIHJlcGVhdE9uOiByZXBlYXRPcHRpb25zLFxuICAgICAgICBsaWZlY3ljbGU6IHtcbiAgICAgICAgICBzdGFydEZyb206IG1vbWVudChmcmVxdWVuY3kuc3RhcnRGcm9tICogMTAwMCkuZm9ybWF0KCdZWVlZLU1NLUREJyksXG4gICAgICAgICAgZW5kQnk6bGlmZWN5Y2xlRGV0YWlsc1swXSAhPT0gJzAwMDAtMDAtMDAnID8gbW9tZW50KGxpZmVjeWNsZURldGFpbHNbMF0gLCAnREQtTU1NTS1ZWVlZJykuZm9ybWF0KCdZWVlZLU1NLUREJykgOiB1bmRlZmluZWQsXG4gICAgICAgICAgZW5kQWZ0ZXI6IFxuICAgICAgICAgICAgICAgIGZyZXF1ZW5jeS5jYXNlID09PSAnb25lX3RpbWUnXG4gICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICA6IGxpZmVjeWNsZURldGFpbHNbMV0gIT09ICcwJ1xuICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KGxpZmVjeWNsZURldGFpbHNbMV0pXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcmFuZG9tOiB0aGlzLmdldFJhbmRvbUZyZXF1ZW5jeShmcmVxdWVuY3kpLFxuICAgICAgb25Db21wbGV0ZTogZnJlcXVlbmN5LmNhc2UgPT09ICdvbl9jb21wbGV0ZScgPyBmcmVxdWVuY3kub25Db21wbGV0aW9uIDoge30sXG4gICAgICBvbkdvaW5nOiB0aGlzLmdldE9uZ29pbmcoZnJlcXVlbmN5KSxcbiAgICB9ICBcbiAgICByZXR1cm4gZnJlcXVlbmN5T2JqZWN0O1xuICB9IFxuXG4gIHJlcGVhdE9wdGlvbnMoZnJlcXVlbmN5OiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnNvbGUubG9nKGZyZXF1ZW5jeSwgJ3JlcGVhdE9wdGlvbnMgZnJlcXVlbmN5Jyk7XG4gICBpZihmcmVxdWVuY3k/LnNlbGVjdGVkRGF5Py5sZW5ndGggPiAwKSB7XG4gICAgY29uc3Qgd2Vla0RheXMgPSBbXTtcbiAgICAgZm9yKGxldCBpID0gMDsgaSA8IDc7IGkgKyspIHtcbiAgICAgIGlmKGZyZXF1ZW5jeS5zZWxlY3RlZERheS5pbmNsdWRlcyhpICsgMSkpIHtcbiAgICAgICAgd2Vla0RheXMucHVzaCgxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdlZWtEYXlzLnB1c2goMCk7XG4gICAgICB9XG4gICAgIH1cbiAgICAgcmV0dXJuIHdlZWtEYXlzLmpvaW4oJycpO1xuICAgfSBlbHNlIGlmKGZyZXF1ZW5jeT8uc2VsZWN0ZWRNb250aD8ubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IG1vbnRocyA9IFsgXTtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgMTI7IGkgKyspIHtcbiAgICAgIGlmKGZyZXF1ZW5jeT8uc2VsZWN0ZWRNb250aD8uaW5jbHVkZXMoaSkpIHtcbiAgICAgICAgbW9udGhzLnB1c2goMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb250aHMucHVzaCgwKTtcbiAgICAgIH1cbiAgIH1cbiAgIHJldHVybiBtb250aHMuam9pbignJyk7XG4gICB9IGVsc2Uge1xuICAgIHJldHVybiAnJztcbiAgIH1cbiAgfVxuXG4gIGdldE9uZ29pbmcoZnJlcXVlbmN5OiBhbnkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVtaW5kZXJzOiBmcmVxdWVuY3k/LnNlbGVjdGVkVHlwZSxcbiAgICAgIHN0YXJ0T2Y6IGZyZXF1ZW5jeT8uc2VsZWN0ZWRUeXBlID8gIFsnd2VlaycsJ21vbnRoJyAsJ3F1YXJ0ZXInICwnc2VtZXN0ZXInICwneWVhciddW2ZyZXF1ZW5jeT8uc2VsZWN0ZWRPbmdvaW5nVHlwZSAtIDFdIDogJydcbiAgICB9XG4gIH1cbiAgZ2V0UmFuZG9tRnJlcXVlbmN5KGZyZXF1ZW5jeTogYW55KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgdHlwZTogWyd3ZWVrbHknLCAnbW9udGhseScsICdxdWFydGVybHknLCAneWVhcmx5J11bZnJlcXVlbmN5Py5yYW5kb21UeXBlU2VsZWN0ZWRdLFxuICAgICBvY2N1cnJlbmNlOiBmcmVxdWVuY3k/LnJhbmRvbUluc3RhbmNlc1xuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZUZyZXF1ZW5jeVBhdHRlcm4oZnJlcXVlbmN5OiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZyhmcmVxdWVuY3ksICdmcmVxdWVuY3knKTtcbiAgICBsZXQgcGF0dGVybiA9ICcnO1xuICAgIGxldCBzZWxlY3RlZERheSA9IGZyZXF1ZW5jeS5kYXlcbiAgICBzd2l0Y2ggKGZyZXF1ZW5jeS50eXBlKSB7XG5cbiAgICAgIGNhc2UgJ29uZV90aW1lJzpcbiAgICAgICAgbGV0IGRhdGVfdmFsdWUgPSBmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5zdGFydEZyb20/LnNwbGl0KCctJyk7XG5cbiAgICAgICAgcGF0dGVybiA9XG4gICAgICAgICAgJzB+JyArXG4gICAgICAgICAgJycgK1xuICAgICAgICAgIGRhdGVfdmFsdWVbMF0gK1xuICAgICAgICAgICd+JyArXG4gICAgICAgICAgKGRhdGVfdmFsdWVbMV0pICtcbiAgICAgICAgICAnficgK1xuICAgICAgICAgIGRhdGVfdmFsdWVbMl07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGFpbHknOlxuICAgICAgICBwYXR0ZXJuID0gYDF+MH4wfiR7ZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LmV2ZXJ5fWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnd2Vla2x5JzpcbiAgICAgICAgcGF0dGVybiA9IGAyfiR7dGhpcy5nZXREYXkoZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LnJlcGVhdE9uKX1+MH4ke2ZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5ldmVyeX1gO1xuICAgICAgICBicmVhazsgICBcbiAgICAgIGNhc2UgJ21vbnRobHknOlxuICAgICAgICBwYXR0ZXJuID1cbiAgICAgICAgICBgM34ke3NlbGVjdGVkRGF5fX4ke3RoaXMuZ2V0TW9udGgoZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LnJlcGVhdE9uKX1+MGA7XG4gICAgICAgIGJyZWFrO1xuICAgICBcbiAgICAgIGNhc2UgJ3F1YXJ0ZXJseSc6XG4gICAgICAgIHBhdHRlcm4gPSBgN34ke3NlbGVjdGVkRGF5fX4ke3RoaXMuZ2V0TW9udGgoZnJlcXVlbmN5LnJlcGVhdE9wdGlvbnM/LnJlcGVhdE9uKX1+MGA7XG4gICAgICAgIGJyZWFrO1xuICAgICBcbiAgICAgY2FzZSAnc2VtZXN0ZXInOlxuICAgICAgcGF0dGVybiA9IGA5fiR7c2VsZWN0ZWREYXl9fiR7dGhpcy5nZXRNb250aChmcmVxdWVuY3kucmVwZWF0T3B0aW9ucz8ucmVwZWF0T24pfX4wYDtcbiAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAneWVhcmx5JzpcbiAgICAgICAgcGF0dGVybiA9XG4gICAgICAgICAgYDR+JHtzZWxlY3RlZERheX1+JHt0aGlzLmdldE1vbnRoKGZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5yZXBlYXRPbil9fjFgO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29uZ29pbmcnOlxuICAgICAgICBjb25zdCB0eXBlID0gWyd3ZWVrJywgJ21vbnRoJywgJ3F1YXJ0ZXInLCAnc2VtZXN0ZXInLCAneWVhciddO1xuICAgICAgICBjb25zdCBpbmRleCA9IHR5cGUuaW5kZXhPZihmcmVxdWVuY3kub25Hb2luZz8uc3RhcnRPZik7XG4gICAgICAgIHBhdHRlcm4gPSBgMTB+JHtmcmVxdWVuY3kub25Hb2luZz8ucmVtaW5kZXJzfX4ke2luZGV4fX4wYDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyYW5kb20nOiBcbiAgICAgICAgbGV0IHJhbmRvbVR5cGUgPSBbJ3dlZWtseScsICdtb250aGx5JywgJ3F1YXJ0ZXJseScsICd5ZWFybHknXTtcbiAgICAgICAgbGV0IHJhbmRvbUluZGV4ID0gcmFuZG9tVHlwZS5pbmRleE9mKGZyZXF1ZW5jeS5yYW5kb20udHlwZSk7XG4gICAgICAgIHBhdHRlcm4gPSBgOH4ke3JhbmRvbUluZGV4ICsgMX1+JHt0aGlzLmdldE1vbnRoKGZyZXF1ZW5jeS5yZXBlYXRPcHRpb25zPy5yZXBlYXRPbil9fiR7ZnJlcXVlbmN5LnJhbmRvbS5vY2N1cnJlbmNlfWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb25fY29tcGxldGUnOlxuICAgICAgICBwYXR0ZXJuID0gYDZ+MH4wfiR7ZnJlcXVlbmN5Lm9uQ29tcGxldGU/LmR1ZUFmdGVyfWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcGF0dGVybiA9IGA1fiR7ZnJlcXVlbmN5LnJhbmRvbS5vY2N1cnJlbmNlfX4wfjBgO1xuICAgIH1cbiAgICByZXR1cm4gcGF0dGVybjtcbiAgfVxuXG4gIGdldERheShyZXBlYXRPcHRpb25zOiBzdHJpbmcpIHtcbiAgICBjb25zdCBkYXkgPSByZXBlYXRPcHRpb25zLnNwbGl0KCcnKS5tYXAoTnVtYmVyKTtcbiAgICBjb25zdCBkYXlOYW1lID0gW107XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IDc7IGkgKyspIHtcbiAgICAgIGlmKGRheVtpXSA9PT0gMSkge1xuICAgICAgICBkYXlOYW1lLnB1c2goaSArIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF5TmFtZS5qb2luKCcsJyk7XG4gIH1cblxuICBnZXRNb250aChyZXBlYXRPcHRpb25zOiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IG1vbnRoID0gcmVwZWF0T3B0aW9ucy5zcGxpdCgnJykubWFwKE51bWJlcik7XG4gICAgICBjb25zdCBtb250aE5hbWUgPSBbXTtcbiAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCAxMjsgaSArKykge1xuICAgICAgICBpZihtb250aFtpXSA9PT0gMSkge1xuICAgICAgICAgIG1vbnRoTmFtZS5wdXNoKGkgKyAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG1vbnRoTmFtZS5qb2luKCcsJyk7XG4gIH1cbiAgICBcbiAgICBnZXRMaWZlY3ljbGVQYXR0ZXJuIChmcmVxdWVuY3k6IGFueSkge1xuICAgICAgbGV0IHBhdHRlcm4gPSBcIjAwMDAtMDAtMDB+fjBcIjtcbiAgICAgIGlmKCFmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uZW5kQnkgJiYgIWZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5lbmRBZnRlcikge1xuICAgICAgICByZXR1cm4gIHtcbiAgICAgICAgICBzdGFydEZyb206IG5ldyBEYXRlKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5zdGFydEZyb20pLmdldFRpbWUoKSAvIDEwMDAsXG4gICAgICAgICAgIHBhdHRlcm5cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5lbmRCeSkge1xuICAgICAgICByZXR1cm4gIHtcbiAgICAgICAgICBzdGFydEZyb206IG5ldyBEYXRlKGZyZXF1ZW5jeT8ucmVwZWF0T3B0aW9ucz8ubGlmZWN5Y2xlPy5zdGFydEZyb20pLmdldFRpbWUoKSAvIDEwMDAsXG4gICAgICAgICAgIHBhdHRlcm46IHRoaXMuZm9ybWF0RGF0ZVN0cmluZyhmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uZW5kQnkpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZihmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uZW5kQWZ0ZXIpIHtcbiAgICAgICAgcmV0dXJuICB7XG4gICAgICAgICAgc3RhcnRGcm9tOiBuZXcgRGF0ZShmcmVxdWVuY3k/LnJlcGVhdE9wdGlvbnM/LmxpZmVjeWNsZT8uc3RhcnRGcm9tKS5nZXRUaW1lKCkgLyAxMDAwLFxuICAgICAgICAgICBwYXR0ZXJuOiBcIjAwMDAtMDAtMDB+flwiICsgZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LmVuZEFmdGVyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXJ0RnJvbTogbmV3IERhdGUoZnJlcXVlbmN5Py5yZXBlYXRPcHRpb25zPy5saWZlY3ljbGU/LnN0YXJ0RnJvbSkuZ2V0VGltZSgpIC8gMTAwMCxcbiAgICAgICAgcGF0dGVybjogXCIwMDAwLTAwLTAwfn4wXCJcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAqIENvbnZlcnRzIGEgZGF0ZSBzdHJpbmcgaW4gXCJZWVlZLU1NLUREXCIgZm9ybWF0IHRvIFwiREQtTW9udGgtWVlZWX5+MFwiLlxuICogXG4gKiBAcGFyYW0ge3N0cmluZ30gZGF0ZVN0cmluZyAtIFRoZSBpbnB1dCBkYXRlIHN0cmluZyBpbiBcIllZWVktTU0tRERcIiBmb3JtYXQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIFRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgaW4gXCJERC1Nb250aC1ZWVlZfn4wXCIgZm9ybWF0LlxuICogXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogZm9ybWF0RGF0ZVN0cmluZyhcIjIwMjUtMDMtMjdcIik7IC8vIFJldHVybnMgXCIyNy1NYXJjaC0yMDI1fn4wXCJcbiAqIGBgYFxuICovXG4gZm9ybWF0RGF0ZVN0cmluZyhkYXRlU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVN0cmluZyk7XG4gIFxuICBjb25zdCBkYXkgPSBkYXRlLmdldERhdGUoKTtcbiAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgXG4gIGNvbnN0IG1vbnRoTmFtZXMgPSBbXG4gICAgICBcIkphbnVhcnlcIiwgXCJGZWJydWFyeVwiLCBcIk1hcmNoXCIsIFwiQXByaWxcIiwgXCJNYXlcIiwgXCJKdW5lXCIsXG4gICAgICBcIkp1bHlcIiwgXCJBdWd1c3RcIiwgXCJTZXB0ZW1iZXJcIiwgXCJPY3RvYmVyXCIsIFwiTm92ZW1iZXJcIiwgXCJEZWNlbWJlclwiXG4gIF07XG4gIGNvbnN0IG1vbnRoID0gbW9udGhOYW1lc1tkYXRlLmdldE1vbnRoKCldO1xuXG4gIHJldHVybiBgJHtkYXl9LSR7bW9udGh9LSR7eWVhcn1+fjBgO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgbmFtZSBvZiBhIG1vbnRoIGJhc2VkIG9uIGl0cyBudW1lcmljYWwgdmFsdWUuXG4gKiBcbiAqIEBwYXJhbSB7bnVtYmVyfSBtb250aCAtIFRoZSBtb250aCBudW1iZXIgKDEtMTIpIHdoZXJlOlxuICogICAxID0gSmFudWFyeVxuICogICAyID0gRmVicnVhcnlcbiAqICAgLi4uXG4gKiAgIDEyID0gRGVjZW1iZXJcbiAqIFxuICogQHJldHVybnMge3N0cmluZyB8IHVuZGVmaW5lZH0gVGhlIG5hbWUgb2YgdGhlIG1vbnRoIChlLmcuLCBcIkpBTlwiLCBcIkZFQlwiLCBldGMuKSBvciB1bmRlZmluZWQgaWYgdGhlIG1vbnRoIG51bWJlciBpcyBpbnZhbGlkXG4gKiBcbiAqIEBleGFtcGxlXG4gKiBnZXRNb250aE5hbWUoMSkgIC8vIFJldHVybnM6IFwiSmFuXCJcbiAqIGdldE1vbnRoTmFtZSgxMikgLy8gUmV0dXJuczogXCJEZWNcIlxuICogZ2V0TW9udGhOYW1lKDEzKSAvLyBSZXR1cm5zOiB1bmRlZmluZWRcbiAqL1xucHVibGljIGdldE1vbnRoTmFtZShzZWxlY3RlZE1vbnRoOiBudW1iZXIpIHsgIFxuICByZXR1cm4gTU9OVEhfTkFNRVMuZmluZCgobW9udGg6IGFueSkgPT4gbW9udGgudmFsdWUgPT09IHNlbGVjdGVkTW9udGgpPy5tb250aDtcbn1cblxufVxuIl19
|