@hipay/hipay-material-ui 1.0.0-beta.20 → 1.0.0-beta.22
Sign up to get free protection for your applications and to get access to all the features.
- package/HiLoader/HiLoader.js +9 -5
- package/HiSelect/HiSelect.js +47 -12
- package/HiSelect/HiSuggestSelect.js +35 -5
- package/HiSelectableList/HiSelectableListItem.js +30 -37
- package/HiTable/HeaderCell.js +55 -49
- package/HiTable/HiTable.js +4 -14
- package/HiTable/HiTableHead.js +4 -6
- package/HiTopBar/HiTopBar.js +10 -3
- package/es/HiLoader/HiLoader.js +9 -5
- package/es/HiSelect/HiSelect.js +41 -10
- package/es/HiSelect/HiSuggestSelect.js +33 -5
- package/es/HiSelectableList/HiSelectableListItem.js +30 -37
- package/es/HiTable/HeaderCell.js +64 -59
- package/es/HiTable/HiTable.js +4 -14
- package/es/HiTable/HiTableHead.js +4 -6
- package/es/HiTopBar/HiTopBar.js +11 -4
- package/es/utils/hiHelpers.js +3 -3
- package/index.es.js +1 -1
- package/index.js +1 -1
- package/package.json +1 -1
- package/umd/hipay-material-ui.development.js +204 -143
- package/umd/hipay-material-ui.production.min.js +4 -4
- package/utils/hiHelpers.js +3 -3
@@ -13022,7 +13022,7 @@ function formatNumber(number) {
|
|
13022
13022
|
useGrouping: true
|
13023
13023
|
};
|
13024
13024
|
|
13025
|
-
return number.toLocaleString(locale, options);
|
13025
|
+
return number.toLocaleString(locale.replace(/_/g, '-'), options);
|
13026
13026
|
}
|
13027
13027
|
|
13028
13028
|
/**
|
@@ -13078,7 +13078,7 @@ function formatCurrencyAmount(amount) {
|
|
13078
13078
|
currencyDisplay: 'symbol'
|
13079
13079
|
};
|
13080
13080
|
|
13081
|
-
var returnValue = value.toLocaleString(locale, options);
|
13081
|
+
var returnValue = value.toLocaleString(locale.replace(/_/g, '-'), options);
|
13082
13082
|
|
13083
13083
|
// Place unit (k, M) after number (don't move currency symbol !)
|
13084
13084
|
if (unit !== '') {
|
@@ -13109,7 +13109,7 @@ function formatRate(rate) {
|
|
13109
13109
|
style: 'percent'
|
13110
13110
|
};
|
13111
13111
|
|
13112
|
-
return rate.toLocaleString(locale, options);
|
13112
|
+
return rate.toLocaleString(locale.replace(/_/g, '-'), options);
|
13113
13113
|
}
|
13114
13114
|
|
13115
13115
|
/**
|
@@ -13162,7 +13162,7 @@ function getNextItemSelectable(node, direction) {
|
|
13162
13162
|
}
|
13163
13163
|
return node.previousSibling;
|
13164
13164
|
}
|
13165
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy91dGlscy9oaUhlbHBlcnMuanMiXSwibmFtZXMiOlsiY2FtZWxpemUiLCJmb3JtYXROdW1iZXIiLCJmb3JtYXRDdXJyZW5jeUFtb3VudCIsImZvcm1hdFJhdGUiLCJhcnJheVVuaXF1ZSIsImVzY2FwZUhUTUwiLCJnZXROZXh0SXRlbVNlbGVjdGFibGUiLCJzdHJpbmciLCJyZXBsYWNlIiwibSIsInRvVXBwZXJDYXNlIiwibWF0Y2giLCJpbmRleCIsInRvTG93ZXJDYXNlIiwibnVtYmVyIiwic2l6ZSIsImxvY2FsZSIsInByZWNpc2lvbiIsIk1hdGgiLCJyb3VuZCIsIm9wdGlvbnMiLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJ1c2VHcm91cGluZyIsInRvTG9jYWxlU3RyaW5nIiwiYW1vdW50IiwiY3VycmVuY3kiLCJ2YWx1ZSIsInVuaXQiLCJzdHlsZSIsImN1cnJlbmN5RGlzcGxheSIsInJldHVyblZhbHVlIiwicDEiLCJwMiIsInAzIiwiam9pbiIsInJhdGUiLCJhcnJheSIsImEiLCJjb25jYXQiLCJpIiwibGVuZ3RoIiwiaiIsInNwbGljZSIsInVuc2FmZVN0ciIsIm5vZGUiLCJkaXJlY3Rpb24iLCJuZXh0U2libGluZyIsInRhYkluZGV4IiwicHJldmlvdXNTaWJsaW5nIl0sIm1hcHBpbmdzIjoiOzs7OztRQUVnQkEsUSxHQUFBQSxRO1FBa0JBQyxZLEdBQUFBLFk7UUF3Q0FDLG9CLEdBQUFBLG9CO1FBMERBQyxVLEdBQUFBLFU7UUFrQkFDLFcsR0FBQUEsVztRQWtCQUMsVSxHQUFBQSxVO1FBcUJBQyxxQixHQUFBQSxxQjtBQS9LaEI7O0FBRU8sU0FBU04sUUFBVCxDQUFrQk8sTUFBbEIsRUFBMEI7QUFDN0JBLGFBQVNBLE9BQU9DLE9BQVAsQ0FBZSxTQUFmLEVBQTBCLFVBQVNDLENBQVQsRUFBWTtBQUMzQyxlQUFPQSxFQUFFLENBQUYsRUFBS0MsV0FBTCxFQUFQO0FBQ0gsS0FGUSxDQUFUO0FB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aGlIZWxwZXJzLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL21mYXppby9kZXYvcHJvamVjdHMvaGlwYXktbWF0ZXJpYWwtdWkiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvdyB3ZWFrXG5cbmV4cG9ydCBmdW5jdGlvbiBjYW1lbGl6ZShzdHJpbmcpIHtcbiAgICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZSgvKFxcX1xcdykvZywgZnVuY3Rpb24obSkge1xuICAgICAgICByZXR1cm4gbVsxXS50b1VwcGVyQ2FzZSgpO1xuICAgIH0pO1xuICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvKD86Xlxcd3xbQS1aXXxcXGJcXHd8XFxzKykvZywgZnVuY3Rpb24obWF0Y2gsIGluZGV4KSB7XG4gICAgICAgIGlmICgrbWF0Y2ggPT09IDApIHJldHVybiAnJzsgLy8gb3IgaWYgKC9cXHMrLy50ZXN0KG1hdGNoKSkgZm9yIHdoaXRlIHNwYWNlc1xuICAgICAgICByZXR1cm4gaW5kZXggPT0gMCA/IG1hdGNoLnRvTG93ZXJDYXNlKCkgOiBtYXRjaC50b1VwcGVyQ2FzZSgpO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIEZvcm1hdCBudW1iZXIgcmVsYXRpdmUgdG8gcmVxdWlyZWQgc2l6ZSBhbmQgbG9jYWxlXG4gKlxuICogQHBhcmFtIG51bWJlclxuICogQHBhcmFtIHNpemVcbiAqIEBwYXJhbSBsb2NhbGVcbiAqIEBwYXJhbSBwcmVjaXNpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE51bWJlcihudW1iZXIsIHNpemUgPSAnbCcsIGxvY2FsZSA9ICdlbi1FTicsIHByZWNpc2lvbikge1xuICAgIC8vIFJvdW5kIG51bWJlclxuICAgIHN3aXRjaCAoc2l6ZSkge1xuICAgICAgICBjYXNlICdsJzpcbiAgICAgICAgICAgIG51bWJlciA9IE1hdGgucm91bmQobnVtYmVyICogMTAwKSAvIDEwMDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgIG51bWJlciA9IE1hdGgucm91bmQobnVtYmVyKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgIG51bWJlciA9IE1hdGgucm91bmQobnVtYmVyKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFRvIGxvY2FsZVxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogdHlwZW9mIHByZWNpc2lvbiAhPT0gJ3VuZGVmaW5lZCcgPyBwcmVjaXNpb24gOiBzaXplID09PSAnbCcgPyAyIDogMCxcbiAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiB0eXBlb2YgcHJlY2lzaW9uICE9PSAndW5kZWZpbmVkJyA/IHByZWNpc2lvbiA6IHNpemUgPT09ICdsJyA/IDIgOiAwLFxuICAgICAgICB1c2VHcm91cGluZzogdHJ1ZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG51bWJlci50b0xvY2FsZVN0cmluZyhsb2NhbGUsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIEZvcm1hdCBjdXJyZW5jeSBhbW91bnQgcmVsYXRpdmUgdG8gcmVxdWlyZWQgc2l6ZSwgbG9jYWxlIGFuZCBjdXJyZW5jeVxuICpcbiAqIGxhcmdlL2ZyLUZSL0VVUiA6IDEyMzQ1Njc4OSwxMjMgLT4gMTIzIDQ2NSA3ODksMTIzIOKCrFxuICogbGFyZ2UvZW4tRU4vVVNEIDogMTIzNDU2Nzg5LDEyMyAtPiAkIDEyMyw0NjUsNzg5LjEyM1xuICogbGFyZ2UvZW4tRU4vRVVSIDogMTIzNDU2Nzg5LDEyMyAtPiDigqwgMTIzLDQ2NSw3ODkuMTIzXG4gKiBzbWFsbC9lbi1FTi9FVVIgOiAxMjM0NTY3ODksMTIzIC0+IOKCrCAxMjMsNDU2LDc4OVxuICogdGlueS9lbi1FTi9FVVIgIDogMTIzNDU2Nzg5LDEyMyAtPiDigqwgMTIzTVxuICogdGlueS9lbi1FTi9FVVIgIDogIDIzNDU2Nzg5LDEyMyAtPiDigqwgMjMsNDU2a1xuICogdGlueS9lbi1FTi9FVVIgIDogICAgIDU2Nzg5LDEyMyAtPiDigqwgNTYsNzg5XG4gKlxuICogQHBhcmFtIGFtb3VudFxuICogQHBhcmFtIHNpemUgICAgICAtIGwgfCBtIHwgc1xuICogQHBhcmFtIGxvY2FsZVxuICogQHBhcmFtIGN1cnJlbmN5ICAtIElTTyA0MjE3XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRDdXJyZW5jeUFtb3VudChhbW91bnQsIHNpemUgPSAnbCcsIGxvY2FsZSA9ICdlbi1FTicsIGN1cnJlbmN5ID0gJ0VVUicpIHtcbiAgICBsZXQgdmFsdWUgPSBhbW91bnQ7XG4gICAgbGV0IHVuaXQgPSAnJztcbiAgICAvLyBSb3VuZCBudW1iZXJcbiAgICBzd2l0Y2ggKHNpemUpIHtcbiAgICAgICAgY2FzZSAnbCc6XG4gICAgICAgICAgICB2YWx1ZSA9IE1hdGgucm91bmQoYW1vdW50ICogMTAwKSAvIDEwMDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgIHZhbHVlID0gTWF0aC5yb3VuZChhbW91bnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgICAgaWYgKGFtb3VudCA+IDk5OTk5OTk5KSB7XG4gICAgICAgICAgICAgICAgYW1vdW50ID0gYW1vdW50IC8gMTAwMDAwMDtcbiAgICAgICAgICAgICAgICB1bml0ID0gJ00nO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChhbW91bnQgPiA5OTk5OSkge1xuICAgICAgICAgICAgICAgIGFtb3VudCA9IGFtb3VudCAvIDEwMDA7XG4gICAgICAgICAgICAgICAgdW5pdCA9ICdrJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhbHVlID0gTWF0aC5yb3VuZChhbW91bnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gVG8gbG9jYWxlXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBzaXplID09PSAnbCcgPyAyIDogMCxcbiAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBzaXplID09PSAnbCcgPyAyIDogMCxcbiAgICAgICAgdXNlR3JvdXBpbmc6IHRydWUsXG4gICAgICAgIHN0eWxlOiAnY3VycmVuY3knLFxuICAgICAgICBjdXJyZW5jeTogY3VycmVuY3ksXG4gICAgICAgIGN1cnJlbmN5RGlzcGxheTogJ3N5bWJvbCcsXG4gICAgfTtcblxuICAgIGxldCByZXR1cm5WYWx1ZSA9IHZhbHVlLnRvTG9jYWxlU3RyaW5nKGxvY2FsZSwgb3B0aW9ucyk7XG5cbiAgICAvLyBQbGFjZSB1bml0IChrLCBNKSBhZnRlciBudW1iZXIgKGRvbid0IG1vdmUgY3VycmVuY3kgc3ltYm9sICEpXG4gICAgaWYgKHVuaXQgIT09ICcnKSB7XG4gICAgICAgIHJldHVyblZhbHVlID0gcmV0dXJuVmFsdWUucmVwbGFjZSgvKFtcXERdKikoW1xcZFxcLFxcLlxcc10rKShbXFxEXSopLywgZnVuY3Rpb24oXG4gICAgICAgICAgICBtYXRjaCxcbiAgICAgICAgICAgIHAxLFxuICAgICAgICAgICAgcDIsXG4gICAgICAgICAgICBwMyxcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gW3AxLCBwMiwgdW5pdCwgcDNdLmpvaW4oJycpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XG59XG5cbi8qKlxuICogRm9ybWF0IHJhdGUgcmVsYXRpdmUgdG8gcmVxdWlyZWQgc2l6ZSBhbmQgbG9jYWxlXG4gKiBsYXJnZS9lbi1FTiAgOiAxMi4zNFxuICpcbiAqIEBwYXJhbSByYXRlXG4gKiBAcGFyYW0gc2l6ZVxuICogQHBhcmFtIGxvY2FsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0UmF0ZShyYXRlLCBzaXplID0gJ2wnLCBsb2NhbGUgPSAnZW4tRU4nKSB7XG4gICAgLy8gVG8gbG9jYWxlXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBzaXplID09PSAnbCcgPyAyIDogc2l6ZSA9PT0gJ20nID8gMSA6IDAsXG4gICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogc2l6ZSA9PT0gJ2wnID8gMiA6IHNpemUgPT09ICdtJyA/IDEgOiAwLFxuICAgICAgICBzdHlsZTogJ3BlcmNlbnQnLFxuICAgIH07XG5cbiAgICByZXR1cm4gcmF0ZS50b0xvY2FsZVN0cmluZyhsb2NhbGUsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFJlbW92ZSBkdXBsaWNhdGUgaXRlbXMgZnJvbSBhcnJheSB1c2VmdWwgYWZ0ZXIgY29uY2F0IGFycmF5c1xuICpcbiAqIGFycmF5VW5pcXVlKGFycmF5MS5jb25jYXQoYXJyYXkyKSlcbiAqXG4gKiBAcGFyYW0gYXJyYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFycmF5VW5pcXVlKGFycmF5OiBBcnJheTxhbnk+KSB7XG4gICAgbGV0IGEgPSBhcnJheS5jb25jYXQoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgYS5sZW5ndGg7ICsraikge1xuICAgICAgICAgICAgaWYgKGFbaV0gPT09IGFbal0pIGEuc3BsaWNlKGotLSwgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYTtcbn1cblxuLyoqXG4gKiBFY2hhcHBlIGxlcyBjYXJhY3TDqHJlcyBIVE1MIGQndW5lIGNoYcOubmUgZGUgY2F0YWN0w6hyZXNcbiAqXG4gKiBTYXVmIGxhIGJhbGlzZSBzdHJvbmdcbiAqXG4gKiBAcGFyYW0gYXJyYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUhUTUwodW5zYWZlU3RyKSB7XG4gICAgcmV0dXJuIHVuc2FmZVN0clxuICAgICAgICAucmVwbGFjZSgvPGJyXFwvPz4vZywgJ1ticl0nKVxuICAgICAgICAucmVwbGFjZSgvPHN0cm9uZz4vZywgJ1tbJylcbiAgICAgICAgLnJlcGxhY2UoLzxcXC8/c3Ryb25nPi9nLCAnXV0nKVxuICAgICAgICAucmVwbGFjZSgvJi9nLCAnJmFtcDsnKVxuICAgICAgICAucmVwbGFjZSgvPC9nLCAnJmx0OycpXG4gICAgICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7JylcbiAgICAgICAgLnJlcGxhY2UoL1xcXCIvZywgJyZxdW90OycpXG4gICAgICAgIC5yZXBsYWNlKC9cXCcvZywgJyYjMzk7JylcbiAgICAgICAgLnJlcGxhY2UoL1xcW1xcWy9nLCAnPHN0cm9uZz4nKVxuICAgICAgICAucmVwbGFjZSgvXFxdXFxdL2csICc8L3N0cm9uZz4nKVxuICAgICAgICAucmVwbGFjZSgvXFxbYnJcXF0vZywgJzxici8+Jyk7XG59XG5cbi8qKlxuICogUmV0b3VybmUgbCdpdGVtIHNlbGVjdGlvbm5hYmxlIHN1aXZhbnQuXG4gKiBAcGFyYW0gbm9kZVxuICogQHBhcmFtIGRpcmVjdGlvblxuICogQHJldHVybnMgeyp9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXh0SXRlbVNlbGVjdGFibGUobm9kZSwgZGlyZWN0aW9uKSB7XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ2Rvd24nKSB7XG4gICAgICAgIGlmIChub2RlLm5leHRTaWJsaW5nID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmIChub2RlLm5leHRTaWJsaW5nLnRhYkluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmV4dEl0ZW1TZWxlY3RhYmxlKG5vZGUubmV4dFNpYmxpbmcsIGRpcmVjdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5vZGUubmV4dFNpYmxpbmc7XG4gICAgfSBlbHNlIGlmIChub2RlLnByZXZpb3VzU2libGluZyA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2UgaWYgKG5vZGUucHJldmlvdXNTaWJsaW5nLnRhYkluZGV4ID09PSAtMSkge1xuICAgICAgICByZXR1cm4gZ2V0TmV4dEl0ZW1TZWxlY3RhYmxlKG5vZGUucHJldmlvdXNTaWJsaW5nLCBkaXJlY3Rpb24pO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZS5wcmV2aW91c1NpYmxpbmc7XG59XG4iXX0=
|
13165
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy91dGlscy9oaUhlbHBlcnMuanMiXSwibmFtZXMiOlsiY2FtZWxpemUiLCJmb3JtYXROdW1iZXIiLCJmb3JtYXRDdXJyZW5jeUFtb3VudCIsImZvcm1hdFJhdGUiLCJhcnJheVVuaXF1ZSIsImVzY2FwZUhUTUwiLCJnZXROZXh0SXRlbVNlbGVjdGFibGUiLCJzdHJpbmciLCJyZXBsYWNlIiwibSIsInRvVXBwZXJDYXNlIiwibWF0Y2giLCJpbmRleCIsInRvTG93ZXJDYXNlIiwibnVtYmVyIiwic2l6ZSIsImxvY2FsZSIsInByZWNpc2lvbiIsIk1hdGgiLCJyb3VuZCIsIm9wdGlvbnMiLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJ1c2VHcm91cGluZyIsInRvTG9jYWxlU3RyaW5nIiwiYW1vdW50IiwiY3VycmVuY3kiLCJ2YWx1ZSIsInVuaXQiLCJzdHlsZSIsImN1cnJlbmN5RGlzcGxheSIsInJldHVyblZhbHVlIiwicDEiLCJwMiIsInAzIiwiam9pbiIsInJhdGUiLCJhcnJheSIsImEiLCJjb25jYXQiLCJpIiwibGVuZ3RoIiwiaiIsInNwbGljZSIsInVuc2FmZVN0ciIsIm5vZGUiLCJkaXJlY3Rpb24iLCJuZXh0U2libGluZyIsInRhYkluZGV4IiwicHJldmlvdXNTaWJsaW5nIl0sIm1hcHBpbmdzIjoiOzs7OztRQUVnQkEsUSxHQUFBQSxRO1FBa0JBQyxZLEdBQUFBLFk7UUF3Q0FDLG9CLEdBQUFBLG9CO1FBMERBQyxVLEdBQUFBLFU7UUFrQkFDLFcsR0FBQUEsVztRQWtCQUMsVSxHQUFBQSxVO1FBcUJBQyxxQixHQUFBQSxxQjtBQS9LaEI7O0FBRU8sU0FBU04sUUFBVCxDQUFrQk8sTUFBbEIsRUFBMEI7QUFDN0JBLGFBQVNBLE9BQU9DLE9BQVAsQ0FBZSxTQUFmLEVBQTBCLFVBQVNDLENBQVQsRUFBWTtBQUMzQyxlQUFPQSxFQUFFLENBQUYsRUFBS0MsV0FBTCxFQUFQO0FBQ0gsS0FGUSxDQUFUO0FBR0EsV0FBT0gsT0FBT0MsT0FBUCxDQUFlLHlCQUFmLEVBQTBDLFVBQVNHLEtBQVQsRUFBZ0JDLEtBQWhCLEVBQXVCO0FBQ3BFLFlBQUksQ0FBQ0QsS0FBRCxLQUFXLENBQWYsRUFBa0IsT0FBTyxFQUFQLENBRGtELENBQ3ZDO0FBQzdCLGVBQU9DLFNBQVMsQ0FBVCxHQUFhRCxNQUFNRSxXQUFOLEVBQWIsR0FBbUNGLE1BQU1ELFdBQU4sRUFBMUM7QUFDSCxLQUhNLENBQVA7QUFJSDs7QUFFRDs7Ozs7Ozs7QUFRTyxTQUFTVCxZQUFULENBQXNCYSxNQUF0QixFQUF1RTtBQUFBLFFBQXpDQyxJQUF5Qyx1RUFBbEMsR0FBa0M7QUFBQSxRQUE3QkMsTUFBNkIsdUVBQXBCLE9BQW9CO0FBQUEsUUFBWEMsU0FBVzs7QUFDMUU7QUFDQSxZQUFRRixJQUFSO0FBQ0ksYUFBSyxHQUFMO0FBQ0lELHFCQUFTSSxLQUFLQyxLQUFMLENBQVdMLFNBQVMsR0FBcEIsSUFBMkIsR0FBcEM7QUFDQTtBQUNKLGFBQUssR0FBTDtBQUNJQSxxQkFBU0ksS0FBS0MsS0FBTCxDQUFXTCxNQUFYLENBQVQ7QUFDQTtBQUNKLGFBQUssR0FBTDtBQUNJQSxxQkFBU0ksS0FBS0MsS0FBTCxDQUFXTCxNQUFYLENBQVQ7QUFDQTtBQVRSOztBQVlBO0FBQ0EsUUFBTU0sVUFBVTtBQUNaQywrQkFBdUIsT0FBT0osU0FBUCxLQUFxQixXQUFyQixHQUFtQ0EsU0FBbkMsR0FBK0NGLFNBQVMsR0FBVCxHQUFlLENBQWYsR0FBbUIsQ0FEN0U7QUFFWk8sK0JBQXVCLE9BQU9MLFNBQVAsS0FBcUIsV0FBckIsR0FBbUNBLFNBQW5DLEdBQStDRixTQUFTLEdBQVQsR0FBZSxDQUFmLEdBQW1CLENBRjdFO0FBR1pRLHFCQUFhO0FBSEQsS0FBaEI7O0FBTUEsV0FBT1QsT0FBT1UsY0FBUCxDQUFzQlIsT0FBT1IsT0FBUCxDQUFlLElBQWYsRUFBcUIsR0FBckIsQ0FBdEIsRUFBaURZLE9BQWpELENBQVA7QUFDSDs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7OztBQWdCTyxTQUFTbEIsb0JBQVQsQ0FBOEJ1QixNQUE5QixFQUFzRjtBQUFBLFFBQWhEVixJQUFnRCx1RUFBekMsR0FBeUM7QUFBQSxRQUFwQ0MsTUFBb0MsdUVBQTNCLE9BQTJCO0FBQUEsUUFBbEJVLFFBQWtCLHVFQUFQLEtBQU87O0FBQ3pGLFFBQUlDLFFBQVFGLE1BQVo7QUFDQSxRQUFJRyxPQUFPLEVBQVg7QUFDQTtBQUNBLFlBQVFiLElBQVI7QUFDSSxhQUFLLEdBQUw7QUFDSVksb0JBQVFULEtBQUtDLEtBQUwsQ0FBV00sU0FBUyxHQUFwQixJQUEyQixHQUFuQztBQUNBO0FBQ0osYUFBSyxHQUFMO0FBQ0lFLG9CQUFRVCxLQUFLQyxLQUFMLENBQVdNLE1BQVgsQ0FBUjtBQUNBO0FBQ0osYUFBSyxHQUFMO0FBQ0ksZ0JBQUlBLFNBQVMsUUFBYixFQUF1QjtBQUNuQkEseUJBQVNBLFNBQVMsT0FBbEI7QUFDQUcsdUJBQU8sR0FBUDtBQUNILGFBSEQsTUFHTyxJQUFJSCxTQUFTLEtBQWIsRUFBb0I7QUFDdkJBLHlCQUFTQSxTQUFTLElBQWxCO0FBQ0FHLHVCQUFPLEdBQVA7QUFDSDtBQUNERCxvQkFBUVQsS0FBS0MsS0FBTCxDQUFXTSxNQUFYLENBQVI7QUFDQTtBQWhCUjs7QUFtQkE7QUFDQSxRQUFNTCxVQUFVO0FBQ1pDLCtCQUF1Qk4sU0FBUyxHQUFULEdBQWUsQ0FBZixHQUFtQixDQUQ5QjtBQUVaTywrQkFBdUJQLFNBQVMsR0FBVCxHQUFlLENBQWYsR0FBbUIsQ0FGOUI7QUFHWlEscUJBQWEsSUFIRDtBQUlaTSxlQUFPLFVBSks7QUFLWkgsa0JBQVVBLFFBTEU7QUFNWkkseUJBQWlCO0FBTkwsS0FBaEI7O0FBU0EsUUFBSUMsY0FBY0osTUFBTUgsY0FBTixDQUFxQlIsT0FBT1IsT0FBUCxDQUFlLElBQWYsRUFBcUIsR0FBckIsQ0FBckIsRUFBZ0RZLE9BQWhELENBQWxCOztBQUVBO0FBQ0EsUUFBSVEsU0FBUyxFQUFiLEVBQWlCO0FBQ2JHLHNCQUFjQSxZQUFZdkIsT0FBWixDQUFvQiw2QkFBcEIsRUFBbUQsVUFDN0RHLEtBRDZELEVBRTdEcUIsRUFGNkQsRUFHN0RDLEVBSDZELEVBSTdEQyxFQUo2RCxFQUsvRDtBQUNFLG1CQUFPLENBQUNGLEVBQUQsRUFBS0MsRUFBTCxFQUFTTCxJQUFULEVBQWVNLEVBQWYsRUFBbUJDLElBQW5CLENBQXdCLEVBQXhCLENBQVA7QUFDSCxTQVBhLENBQWQ7QUFRSDs7QUFFRCxXQUFPSixXQUFQO0FBQ0g7O0FBRUQ7Ozs7Ozs7O0FBUU8sU0FBUzVCLFVBQVQsQ0FBb0JpQyxJQUFwQixFQUF3RDtBQUFBLFFBQTlCckIsSUFBOEIsdUVBQXZCLEdBQXVCO0FBQUEsUUFBbEJDLE1BQWtCLHVFQUFULE9BQVM7O0FBQzNEO0FBQ0EsUUFBTUksVUFBVTtBQUNaQywrQkFBdUJOLFNBQVMsR0FBVCxHQUFlLENBQWYsR0FBbUJBLFNBQVMsR0FBVCxHQUFlLENBQWYsR0FBbUIsQ0FEakQ7QUFFWk8sK0JBQXVCUCxTQUFTLEdBQVQsR0FBZSxDQUFmLEdBQW1CQSxTQUFTLEdBQVQsR0FBZSxDQUFmLEdBQW1CLENBRmpEO0FBR1pjLGVBQU87QUFISyxLQUFoQjs7QUFNQSxXQUFPTyxLQUFLWixjQUFMLENBQW9CUixPQUFPUixPQUFQLENBQWUsSUFBZixFQUFxQixHQUFyQixDQUFwQixFQUErQ1ksT0FBL0MsQ0FBUDtBQUNIOztBQUVEOzs7Ozs7O0FBT08sU0FBU2hCLFdBQVQsQ0FBcUJpQyxLQUFyQixFQUF3QztBQUMzQyxRQUFJQyxJQUFJRCxNQUFNRSxNQUFOLEVBQVI7QUFDQSxTQUFLLElBQUlDLElBQUksQ0FBYixFQUFnQkEsSUFBSUYsRUFBRUcsTUFBdEIsRUFBOEIsRUFBRUQsQ0FBaEMsRUFBbUM7QUFDL0IsYUFBSyxJQUFJRSxJQUFJRixJQUFJLENBQWpCLEVBQW9CRSxJQUFJSixFQUFFRyxNQUExQixFQUFrQyxFQUFFQyxDQUFwQyxFQUF1QztBQUNuQyxnQkFBSUosRUFBRUUsQ0FBRixNQUFTRixFQUFFSSxDQUFGLENBQWIsRUFBbUJKLEVBQUVLLE1BQUYsQ0FBU0QsR0FBVCxFQUFjLENBQWQ7QUFDdEI7QUFDSjs7QUFFRCxXQUFPSixDQUFQO0FBQ0g7O0FBRUQ7Ozs7Ozs7QUFPTyxTQUFTakMsVUFBVCxDQUFvQnVDLFNBQXBCLEVBQStCO0FBQ2xDLFdBQU9BLFVBQ0ZwQyxPQURFLENBQ00sVUFETixFQUNrQixNQURsQixFQUVGQSxPQUZFLENBRU0sV0FGTixFQUVtQixJQUZuQixFQUdGQSxPQUhFLENBR00sY0FITixFQUdzQixJQUh0QixFQUlGQSxPQUpFLENBSU0sSUFKTixFQUlZLE9BSlosRUFLRkEsT0FMRSxDQUtNLElBTE4sRUFLWSxNQUxaLEVBTUZBLE9BTkUsQ0FNTSxJQU5OLEVBTVksTUFOWixFQU9GQSxPQVBFLENBT00sS0FQTixFQU9hLFFBUGIsRUFRRkEsT0FSRSxDQVFNLEtBUk4sRUFRYSxPQVJiLEVBU0ZBLE9BVEUsQ0FTTSxPQVROLEVBU2UsVUFUZixFQVVGQSxPQVZFLENBVU0sT0FWTixFQVVlLFdBVmYsRUFXRkEsT0FYRSxDQVdNLFNBWE4sRUFXaUIsT0FYakIsQ0FBUDtBQVlIOztBQUVEOzs7Ozs7QUFNTyxTQUFTRixxQkFBVCxDQUErQnVDLElBQS9CLEVBQXFDQyxTQUFyQyxFQUFnRDtBQUNuRCxRQUFJQSxjQUFjLE1BQWxCLEVBQTBCO0FBQ3RCLFlBQUlELEtBQUtFLFdBQUwsS0FBcUIsSUFBekIsRUFBK0I7QUFDM0IsbUJBQU8sSUFBUDtBQUNILFNBRkQsTUFFTyxJQUFJRixLQUFLRSxXQUFMLENBQWlCQyxRQUFqQixLQUE4QixDQUFDLENBQW5DLEVBQXNDO0FBQ3pDLG1CQUFPLEtBQUsxQyxxQkFBTCxDQUEyQnVDLEtBQUtFLFdBQWhDLEVBQTZDRCxTQUE3QyxDQUFQO0FBQ0g7QUFDRCxlQUFPRCxLQUFLRSxXQUFaO0FBQ0gsS0FQRCxNQU9PLElBQUlGLEtBQUtJLGVBQUwsS0FBeUIsSUFBN0IsRUFBbUM7QUFDdEMsZUFBTyxJQUFQO0FBQ0gsS0FGTSxNQUVBLElBQUlKLEtBQUtJLGVBQUwsQ0FBcUJELFFBQXJCLEtBQWtDLENBQUMsQ0FBdkMsRUFBMEM7QUFDN0MsZUFBTzFDLHNCQUFzQnVDLEtBQUtJLGVBQTNCLEVBQTRDSCxTQUE1QyxDQUFQO0FBQ0g7QUFDRCxXQUFPRCxLQUFLSSxlQUFaO0FBQ0giLCJmaWxlIjoiaGlIZWxwZXJzLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL21mYXppby9kZXYvcHJvamVjdHMvaGlwYXktbWF0ZXJpYWwtdWkiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvdyB3ZWFrXG5cbmV4cG9ydCBmdW5jdGlvbiBjYW1lbGl6ZShzdHJpbmcpIHtcbiAgICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZSgvKFxcX1xcdykvZywgZnVuY3Rpb24obSkge1xuICAgICAgICByZXR1cm4gbVsxXS50b1VwcGVyQ2FzZSgpO1xuICAgIH0pO1xuICAgIHJldHVybiBzdHJpbmcucmVwbGFjZSgvKD86Xlxcd3xbQS1aXXxcXGJcXHd8XFxzKykvZywgZnVuY3Rpb24obWF0Y2gsIGluZGV4KSB7XG4gICAgICAgIGlmICgrbWF0Y2ggPT09IDApIHJldHVybiAnJzsgLy8gb3IgaWYgKC9cXHMrLy50ZXN0KG1hdGNoKSkgZm9yIHdoaXRlIHNwYWNlc1xuICAgICAgICByZXR1cm4gaW5kZXggPT0gMCA/IG1hdGNoLnRvTG93ZXJDYXNlKCkgOiBtYXRjaC50b1VwcGVyQ2FzZSgpO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIEZvcm1hdCBudW1iZXIgcmVsYXRpdmUgdG8gcmVxdWlyZWQgc2l6ZSBhbmQgbG9jYWxlXG4gKlxuICogQHBhcmFtIG51bWJlclxuICogQHBhcmFtIHNpemVcbiAqIEBwYXJhbSBsb2NhbGVcbiAqIEBwYXJhbSBwcmVjaXNpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE51bWJlcihudW1iZXIsIHNpemUgPSAnbCcsIGxvY2FsZSA9ICdlbi1FTicsIHByZWNpc2lvbikge1xuICAgIC8vIFJvdW5kIG51bWJlclxuICAgIHN3aXRjaCAoc2l6ZSkge1xuICAgICAgICBjYXNlICdsJzpcbiAgICAgICAgICAgIG51bWJlciA9IE1hdGgucm91bmQobnVtYmVyICogMTAwKSAvIDEwMDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgIG51bWJlciA9IE1hdGgucm91bmQobnVtYmVyKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgIG51bWJlciA9IE1hdGgucm91bmQobnVtYmVyKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFRvIGxvY2FsZVxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogdHlwZW9mIHByZWNpc2lvbiAhPT0gJ3VuZGVmaW5lZCcgPyBwcmVjaXNpb24gOiBzaXplID09PSAnbCcgPyAyIDogMCxcbiAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiB0eXBlb2YgcHJlY2lzaW9uICE9PSAndW5kZWZpbmVkJyA/IHByZWNpc2lvbiA6IHNpemUgPT09ICdsJyA/IDIgOiAwLFxuICAgICAgICB1c2VHcm91cGluZzogdHJ1ZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG51bWJlci50b0xvY2FsZVN0cmluZyhsb2NhbGUucmVwbGFjZSgvXy9nLCAnLScpLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBGb3JtYXQgY3VycmVuY3kgYW1vdW50IHJlbGF0aXZlIHRvIHJlcXVpcmVkIHNpemUsIGxvY2FsZSBhbmQgY3VycmVuY3lcbiAqXG4gKiBsYXJnZS9mci1GUi9FVVIgOiAxMjM0NTY3ODksMTIzIC0+IDEyMyA0NjUgNzg5LDEyMyDigqxcbiAqIGxhcmdlL2VuLUVOL1VTRCA6IDEyMzQ1Njc4OSwxMjMgLT4gJCAxMjMsNDY1LDc4OS4xMjNcbiAqIGxhcmdlL2VuLUVOL0VVUiA6IDEyMzQ1Njc4OSwxMjMgLT4g4oKsIDEyMyw0NjUsNzg5LjEyM1xuICogc21hbGwvZW4tRU4vRVVSIDogMTIzNDU2Nzg5LDEyMyAtPiDigqwgMTIzLDQ1Niw3ODlcbiAqIHRpbnkvZW4tRU4vRVVSICA6IDEyMzQ1Njc4OSwxMjMgLT4g4oKsIDEyM01cbiAqIHRpbnkvZW4tRU4vRVVSICA6ICAyMzQ1Njc4OSwxMjMgLT4g4oKsIDIzLDQ1NmtcbiAqIHRpbnkvZW4tRU4vRVVSICA6ICAgICA1Njc4OSwxMjMgLT4g4oKsIDU2LDc4OVxuICpcbiAqIEBwYXJhbSBhbW91bnRcbiAqIEBwYXJhbSBzaXplICAgICAgLSBsIHwgbSB8IHNcbiAqIEBwYXJhbSBsb2NhbGVcbiAqIEBwYXJhbSBjdXJyZW5jeSAgLSBJU08gNDIxN1xuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0Q3VycmVuY3lBbW91bnQoYW1vdW50LCBzaXplID0gJ2wnLCBsb2NhbGUgPSAnZW4tRU4nLCBjdXJyZW5jeSA9ICdFVVInKSB7XG4gICAgbGV0IHZhbHVlID0gYW1vdW50O1xuICAgIGxldCB1bml0ID0gJyc7XG4gICAgLy8gUm91bmQgbnVtYmVyXG4gICAgc3dpdGNoIChzaXplKSB7XG4gICAgICAgIGNhc2UgJ2wnOlxuICAgICAgICAgICAgdmFsdWUgPSBNYXRoLnJvdW5kKGFtb3VudCAqIDEwMCkgLyAxMDA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICB2YWx1ZSA9IE1hdGgucm91bmQoYW1vdW50KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICAgIGlmIChhbW91bnQgPiA5OTk5OTk5OSkge1xuICAgICAgICAgICAgICAgIGFtb3VudCA9IGFtb3VudCAvIDEwMDAwMDA7XG4gICAgICAgICAgICAgICAgdW5pdCA9ICdNJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYW1vdW50ID4gOTk5OTkpIHtcbiAgICAgICAgICAgICAgICBhbW91bnQgPSBhbW91bnQgLyAxMDAwO1xuICAgICAgICAgICAgICAgIHVuaXQgPSAnayc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YWx1ZSA9IE1hdGgucm91bmQoYW1vdW50KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFRvIGxvY2FsZVxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogc2l6ZSA9PT0gJ2wnID8gMiA6IDAsXG4gICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogc2l6ZSA9PT0gJ2wnID8gMiA6IDAsXG4gICAgICAgIHVzZUdyb3VwaW5nOiB0cnVlLFxuICAgICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcbiAgICAgICAgY3VycmVuY3k6IGN1cnJlbmN5LFxuICAgICAgICBjdXJyZW5jeURpc3BsYXk6ICdzeW1ib2wnLFxuICAgIH07XG5cbiAgICBsZXQgcmV0dXJuVmFsdWUgPSB2YWx1ZS50b0xvY2FsZVN0cmluZyhsb2NhbGUucmVwbGFjZSgvXy9nLCAnLScpLCBvcHRpb25zKTtcblxuICAgIC8vIFBsYWNlIHVuaXQgKGssIE0pIGFmdGVyIG51bWJlciAoZG9uJ3QgbW92ZSBjdXJyZW5jeSBzeW1ib2wgISlcbiAgICBpZiAodW5pdCAhPT0gJycpIHtcbiAgICAgICAgcmV0dXJuVmFsdWUgPSByZXR1cm5WYWx1ZS5yZXBsYWNlKC8oW1xcRF0qKShbXFxkXFwsXFwuXFxzXSspKFtcXERdKikvLCBmdW5jdGlvbihcbiAgICAgICAgICAgIG1hdGNoLFxuICAgICAgICAgICAgcDEsXG4gICAgICAgICAgICBwMixcbiAgICAgICAgICAgIHAzLFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBbcDEsIHAyLCB1bml0LCBwM10uam9pbignJyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcbn1cblxuLyoqXG4gKiBGb3JtYXQgcmF0ZSByZWxhdGl2ZSB0byByZXF1aXJlZCBzaXplIGFuZCBsb2NhbGVcbiAqIGxhcmdlL2VuLUVOICA6IDEyLjM0XG4gKlxuICogQHBhcmFtIHJhdGVcbiAqIEBwYXJhbSBzaXplXG4gKiBAcGFyYW0gbG9jYWxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRSYXRlKHJhdGUsIHNpemUgPSAnbCcsIGxvY2FsZSA9ICdlbi1FTicpIHtcbiAgICAvLyBUbyBsb2NhbGVcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IHNpemUgPT09ICdsJyA/IDIgOiBzaXplID09PSAnbScgPyAxIDogMCxcbiAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBzaXplID09PSAnbCcgPyAyIDogc2l6ZSA9PT0gJ20nID8gMSA6IDAsXG4gICAgICAgIHN0eWxlOiAncGVyY2VudCcsXG4gICAgfTtcblxuICAgIHJldHVybiByYXRlLnRvTG9jYWxlU3RyaW5nKGxvY2FsZS5yZXBsYWNlKC9fL2csICctJyksIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFJlbW92ZSBkdXBsaWNhdGUgaXRlbXMgZnJvbSBhcnJheSB1c2VmdWwgYWZ0ZXIgY29uY2F0IGFycmF5c1xuICpcbiAqIGFycmF5VW5pcXVlKGFycmF5MS5jb25jYXQoYXJyYXkyKSlcbiAqXG4gKiBAcGFyYW0gYXJyYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFycmF5VW5pcXVlKGFycmF5OiBBcnJheTxhbnk+KSB7XG4gICAgbGV0IGEgPSBhcnJheS5jb25jYXQoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgYS5sZW5ndGg7ICsraikge1xuICAgICAgICAgICAgaWYgKGFbaV0gPT09IGFbal0pIGEuc3BsaWNlKGotLSwgMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYTtcbn1cblxuLyoqXG4gKiBFY2hhcHBlIGxlcyBjYXJhY3TDqHJlcyBIVE1MIGQndW5lIGNoYcOubmUgZGUgY2F0YWN0w6hyZXNcbiAqXG4gKiBTYXVmIGxhIGJhbGlzZSBzdHJvbmdcbiAqXG4gKiBAcGFyYW0gYXJyYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUhUTUwodW5zYWZlU3RyKSB7XG4gICAgcmV0dXJuIHVuc2FmZVN0clxuICAgICAgICAucmVwbGFjZSgvPGJyXFwvPz4vZywgJ1ticl0nKVxuICAgICAgICAucmVwbGFjZSgvPHN0cm9uZz4vZywgJ1tbJylcbiAgICAgICAgLnJlcGxhY2UoLzxcXC8/c3Ryb25nPi9nLCAnXV0nKVxuICAgICAgICAucmVwbGFjZSgvJi9nLCAnJmFtcDsnKVxuICAgICAgICAucmVwbGFjZSgvPC9nLCAnJmx0OycpXG4gICAgICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7JylcbiAgICAgICAgLnJlcGxhY2UoL1xcXCIvZywgJyZxdW90OycpXG4gICAgICAgIC5yZXBsYWNlKC9cXCcvZywgJyYjMzk7JylcbiAgICAgICAgLnJlcGxhY2UoL1xcW1xcWy9nLCAnPHN0cm9uZz4nKVxuICAgICAgICAucmVwbGFjZSgvXFxdXFxdL2csICc8L3N0cm9uZz4nKVxuICAgICAgICAucmVwbGFjZSgvXFxbYnJcXF0vZywgJzxici8+Jyk7XG59XG5cbi8qKlxuICogUmV0b3VybmUgbCdpdGVtIHNlbGVjdGlvbm5hYmxlIHN1aXZhbnQuXG4gKiBAcGFyYW0gbm9kZVxuICogQHBhcmFtIGRpcmVjdGlvblxuICogQHJldHVybnMgeyp9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXh0SXRlbVNlbGVjdGFibGUobm9kZSwgZGlyZWN0aW9uKSB7XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ2Rvd24nKSB7XG4gICAgICAgIGlmIChub2RlLm5leHRTaWJsaW5nID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmIChub2RlLm5leHRTaWJsaW5nLnRhYkluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmV4dEl0ZW1TZWxlY3RhYmxlKG5vZGUubmV4dFNpYmxpbmcsIGRpcmVjdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5vZGUubmV4dFNpYmxpbmc7XG4gICAgfSBlbHNlIGlmIChub2RlLnByZXZpb3VzU2libGluZyA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2UgaWYgKG5vZGUucHJldmlvdXNTaWJsaW5nLnRhYkluZGV4ID09PSAtMSkge1xuICAgICAgICByZXR1cm4gZ2V0TmV4dEl0ZW1TZWxlY3RhYmxlKG5vZGUucHJldmlvdXNTaWJsaW5nLCBkaXJlY3Rpb24pO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZS5wcmV2aW91c1NpYmxpbmc7XG59XG4iXX0=
|
13166
13166
|
|
13167
13167
|
/***/ }),
|
13168
13168
|
/* 44 */
|
@@ -30920,7 +30920,7 @@ var HiTable = function (_React$Component) {
|
|
30920
30920
|
height: headerHeight,
|
30921
30921
|
sticky: sticky,
|
30922
30922
|
view: view,
|
30923
|
-
translations: translations,
|
30923
|
+
translations: translations.tableHead,
|
30924
30924
|
lookupColumns: lookupColumns,
|
30925
30925
|
fixedColumnWidth: fixedColumnWidth
|
30926
30926
|
}),
|
@@ -30943,7 +30943,7 @@ var HiTable = function (_React$Component) {
|
|
30943
30943
|
onRowClick: onRowClick,
|
30944
30944
|
onScroll: this.handleVerticalScroll,
|
30945
30945
|
addNewRowRefs: this.addNewRowRefs,
|
30946
|
-
translations: translations,
|
30946
|
+
translations: translations.tableBody,
|
30947
30947
|
groupBy: groupBy,
|
30948
30948
|
onClickNext: this.handleNextStickyRow,
|
30949
30949
|
groupByIds: groupByIds,
|
@@ -30959,7 +30959,7 @@ var HiTable = function (_React$Component) {
|
|
30959
30959
|
requestNextDatas: requestNextDatas,
|
30960
30960
|
maxAutoRequest: 3,
|
30961
30961
|
isScrollToBottom: isScrollToBottom,
|
30962
|
-
translations: translations
|
30962
|
+
translations: translations.tableFooterScroll
|
30963
30963
|
}),
|
30964
30964
|
!infiniteScroll && footerContent && _react2.default.createElement(
|
30965
30965
|
_HiTableFooter2.default,
|
@@ -31206,17 +31206,7 @@ HiTable.defaultProps = {
|
|
31206
31206
|
height: 450,
|
31207
31207
|
sticky: true,
|
31208
31208
|
translations: {
|
31209
|
-
|
31210
|
-
back_to_top: 'Back to top',
|
31211
|
-
get_the_n_new_items: 'See %s new items',
|
31212
|
-
choose_and_organize_columns: 'Choose & organize columns',
|
31213
|
-
search: 'Search',
|
31214
|
-
time: 'Time',
|
31215
|
-
stickyRow: {
|
31216
|
-
button: {
|
31217
|
-
next: 'Next day'
|
31218
|
-
}
|
31219
|
-
}
|
31209
|
+
back_to_top: 'Back to top'
|
31220
31210
|
},
|
31221
31211
|
view: 'l',
|
31222
31212
|
lookupColumns: [],
|
@@ -31270,7 +31260,7 @@ var _initialiseProps = function _initialiseProps() {
|
|
31270
31260
|
};
|
31271
31261
|
|
31272
31262
|
exports.default = (0, _styles.withStyles)(styles, { withTheme: true, name: 'HmuiHiTable' })(HiTable);
|
31273
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9IaVRhYmxlL0hpVGFibGUuanMiXSwibmFtZXMiOlsiY3N0Iiwic3R5bGVzIiwicm9vdCIsInBvc2l0aW9uIiwiYmFja2dyb3VuZENvbG9yIiwidGhlbWUiLCJwYWxldHRlIiwiYmFja2dyb3VuZDMiLCJ0YWJsZVdyYXBwZXIiLCJvdmVyZmxvd1giLCJvdmVyZmxvd1kiLCJmaWx0ZXIiLCJ0b3AiLCJsZWZ0IiwiY3Vyc29yIiwidGFibGUiLCJ3aWR0aCIsIm92ZXJmbG93IiwiYm9yZGVyQ29sbGFwc2UiLCJ6SW5kZXgiLCJiYWNrVG9Ub3BCdXR0b25Db250YWluZXIiLCJ0ZXh0QWxpZ24iLCJoZWlnaHQiLCJiYWNrVG9Ub3BCdXR0b24iLCJiYWNrVG9Ub3BCdXR0b25BcnJvdyIsIm1hcmdpbiIsIk1BTkRBVE9SWV9DT0xVTU5fRVJST1JfTUVTU0FHRSIsIlNPUlRFRF9DT0xVTU5fRVJST1JfTUVTU0FHRSIsIkhpVGFibGUiLCJwcm9wcyIsInN0YXRlIiwiZGF0ZVVwZGF0ZSIsIkRhdGUiLCJub3ciLCJpc1Njcm9sbFRvQm90dG9tIiwiZ3JvdXBCeUlkcyIsImdyb3VwQnkiLCJkYXRhU291cmNlIiwibWFwIiwidmFsdWUiLCJyb3ciLCJkYXRhcyIsImRhdGUiLCJpc0Zpbml0ZSIsInN1YnN0ciIsImhhc093blByb3BlcnR5IiwicHVzaCIsIm9wZW5PcmRlckNvbHVtbnNNZW51IiwiYmluZCIsImNsb3NlT3JkZXJDb2x1bW5zTWVudSIsInRvZ2dsZUl0ZW0iLCJ0b2dnbGVBbGwiLCJzZWxlY3RBbGwiLCJkZXNlbGVjdEFsbCIsImhhbmRsZUhvcml6b250YWxTY3JvbGwiLCJoYW5kbGVWZXJ0aWNhbFNjcm9sbCIsInBsYWNlSG9yaXpvbnRhbEZsb2F0aW5nRWxlbWVudCIsInNjcm9sbFRvVG9wIiwiaGFuZGxlUmVxdWVzdExpdmVEYXRhcyIsImhhbmRsZU5leHRTdGlja3lSb3ciLCJoYW5kbGVTdGlja3lSb3dQb3NpdGlvbnMiLCJ3cmFwcGVyU2Nyb2xsT2Zmc2V0Iiwid3JhcHBlckRpdiIsInNjcm9sbFdpZHRoIiwib2Zmc2V0V2lkdGgiLCJ0SGVhZCIsInF1ZXJ5U2VsZWN0b3IiLCJ0SGVhZExlZnRQYWRkaW5nIiwidEhlYWRSaWdodFBhZGRpbmciLCJ0SGVhZEZpcnN0IiwidEJvZHkiLCJ0Rm9vdCIsInRGb290Q2VudGVyZWREaXYiLCJ1cGRhdGVGbG9hdGluZ0JvZHlFbGVtZW50UmVmcyIsInN0eWxlIiwiTWF0aCIsInJvdW5kIiwiYm90dG9tIiwidXBkYXRlU3RpY2t5Um93c1Bvc2l0aW9uIiwicHJldlByb3BzIiwicHJldlN0YXRlIiwicHJldkNvbnRleHQiLCJvcmRlcmVkQ29sdW1ucyIsImNvbElkIiwidEJvZHlGaXJzdEVsZW1lbnRzIiwicXVlcnlTZWxlY3RvckFsbCIsImxlbmd0aCIsImNvdW50TGl2ZURhdGFzIiwibGl2ZURhdGFTcGFuIiwic2V0U3RhdGUiLCJkZW5zZSIsInNvcnRlZENvbHVtbklkIiwic29ydERpcmVjdGlvbiIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsIm9mZnNldEhlaWdodCIsInJvd0hlaWdodCIsIkNFTExfSEVJR0hUX0RFTlNFIiwiQ0VMTF9IRUlHSFQiLCJncm91cEJ5Um93c1Bvc2l0aW9ucyIsInRhYmxlQm9keSIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJ0YWJJZCIsInN0aWNreVJvd3MiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJjYWxsIiwic3RpY2t5Um93IiwibmV4dFNpYmxpbmciLCJvZmZzZXRUb3AiLCJpdGVtIiwic2VsZWN0ZWRJZExpc3QiLCJpbmNsdWRlcyIsInJvd0lkIiwib25TZWxlY3QiLCJpdGVtSWQiLCJldmVudCIsInRhcmdldCIsIm5vZGVOYW1lIiwic2Nyb2xsTGVmdCIsInNjcm9sbGluZ1VwIiwic2hhZG93Qm90dG9tIiwiTkJfUk9XU19CQUNLX1RPX1RPUCIsImluZGV4IiwiZmFrZVRyIiwiZGlzcGxheSIsIm1heEhlaWdodCIsIm1pbkhlaWdodCIsImNsaWVudFdpZHRoIiwidEJvZHlMZWZ0UGFkZGluZ0VsZW1lbnRzIiwiZm9yRWFjaCIsImVsZW1lbnQiLCJ0Qm9keVJpZ2h0UGFkZGluZ0VsZW1lbnRzIiwicmlnaHQiLCJtYXgiLCJ0Qm9keVNjcm9sbGJhcldpZHRoIiwic3RpY2t5Iiwic2hhZG93UmlnaHQiLCJzdGlja3lSb3dDb250ZW50RGl2IiwiZGl2Iiwic2VsZWN0YWJsZSIsInJlcXVlc3RMaXZlRGF0YXMiLCJvcmRlckNvbHVtbnNBbmNob3IiLCJjdXJyZW50VGFyZ2V0Iiwib3JkZXJDb2x1bW5zTWVudU9wZW4iLCJzdGlja3lSb3dJbmRleCIsImNsYXNzZXMiLCJjb2x1bW5zIiwib3JkZXJhYmxlIiwib25Db2x1bW5zT3JkZXJVcGRhdGUiLCJtYW5kYXRvcnlDb2x1bW5JZCIsIm9uUm93Q2xpY2siLCJzb3J0YWJsZSIsIm9uU29ydCIsImZpbHRlcmFibGUiLCJvbkZpbHRlckNoYW5nZSIsImluZmluaXRlU2Nyb2xsIiwiaGFzTmV4dERhdGFzIiwicmVxdWVzdE5leHREYXRhcyIsImRhdGVMb2NhbGUiLCJudW1iZXJMb2NhbGUiLCJ0cmFuc2xhdGlvbnMiLCJ2aWV3IiwibG9va3VwQ29sdW1ucyIsImxvYWRpbmciLCJmaXhlZENvbHVtbldpZHRoIiwiZGlzYWJsZUNvbnRleHRNZW51IiwiZm9vdGVyQ29udGVudCIsImRldGFpbFJvd3NPcHRpb25zIiwiaGVhZGVySGVpZ2h0IiwiQ0VMTF9IRUFERVJfSEVJR0hUX0RFTlNFIiwiQ0VMTF9IRUFERVJfSEVJR0hUIiwibmJDb2x1bW5zRGlzcGxheWVkIiwiY29sdW1uIiwiZGlzcGxheWVkIiwiYWRkTmV3Um93UmVmcyIsIm9uU2VhcmNoIiwib25SZWRpcmVjdCIsImJhY2tfdG9fdG9wIiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsIm51bWJlciIsImFycmF5Iiwic3RyaW5nIiwiYm9vbCIsIm5vZGUiLCJmdW5jIiwib25lT2YiLCJkZWZhdWx0UHJvcHMiLCJsb2FkX21vcmUiLCJnZXRfdGhlX25fbmV3X2l0ZW1zIiwiY2hvb3NlX2FuZF9vcmdhbml6ZV9jb2x1bW5zIiwic2VhcmNoIiwidGltZSIsImJ1dHRvbiIsIm5leHQiLCJ3cmFwcGVyV2lkdGgiLCJzZXRUaW1lb3V0Iiwid2l0aFRoZW1lIiwibmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBRUE7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7SUFBWUEsRzs7QUFDWjs7Ozs7Ozs7Ozs7Ozs7OztBQUVPLElBQU1DLDBCQUFTLFNBQVRBLE1BQVM7QUFBQSxXQUFVO0FBQzVCQyxjQUFNO0FBQ0ZDLHNCQUFVLFVBRFI7QUFFRkMsNkJBQWlCQyxNQUFNQyxPQUFOLENBQWNDO0FBRjdCLFNBRHNCO0FBSzVCQyxzQkFBYztBQUNWQyx1QkFBVyxNQUREO0FBRVZDLHVCQUFXO0FBRkQsU0FMYztBQVM1QkMsZ0JBQVE7QUFDSlIsc0JBQVUsVUFETjtBQUVKUyxpQkFBSyxDQUZEO0FBR0pDLGtCQUFNLENBSEY7QUFJSkMsb0JBQVE7QUFKSixTQVRvQjtBQWU1QkMsZUFBTztBQUNIWixzQkFBVSxVQURQO0FBRUhhLG1CQUFPLE1BRko7QUFHSEMsc0JBQVUsUUFIUDtBQUlIQyw0QkFBZ0IsVUFKYjtBQUtIZCw2QkFBaUJDLE1BQU1DLE9BQU4sQ0FBY0MsV0FMNUI7QUFNSFksb0JBQVE7QUFOTCxTQWZxQjtBQXVCNUJDLGtDQUEwQjtBQUN0QmpCLHNCQUFVLFVBRFk7QUFFdEJhLG1CQUFPLE1BRmU7QUFHdEJLLHVCQUFXLFFBSFc7QUFJdEJDLG9CQUFRLEVBSmM7QUFLdEJWLGlCQUFLLENBQUM7QUFMZ0IsU0F2QkU7QUE4QjVCVyx5QkFBaUI7QUFDYkosb0JBQVE7QUFESyxTQTlCVztBQWlDNUJLLDhCQUFzQjtBQUNsQkYsb0JBQVEsRUFEVTtBQUVsQk4sbUJBQU8sRUFGVztB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ckU7QUFDSDs7QUFFRCxlQUFLTix3QkFBTCxHQUFnQyxPQUFLN0QsS0FBTCxDQUFXZSxnQkFBWCxDQUM1QixnREFENEIsQ0FBaEM7QUFHQSxlQUFLaUQseUJBQUwsR0FBaUMsT0FBS2hFLEtBQUwsQ0FBV2UsZ0JBQVgsQ0FDN0IseURBRDZCLENBQWpDOztBQUlBLGVBQUtELGtCQUFMLEdBQTBCLE9BQUtkLEtBQUwsQ0FBV2UsZ0JBQVgsQ0FBNEIsb0JBQTVCLENBQTFCO0FBQ0gsSzs7U0FrUkQ0RixhLEdBQWdCLFlBQU07QUFDbEI7QUFDQXdCLG1CQUFXLFlBQU07QUFDYixtQkFBS2hJLDZCQUFMO0FBQ0EsbUJBQUtqQiw4QkFBTDtBQUNILFNBSEQsRUFHRyxFQUhIO0FBSUgsSzs7O2tCQThLVSx3QkFBV3ZELE1BQVgsRUFBbUIsRUFBRXlNLFdBQVcsSUFBYixFQUFtQkMsTUFBTSxhQUF6QixFQUFuQixFQUE2RC9LLE9BQTdELEMiLCJmaWxlIjoiSGlUYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9tZmF6aW8vZGV2L3Byb2plY3RzL2hpcGF5LW1hdGVyaWFsLXVpIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgVGFibGUgZnJvbSAnbWF0ZXJpYWwtdWkvVGFibGUnO1xuaW1wb3J0IEFycm93VXAgZnJvbSAnbWRpLW1hdGVyaWFsLXVpL0Fycm93VXAnO1xuaW1wb3J0IGlzUmVxdWlyZWRJZiBmcm9tICdyZWFjdC1wcm9wdHlwZS1jb25kaXRpb25hbC1yZXF1aXJlJztcbmltcG9ydCBIaUJ1dHRvbiBmcm9tICcuLi9IaUJ1dHRvbic7XG5cbmltcG9ydCB7IHdpdGhTdHlsZXMgfSBmcm9tICcuLi9zdHlsZXMnO1xuaW1wb3J0IEhpVGFibGVIZWFkIGZyb20gJy4vSGlUYWJsZUhlYWQnO1xuaW1wb3J0IEhpVGFibGVCb2R5IGZyb20gJy4vSGlUYWJsZUJvZHknO1xuaW1wb3J0IEhpVGFibGVGb290ZXJTY3JvbGwgZnJvbSAnLi9IaVRhYmxlRm9vdGVyU2Nyb2xsJztcbmltcG9ydCBIaVRhYmxlRm9vdGVyIGZyb20gJy4vSGlUYWJsZUZvb3Rlcic7XG5pbXBvcnQgKiBhcyBjc3QgZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IEhpVGFibGVDb250ZXh0TWVudSBmcm9tICcuL0hpVGFibGVDb250ZXh0TWVudSc7XG5cbmV4cG9ydCBjb25zdCBzdHlsZXMgPSB0aGVtZSA9PiAoe1xuICAgIHJvb3Q6IHtcbiAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUucGFsZXR0ZS5iYWNrZ3JvdW5kMyxcbiAgICB9LFxuICAgIHRhYmxlV3JhcHBlcjoge1xuICAgICAgICBvdmVyZmxvd1g6ICdhdXRvJyxcbiAgICAgICAgb3ZlcmZsb3dZOiAnaGlkZGVuJyxcbiAgICB9LFxuICAgIGZpbHRlcjoge1xuICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgdG9wOiAyLFxuICAgICAgICBsZWZ0OiAyLFxuICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICB9LFxuICAgIHRhYmxlOiB7XG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgIGJvcmRlckNvbGxhcHNlOiAnY29sbGFwc2UnLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnBhbGV0dGUuYmFja2dyb3VuZDMsXG4gICAgICAgIHpJbmRleDogMTAsXG4gICAgfSxcbiAgICBiYWNrVG9Ub3BCdXR0b25Db250YWluZXI6IHtcbiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgIGhlaWdodDogNDgsXG4gICAgICAgIHRvcDogLTk5OTk5LFxuICAgIH0sXG4gICAgYmFja1RvVG9wQnV0dG9uOiB7XG4gICAgICAgIHpJbmRleDogMTEsXG4gICAgfSxcbiAgICBiYWNrVG9Ub3BCdXR0b25BcnJvdzoge1xuICAgICAgICBoZWlnaHQ6IDE4LFxuICAgICAgICB3aWR0aDogMTgsXG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB0b3A6IC0yLFxuICAgICAgICBtYXJnaW46IDIsXG4gICAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgTUFOREFUT1JZX0NPTFVNTl9FUlJPUl9NRVNTQUdFID1cbiAgICAnVm91cyBkZXZleiBzYWlzaXIgbGEgcHJvcHJpw6l0w6kgXCJtYW5kYXRvcnlDb2x1bW5JZFwiIHBvdXIgbGVzIHRhYmxlYXV4IFwib3JkZXJhYmxlXCInO1xuZXhwb3J0IGNvbnN0IFNPUlRFRF9DT0xVTU5fRVJST1JfTUVTU0FHRSA9XG4gICAgJ1ZvdXMgZGV2ZXogc2Fpc2lyIGxhIHByb3ByacOpdMOpIFwic29ydGVkQ29sdW1uSWRcIiBwb3VyIGxlcyB0YWJsZWF1eCBcInNvcnRhYmxlXCInO1xuXG4vKipcbiAqIERpc3BsYXkgYSBsaXN0IG9mIGVsZW1lbnRzIGluIGEgdGFibGVcbiAqIFRoZSBjbGljayBvbiBGaWx0ZXJWYXJpYW50IG9wZW5zIGEgbWVudSB0aGF0IGFsbG93cyB0aGUgdXNlclxuICogdG8gZmlsdGVyIGJ5IHZhbHVlIG9yIHRvIG9yZGVyIGJ5IGEgc3BlY2lmaWMgY29sdW1uXG4gKlxuICogUmVuZGVyZXIgYmVoYXZpb3JzOlxuICogLSBXaWR0aHM6XG4gKiAgICAgIC0gYWxsIGNlbGxzIHR5cGVzIGhhdmUgZGVmYXVsdCB3aWR0aCBzaXplIChweCkgZm9yIGVhY2gga2luZCBvZiB2aWV3IChML00vUykuXG4gKiAgICAgIC0gaWYgdmlldyBpc24ndCBzZXQgd2UgdXNlIHRoZSBsYXJnZXN0IG9uZSAobGFyZ2UpLlxuICogICAgICAtIGNlbGwgd2lkdGggY2FuIGJlIG92ZXJyaWRlbiBieSBjb2x1bW4ncyBwcm9wcy5cbiAqICAgICAgLSBpZiB0aGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlIHRvIHJlbmRlciBhbGwgY2VsbHMsXG4gKiAgICAgICAgd2UgdXNlIGhvcml6b250YWwgc2Nyb2xsIGFuZCBjZWxscyB3aWR0aCBhcmUgZml4ZWRcbiAqICAgICAgLSBpZiB0aGVyZSBpcyBlbm91Z2ggc3BhY2UsIG5vIHNjcm9sbCBhbmQgb25seSB0aGUgZmlyc3QgY2VsbCAoY29sdW1uKSxcbiAqICAgICAgd2hpY2ggaXMgbm90IGV4cGxpY2l0bHkgc2V0IGFzIHVuZml4ZWQgKGZpeGVkV2lkdGggPSBmYWxzZSksXG4gKiAgICAgIGhhcyBub3QgZml4ZWQgd2lkdGggYW5kIG1heSBlbmxhcmdlIGhpcyB3aWR0aCB0byBmaXQgYXZhaWxhYmxlIHNwYWNlLlxuICpcbiAqIC0gRml4ZWQgSGVhZGVyOlxuICogICAgICAtIGhlYWRlciByb3dzIHNob3VsZCBiZSBmaXhlZCBhbmQgYWx3YXlzIGJlIHZpc2libGUgb24gYm9keSBzY3JvbGwuXG4gKiAgICAgIC0gdmVydGljYWwgc2Nyb2xsYmFyIHNob3VsZCBiZSBoaWRkZW5cbiAqICAgICAgLSBpZiBuYlJvd3MgKiBjZWxsSGVpZ2h0ID4gdGFibGVIZWlnaHQsXG4gKiAgICAgICAgd2UgdmlydHVhbGx5IGVubGFyZ2UgdGhlIHRhYmxlIHRoZW4gY3JvcCBhcmJpdHJhcnkgd2lkdGggdG8gaGlkZSB0aGUgc2Nyb2xsYmFyLlxuICogICAgICBhcyBlYWNoIGJyb3dzZXJzIG1heSBoYXZlIGRpZmZlcmVudCBzY3JvbGxiYXIgd2lkdGhzLFxuICogICAgICBpdCBtYXkgdHJvdWJsZSBjb2x1bW4gaGVhZGVyIGFsaWdubWVudC5cbiAqL1xuY2xhc3MgSGlUYWJsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVzZWZ1bCB0byBleHRlbmQgdGhlIHN0eWxlIGFwcGxpZWQgdG8gY29tcG9uZW50cy5cbiAgICAgICAgICovXG4gICAgICAgIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb2xvbm5lcyBkdSB0YWJsZWF1IChsYWJlbCwgbGFyZ2V1ciwgZG9ubsOpZXMsIC4uLiApXG4gICAgICAgICAqL1xuICAgICAgICBjb2x1bW5zOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBOb21icmUgZGUgbm91dmVsbGVzIGRvbm7DqWVzIGRpc3BvbmlibGVzIChsaXZlKVxuICAgICAgICAgKi9cbiAgICAgICAgY291bnRMaXZlRGF0YXM6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUYWJsZWF1IGRlcyBkb25uw6llc1xuICAgICAgICAgKi9cbiAgICAgICAgZGF0YVNvdXJjZTogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMb2NhbGUgdXRpbGlzw6kgcG91ciBsZSBmb3JtYXQgZGVzIGRhdGVzXG4gICAgICAgICAqL1xuICAgICAgICBkYXRlTG9jYWxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICAvKipcbiAgICAgICAgICogT3B0aW9ucyB1dGlsaXPDqWVzIHBvdXIgZMOpY3JpcmUgbGUgY29tcG9ydGVtZW50IGRlIGxpZ25lcyBkZSBkw6l0YWlsc1xuICAgICAgICAgKiBleDoge1xuICAgICAgICAgKiAgICAgcGF5bWVudF9vcGVyYXRpb246IHtcbiAgICAgICAgICogICAgICAgICBhbmNob3I6ICd0cmFuc2FjdGlvbl9pZCdcbiAgICAgICAgICogICAgIH1cbiAgICAgICAgICogfVxuICAgICAgICAgKiBkYW5zIGNldCBleGVtcGxlLCBvbiB2ZXV0IHF1ZSBsZXMgbGlnbmVzIGRlIGTDqXRhaWxzIGRlIHR5cGUgcGF5bWVudF9vcGVyYXRpb25cbiAgICAgICAgICogc29pZW50IGFmZmljaGFibGUgw6AgcGFydGlyIGQndW4gY2hpcCBidXR0b24gZGFucyBsZXMgY2VsbHVsZXMgdHJhbnNhY3Rpb25faWRcbiAgICAgICAgICovXG4gICAgICAgIGRldGFpbFJvd3NPcHRpb25zOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgICAvKipcbiAgICAgICAgICogRGVuc2l0w6kgZCdhZmZpY2hhZ2UgKGpvdWUgc3VyIGxhIGhhdXRldXIgZGVzIGxpZ25lcylcbiAgICAgICAgICovXG4gICAgICAgIGRlbnNlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFjdGl2ZS9kw6lzYWN0aXZlIGxlIG1lbnUgY29udGV4dHVlbCBhdSBjbGljIGRyb2l0IHN1ciBsZXMgY2VsbHVsZXMgZHUgdGFibGVhdVxuICAgICAgICAgKi9cbiAgICAgICAgZGlzYWJsZUNvbnRleHRNZW51OiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgICAgICAvKipcbiAgICAgICAgICogQWN0aXZlIGxlIGZpbHRyZSBzdXIgbGVzIGNvbG9ubmVzIGZpbHRyYWJsZXNcbiAgICAgICAgICovXG4gICAgICAgIGZpbHRlcmFibGU6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogRml4ZSBsYSB0YWlsbGUgZGVzIGNvbG9ubmVzIHNlbG9uIGxlIHR5cGUgZGUgdnVlXG4gICAgICAgICAqIFNpbm9uIGxlcyBjb2xvbm5lcyBzJ2FkYXB0ZW50IMOgIGwnZXNwYWNlIGRpc3BvbmlibGVcbiAgICAgICAgICovXG4gICAgICAgIGZpeGVkQ29sdW1uV2lkdGg6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogQWpvdXRlIHVuIGZvb3RlciBhdmVjIGxlIGNvbnRlbnUgZm9vdGVyQ29udGVudCDDoCBsJ2ludMOpcmlldXJcbiAgICAgICAgICovXG4gICAgICAgIGZvb3RlckNvbnRlbnQ6IFByb3BUeXBlcy5ub2RlLFxuICAgICAgICAvKipcbiAgICAgICAgICogSWQgZGUgbGEgY29sb25uZSBwYXIgbGFxdWVsbGUgc29udCByZWdyb3Vww6kgbGVzIMOpbMOpbWVudHNcbiAgICAgICAgICovXG4gICAgICAgIGdyb3VwQnk6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBam91dGUgbGUgbG9hZGVyIGV0IGxlIHJlcXVlc3ROZXh0RGF0YXMgZW4gZmluIGRlIHRhYmxlYXUgKHNpIGluZmluaXRlU2Nyb2xsIGFjdGl2w6kpXG4gICAgICAgICAqL1xuICAgICAgICBoYXNOZXh0RGF0YXM6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogSGF1dGV1ciBkdSB0YWJsZWF1IChweClcbiAgICAgICAgICovXG4gICAgICAgIGhlaWdodDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFqb3V0ZSBsJ2luZmluaXRlIHNjcm9sbFxuICAgICAgICAgKi9cbiAgICAgICAgaW5maW5pdGVTY3JvbGw6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogw4l0YXQgZHUgdGFibGVhdSBlbiBjb3VycyBkZSBjaGFyZ2VtZW50IGRlcyBkb25uw6llc1xuICAgICAgICAgKi9cbiAgICAgICAgbG9hZGluZzogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZGVudGlmaWFudCBkZSBsYSBvdSBkZXMgY29sb25uZXMgc3VyIGxhL2xlc3F1ZWxsZXMgaWwgeSBhIHVuZSAnbG9va3VwJyBzZWFyY2hcbiAgICAgICAgICovXG4gICAgICAgIGxvb2t1cENvbHVtbnM6IFByb3BUeXBlcy5hcnJheSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFBvdXIgbGVzIHRhYmxlYXV4IFwib3JkZXJhYmxlXCIgdW5pcXVlbWVudCA6IElkIGRlIGxhIGNvbG9ubmUgb2JsaWdhdG9pcmUsXG4gICAgICAgICAqIGVsbGUgc2VyYSB0b3Vqb3VycyBhZmZpY2jDqWUgZGFucyBsZSB0YWJsZWF1IGV0IG5lIHBvdXJyYSBwYXMgw6p0cmUgY2FjaMOpZS5cbiAgICAgICAgICovXG4gICAgICAgIG1hbmRhdG9yeUNvbHVtbklkOiBpc1JlcXVpcmVkSWYoXG4gICAgICAgICAgICBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICAgICAgcHJvcHMgPT4gcHJvcHMuaGFzT3duUHJvcGVydHkoJ29yZGVyYWJsZScpICYmIHByb3BzLm9yZGVyYWJsZSA9PT0gdHJ1ZSxcbiAgICAgICAgICAgIE1BTkRBVE9SWV9DT0xVTU5fRVJST1JfTUVTU0FHRSxcbiAgICAgICAgKSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExvY2FsZSB1dGlsaXPDqSBwb3VyIGxlIGZvcm1hdCBkZXMgbm9tYnJlc1xuICAgICAgICAgKi9cbiAgICAgICAgbnVtYmVyTG9jYWxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICAvKipcbiAgICAgICAgICogRm9uY3Rpb24gZGUgY2FsbGJhY2sgcXVpIHByZW5kIGVuIHBhcmFtw6h0cmUgbGUgdGFibGVhdSBkZXMgY29sb25uZXMgbWlzIMOgIGpvdXIuXG4gICAgICAgICAqL1xuICAgICAgICBvbkNvbHVtbnNPcmRlclVwZGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayBzdXIgbGUgZmlsdHJlIGQndW5lIGNvbG9ubmVcbiAgICAgICAgICogUGFzc2UgbCdpZCBkZSBsYSBjb2xvbm5lIGV0IGxhIGxpc3RlIGRlcyBpZCBkZXMgw6lsw6ltZW50cyBpbmNsdXNcbiAgICAgICAgICovXG4gICAgICAgIG9uRmlsdGVyQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIGFwcGVsw6llIGF1IGNsaWMgc3VyIGwnaXRlbSByZWRpcmVjdGlvblxuICAgICAgICAgKiBkdSBtZW51IGNvbnRleHR1ZWwgb3V2ZXJ0IGF1IGNsaWMgZHJvaXRcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHtpbnR9IGlkXG4gICAgICAgICAqL1xuICAgICAgICBvblJlZGlyZWN0OiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIGF1IGNsaWNrIHN1ciB1bmUgbGlnbmVcbiAgICAgICAgICogUGFzc2UgbCdlbGVtZW50IChyb3cpXG4gICAgICAgICAqL1xuICAgICAgICBvblJvd0NsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIGFwcGVsw6llIGF1IGNsaWMgc3VyIGxlcyBpdGVtcyBkZSByZWNoZXJjaGVcbiAgICAgICAgICogZHUgbWVudSBjb250ZXh0dWVsIG91dmVydCBhdSBjbGljIGRyb2l0XG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWFyY2hlZCBmaWVsZFxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VhcmNoZWQgdmFsdWVcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNlYXJjaCB0eXBlIChsb29rdXAsIGV4Y2x1ZGUpXG4gICAgICAgICAqL1xuICAgICAgICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayBzdXIgbGEgc8OpbGVjdGlvbiBkJ3VuZSBsaWduZVxuICAgICAgICAgKiAob3Ugc8OpbGVjdGlvbi9kw6lzZWxlY3Rpb24gZGUgdG91cyBkYW5zIGxlIGhlYWRlcilcbiAgICAgICAgICogUGFzc2UgbGEgbGlzdGUgZGVzIGlkIGRlcyBsaWduZXMgc8OpbGVjdGlvbm7DqWVzIChzZWxlY3RlZElkTGlzdClcbiAgICAgICAgICovXG4gICAgICAgIG9uU2VsZWN0OiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIHN1ciBsZSB0cmkgZCd1bmUgY29sb25uZVxuICAgICAgICAgKiBQYXNzZSBsJ2lkIGRlIGxhIGNvbG9ubmUgZXQgbGEgZGlyZWN0aW9uIGR1IHRyaSAob3UgZmFsc2Ugc2kgdHJpIHBhciBkw6lmYXV0KVxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29sdW1uIGlkXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkaXJlY3Rpb25cbiAgICAgICAgICovXG4gICAgICAgIG9uU29ydDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMJ3V0aWxpc2F0ZXVyIHBldXQgY2hhbmdlciBsJ29yZHJlIGRlcyBjb2xvbm5lcyxcbiAgICAgICAgICogbGVzIGFmZmljaGVyIG91IG5vbiwgZXQgY2hhbmdlciBsYSB2dWUgZGUgY2hhcXVlIGNvbG9ubmUgKHNtYWxsLCBtZWRpdW0sIGxhcmdlKS5cbiAgICAgICAgICovXG4gICAgICAgIG9yZGVyYWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUYWJsZWF1IGRlcyBjb2xvbm5lcyBhZmZpY2jDqWVzIChvcmRvbm7DqWVzLCB2aXNpYmxlcy9jYWNow6llcywgbC9tL3MpXG4gICAgICAgICAqL1xuICAgICAgICBvcmRlcmVkQ29sdW1uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayByZXF1w6lyYW50IGwnYWZmaWNoYWdlIGRlcyBub3V2ZWxsZXMgZG9ubsOpZXMgKGxpdmUpXG4gICAgICAgICAqL1xuICAgICAgICByZXF1ZXN0TGl2ZURhdGFzOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIHJlcXXDqXJhbnQgbCdhZmZpY2hhZ2UgZGVzIGRvbm7DqWVzIHN1aXZhbnRlc1xuICAgICAgICAgKi9cbiAgICAgICAgcmVxdWVzdE5leHREYXRhczogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBbdjIgLSDDoCB2ZW5pcl0gTGVzIGxpZ25lcyBzb250IHPDqWxlY3Rpb25uYWJsZXMgKGFmZmljaGFnZSBkJ3VuZSBjaGVja2JveClcbiAgICAgICAgICovXG4gICAgICAgIHNlbGVjdGFibGU6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogTGlzdGUgZGVzIGlkIGRlcyBsaWduZXMgc8OpbGVjdGlvbm7DqWVzXG4gICAgICAgICAqL1xuICAgICAgICBzZWxlY3RlZElkTGlzdDogUHJvcFR5cGVzLmFycmF5LFxuICAgICAgICAvKipcbiAgICAgICAgICogQWN0aXZlIGxlIHRyaSBzdXIgbGVzIGNvbG9ubmVzXG4gICAgICAgICAqL1xuICAgICAgICBzb3J0YWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZW5zIGR1IHRyaVxuICAgICAgICAgKi9cbiAgICAgICAgc29ydERpcmVjdGlvbjogUHJvcFR5cGVzLm9uZU9mKFsnYXNjJywgJ2Rlc2MnXSksXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZCBkZSBsYSBjb2xvbm5lIHRyacOpXG4gICAgICAgICAqL1xuICAgICAgICBzb3J0ZWRDb2x1bW5JZDogaXNSZXF1aXJlZElmKFxuICAgICAgICAgICAgUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgICAgICAgIHByb3BzID0+IHByb3BzLmhhc093blByb3BlcnR5KCdzb3J0YWJsZScpICYmIHByb3BzLnNvcnRhYmxlID09PSB0cnVlLFxuICAgICAgICAgICAgU09SVEVEX0NPTFVNTl9FUlJPUl9NRVNTQUdFLFxuICAgICAgICApLFxuICAgICAgICAvKipcbiAgICAgICAgICogRml4ZSBsYSBwcmVtacOocmUgY29sb25uZVxuICAgICAgICAgKi9cbiAgICAgICAgc3RpY2t5OiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElkZW50aWZpYW50IHVuaXF1ZSDDoCBzcMOpY2lmaWVyIHNpIG9uIHV0aWxpc2UgcGx1c2lldXJzIGNvbXBvc2FudHMgSGlUYWJsZVxuICAgICAgICAgKi9cbiAgICAgICAgdGFiSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRyYWR1Y3Rpb24gZGVzIGNoYcOubmVzIGFmZmljaMOpZXNcbiAgICAgICAgICovXG4gICAgICAgIHRyYW5zbGF0aW9uczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRhaWxsZSBkdSB0YWJsZWF1IChML00vUyksXG4gICAgICAgICAqIGTDqWZpbml0IGwnZXNwYWNlIGVudHJlIGxlcyBjZWxsdWxlcyBldCBsZXVycyB0YWlsbGVzIHBhciBkZWZhdWx0XG4gICAgICAgICAqL1xuICAgICAgICB2aWV3OiBQcm9wVHlwZXMub25lT2YoWydsJywgJ20nLCAncyddKSxcbiAgICB9O1xuXG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgICAgb3JkZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICBzb3J0RGlyZWN0aW9uOiAnYXNjJyxcbiAgICAgICAgZmlsdGVyYWJsZTogdHJ1ZSxcbiAgICAgICAgaW5maW5pdGVTY3JvbGw6IGZhbHNlLFxuICAgICAgICBoYXNOZXh0RGF0YXM6IGZhbHNlLFxuICAgICAgICBjb3VudExpdmVEYXRhczogMCxcbiAgICAgICAgZGF0ZUxvY2FsZTogJ2VuLUVOJyxcbiAgICAgICAgbnVtYmVyTG9jYWxlOiAnZW4tRU4nLFxuICAgICAgICBkZW5zZTogZmFsc2UsXG4gICAgICAgIGRldGFpbFJvd3NPcHRpb25zOiB7fSxcbiAgICAgICAgaGVpZ2h0OiA0NTAsXG4gICAgICAgIHN0aWNreTogdHJ1ZSxcbiAgICAgICAgdHJhbnNsYXRpb25zOiB7XG4gICAgICAgICAgICBsb2FkX21vcmU6ICdMb2FkIE1vcmUnLFxuICAgICAgICAgICAgYmFja190b190b3A6ICdCYWNrIHRvIHRvcCcsXG4gICAgICAgICAgICBnZXRfdGhlX25fbmV3X2l0ZW1zOiAnU2VlICVzIG5ldyBpdGVtcycsXG4gICAgICAgICAgICBjaG9vc2VfYW5kX29yZ2FuaXplX2NvbHVtbnM6ICdDaG9vc2UgJiBvcmdhbml6ZSBjb2x1bW5zJyxcbiAgICAgICAgICAgIHNlYXJjaDogJ1NlYXJjaCcsXG4gICAgICAgICAgICB0aW1lOiAnVGltZScsXG4gICAgICAgICAgICBzdGlja3lSb3c6IHtcbiAgICAgICAgICAgICAgICBidXR0b246IHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dDogJ05leHQgZGF5JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdmlldzogJ2wnLFxuICAgICAgICBsb29rdXBDb2x1bW5zOiBbXSxcbiAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgIGZpeGVkQ29sdW1uV2lkdGg6IHRydWUsXG4gICAgICAgIGRpc2FibGVDb250ZXh0TWVudTogdHJ1ZSxcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBkYXRlVXBkYXRlOiBEYXRlLm5vdygpLFxuICAgICAgICAgICAgaXNTY3JvbGxUb0JvdHRvbTogZmFsc2UsXG4gICAgICAgICAgICBncm91cEJ5SWRzOiB7fSxcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBjcmVhdGUgYXNzb2NpYXRpdmUgYXJyYXkgKG9iamVjdCkgd2l0aCBzdGlja3kgcm93IGtleSAmIGl0cyB2YWx1ZXNcbiAgICAgICAgLy8gPT4gdXNlZCBmb3Igc3RpY2t5IHJvdyBiYWRnZXNcbiAgICAgICAgaWYgKHByb3BzLmdyb3VwQnkpIHtcbiAgICAgICAgICAgIHByb3BzLmRhdGFTb3VyY2UubWFwKHJvdyA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gcm93LmRhdGFzW3Byb3BzLmdyb3VwQnldLnZhbHVlO1xuICAgICAgICAgICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUodmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRhdGUgaW5zdGFuY2VvZiBEYXRlICYmIGlzRmluaXRlKGRhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyKDAsIDEwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnN0YXRlLmdyb3VwQnlJZHMuaGFzT3duUHJvcGVydHkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZ3JvdXBCeUlkc1t2YWx1ZV0gPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZS5ncm91cEJ5SWRzW3ZhbHVlXS5wdXNoKHJvdy5kYXRhcyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9yZGVyYWJsZVxuICAgICAgICB0aGlzLm9wZW5PcmRlckNvbHVtbnNNZW51ID0gdGhpcy5vcGVuT3JkZXJDb2x1bW5zTWVudS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmNsb3NlT3JkZXJDb2x1bW5zTWVudSA9IHRoaXMuY2xvc2VPcmRlckNvbHVtbnNNZW51LmJpbmQodGhpcyk7XG5cbiAgICAgICAgLy8gU2VsZWN0YWJsZVxuICAgICAgICB0aGlzLnRvZ2dsZUl0ZW0gPSB0aGlzLnRvZ2dsZUl0ZW0uYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy50b2dnbGVBbGwgPSB0aGlzLnRvZ2dsZUFsbC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLnNlbGVjdEFsbCA9IHRoaXMuc2VsZWN0QWxsLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuZGVzZWxlY3RBbGwgPSB0aGlzLmRlc2VsZWN0QWxsLmJpbmQodGhpcyk7XG5cbiAgICAgICAgLy8gTWFuYWdlIHNjcm9sbGluZ1xuICAgICAgICB0aGlzLmhhbmRsZUhvcml6b250YWxTY3JvbGwgPSB0aGlzLmhhbmRsZUhvcml6b250YWxTY3JvbGwuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVWZXJ0aWNhbFNjcm9sbCA9IHRoaXMuaGFuZGxlVmVydGljYWxTY3JvbGwuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5wbGFjZUhvcml6b250YWxGbG9hdGluZ0VsZW1lbnQgPSB0aGlzLnBsYWNlSG9yaXpvbnRhbEZsb2F0aW5nRWxlbWVudC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLnNjcm9sbFRvVG9wID0gdGhpcy5zY3JvbGxUb1RvcC5iaW5kKHRoaXMpO1xuXG4gICAgICAgIHRoaXMuaXNTY3JvbGxUb0JvdHRvbSA9IHRoaXMuaXNTY3JvbGxUb0JvdHRvbS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZVJlcXVlc3RMaXZlRGF0YXMgPSB0aGlzLmhhbmRsZVJlcXVlc3RMaXZlRGF0YXMuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVOZXh0U3RpY2t5Um93ID0gdGhpcy5oYW5kbGVOZXh0U3RpY2t5Um93LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlU3RpY2t5Um93UG9zaXRpb25zID0gdGhpcy5oYW5kbGVTdGlja3lSb3dQb3NpdGlvbnMuYmluZCh0aGlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBET00gcmVmZXJlbmNlc1xuICAgICAqIHVzZSB0byByZXBsYWNlIGVsZW1lbnQgb24gaG9yaXpvbnRhbCAmIHZlcnRpY2FsIHNjcm9sbFxuICAgICAqL1xuICAgIHdyYXBwZXJEaXYgPSA8ZGl2IC8+O1xuICAgIHdyYXBwZXJXaWR0aCA9IDA7XG4gICAgdEhlYWQgPSA8ZGl2IC8+O1xuICAgIHRIZWFkTGVmdFBhZGRpbmcgPSA8ZGl2IC8+O1xuICAgIHRIZWFkUmlnaHRQYWRkaW5nID0gPGRpdiAvPjtcbiAgICB0SGVhZEZpcnN0ID0gPGRpdiAvPjtcbiAgICB0Qm9keSA9IDxkaXYgLz47XG4gICAgdEJvZHlTY3JvbGxiYXJXaWR0aCA9IDA7XG4gICAgdEJvZHlMZWZ0UGFkZGluZ0VsZW1lbnRzID0gW107XG4gICAgdEJvZHlSaWdodFBhZGRpbmdFbGVtZW50cyA9IFtdO1xuICAgIHRCb2R5Rmlyc3RFbGVtZW50cyA9IFtdO1xuICAgIHRGb290ID0gPGRpdiAvPjtcbiAgICB0Rm9vdENlbnRlcmVkRGl2ID0gPGRpdiAvPjtcbiAgICBiYWNrVG9Ub3BCdXR0b24gPSBudWxsO1xuICAgIGxpdmVEYXRhU3BhbiA9IG51bGw7XG4gICAgc2Nyb2xsVG9wID0gMDtcbiAgICBzY3JvbGxMZWZ0ID0gMDtcbiAgICBncm91cEJ5Um93c1Bvc2l0aW9ucyA9IFtdO1xuXG4gICAgLyoqIExpZmVjeWNsZSBtZXRob2RzICovXG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgICAgdGhpcy53cmFwcGVyU2Nyb2xsT2Zmc2V0ID0gdGhpcy53cmFwcGVyRGl2LnNjcm9sbFdpZHRoIC0gdGhpcy53cmFwcGVyRGl2Lm9mZnNldFdpZHRoO1xuXG4gICAgICAgIC8vIFNldCBET00gcmVmZXJlbmNlc1xuICAgICAgICB0aGlzLnRIZWFkID0gdGhpcy53cmFwcGVyRGl2LnF1ZXJ5U2VsZWN0b3IoJ3RhYmxlIHRoZWFkJyk7XG4gICAgICAgIHRoaXMudEhlYWRMZWZ0UGFkZGluZyA9IHRoaXMudEhlYWQucXVlcnlTZWxlY3RvcigndHIgdGg6bnRoLWNoaWxkKDEpJyk7XG4gICAgICAgIHRoaXMudEhlYWRSaWdodFBhZGRpbmcgPSB0aGlzLnRIZWFkLnF1ZXJ5U2VsZWN0b3IoJ3RyIHRoOm50aC1sYXN0LWNoaWxkKDEpJyk7XG4gICAgICAgIHRoaXMudEhlYWRGaXJzdCA9IHRoaXMudEhlYWQucXVlcnlTZWxlY3RvcigndHIgdGg6bnRoLWNoaWxkKDIpJyk7XG4gICAgICAgIHRoaXMudEJvZHkgPSB0aGlzLndyYXBwZXJEaXYucXVlcnlTZWxlY3RvcigndGFibGUgdGJvZHknKTtcbiAgICAgICAgdGhpcy50Rm9vdCA9IHRoaXMud3JhcHBlckRpdi5xdWVyeVNlbGVjdG9yKCd0YWJsZSB0Zm9vdCcpO1xuICAgICAgICB0aGlzLnRGb290Q2VudGVyZWREaXYgPSB0aGlzLndyYXBwZXJEaXYucXVlcnlTZWxlY3RvcigndGFibGUgdGZvb3QgdHIgdGQgZGl2Jyk7XG4gICAgICAgIHRoaXMuYmFja1RvVG9wQnV0dG9uID0gdGhpcy53cmFwcGVyRGl2LnF1ZXJ5U2VsZWN0b3IoJy5iYWNrLXRvLXRvcC1idXR0b24nKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZUZsb2F0aW5nQm9keUVsZW1lbnRSZWZzKCk7XG5cbiAgICAgICAgLy8gRGV0ZWN0IGlmIHJvb3QgaGFzIGhvcml6b250YWwgc2Nyb2xsIGJhclxuICAgICAgICBpZiAodGhpcy53cmFwcGVyRGl2LnNjcm9sbFdpZHRoID4gdGhpcy53cmFwcGVyRGl2Lm9mZnNldFdpZHRoKSB7XG4gICAgICAgICAgICAvLyBhZGFwdCBmaXJzdCBjb2x1bW4gdG8gZml4ZWQgd2lkdGhcbiAgICAgICAgICAgIGlmICh0aGlzLnRIZWFkRmlyc3QgJiYgdGhpcy50SGVhZEZpcnN0LnN0eWxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50SGVhZEZpcnN0LnN0eWxlLndpZHRoID0gJ2F1dG8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZml4ZWQgZm9vdGVyIHdpZHRoXG4gICAgICAgICAgICBpZiAodGhpcy50Rm9vdENlbnRlcmVkRGl2ICYmIHRoaXMudEZvb3RDZW50ZXJlZERpdi5zdHlsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudEZvb3RDZW50ZXJlZERpdi5zdHlsZS53aWR0aCA9IChNYXRoLnJvdW5kKHRoaXMud3JhcHBlckRpdi5vZmZzZXRXaWR0aCAvIDIpKSArICdweCc7XG4gICAgICAgICAgICAgICAgdGhpcy50Rm9vdENlbnRlcmVkRGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgICAgICAgICAgICB0aGlzLnRGb290Q2VudGVyZWREaXYuc3R5bGUuYm90dG9tID0gJzBweCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZVN0aWNreVJvd3NQb3NpdGlvbigpO1xuXG4gICAgICAgIHRoaXMucGxhY2VIb3Jpem9udGFsRmxvYXRpbmdFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcywgcHJldlN0YXRlLCBwcmV2Q29udGV4dCkge1xuICAgICAgICB0aGlzLndyYXBwZXJTY3JvbGxPZmZzZXQgPSB0aGlzLndyYXBwZXJEaXYuc2Nyb2xsV2lkdGggLSB0aGlzLndyYXBwZXJEaXYub2Zmc2V0V2lkdGg7XG5cbiAgICAgICAgLy8gSWYgb3JkZXJlZENvbHVtbnMgaGFzIGNoYW5nZSwgcG9zc2libHkgdGhlIHN0aWNreSBjZWxscyBoYXMgY2hhbmdlZCB0b29cbiAgICAgICAgaWYgKHRoaXMucHJvcHMub3JkZXJlZENvbHVtbnNbMF0uY29sSWQgIT09IHByZXZQcm9wcy5vcmRlcmVkQ29sdW1uc1swXS5jb2xJZCkge1xuICAgICAgICAgICAgdGhpcy50SGVhZEZpcnN0ID0gdGhpcy50SGVhZC5xdWVyeVNlbGVjdG9yKCd0ciB0aDpudGgtY2hpbGQoMiknKTtcbiAgICAgICAgICAgIHRoaXMudEJvZHlGaXJzdEVsZW1lbnRzID0gdGhpcy53cmFwcGVyRGl2LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgICAgICAgJ3RhYmxlIHRib2R5IHRyIHRkOm50aC1jaGlsZCgyKScsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbmV3IHJvd3MsIHVwZGF0ZSB0Ym9keSBmaXJzdCBlbGVtZW50IGxpc3QgYW5kIGxlZnQgcGFkZGluZyBjZWxsc1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5kYXRhU291cmNlLmxlbmd0aCA+IHByZXZQcm9wcy5kYXRhU291cmNlLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGbG9hdGluZ0JvZHlFbGVtZW50UmVmcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMucHJvcHMuY291bnRMaXZlRGF0YXMgPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmxpdmVEYXRhU3BhbiA9IHRoaXMudEhlYWQucXVlcnlTZWxlY3RvcigndHI6bnRoLWNoaWxkKDIpIHRoIHNwYW4nKTtcbiAgICAgICAgICAgIHRoaXMuYmFja1RvVG9wQnV0dG9uLnN0eWxlLnRvcCA9ICctOTk5OTlweCc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJldlByb3BzLmNvdW50TGl2ZURhdGFzID4gdGhpcy5wcm9wcy5jb3VudExpdmVEYXRhcykge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgZGF0ZVVwZGF0ZTogRGF0ZS5ub3coKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT25seSBpZiBuZWVkZWRcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5wcm9wcy5kYXRhU291cmNlLmxlbmd0aCA+IHByZXZQcm9wcy5kYXRhU291cmNlLmxlbmd0aCB8fFxuICAgICAgICAgICAgdGhpcy5wcm9wcy5kZW5zZSAhPT0gcHJldlByb3BzLmRlbnNlIHx8XG4gICAgICAgICAgICB0aGlzLnByb3BzLnNvcnRlZENvbHVtbklkICE9PSBwcmV2UHJvcHMuc29ydGVkQ29sdW1uSWQgfHxcbiAgICAgICAgICAgIHRoaXMucHJvcHMuc29ydERpcmVjdGlvbiAhPT0gcHJldlByb3BzLnNvcnREaXJlY3Rpb25cbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVN0aWNreVJvd3NQb3NpdGlvbigpO1xuICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMuZGF0YVNvdXJjZS5sZW5ndGggPiBwcmV2UHJvcHMuZGF0YVNvdXJjZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVN0aWNreVJvd1Bvc2l0aW9ucygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnByb3BzLmRhdGFTb3VyY2UubGVuZ3RoID4gcHJldlByb3BzLmRhdGFTb3VyY2UubGVuZ3RoICYmIHRoaXMucHJvcHMuZ3JvdXBCeSkge1xuICAgICAgICAgICAgLy8gY3JlYXRlIGFzc29jaWF0aXZlIGFycmF5IChvYmplY3QpIHdpdGggc3RpY2t5IHJvdyBrZXkgJiBpdHMgdmFsdWVzXG4gICAgICAgICAgICAvLyA9PiB1c2VkIGZvciBzdGlja3kgcm93IGJhZGdlc1xuICAgICAgICAgICAgbGV0IGdyb3VwQnlJZHMgPSB7fTtcbiAgICAgICAgICAgIHRoaXMucHJvcHMuZGF0YVNvdXJjZS5tYXAocm93ID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSByb3cuZGF0YXNbdGhpcy5wcm9wcy5ncm91cEJ5XS52YWx1ZTtcbiAgICAgICAgICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcblxuICAgICAgICAgICAgICAgIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSAmJiBpc0Zpbml0ZShkYXRlKSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cigwLCAxMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghZ3JvdXBCeUlkcy5oYXNPd25Qcm9wZXJ0eSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBCeUlkc1t2YWx1ZV0gPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZ3JvdXBCeUlkc1t2YWx1ZV0ucHVzaChyb3cuZGF0YXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZ3JvdXBCeUlkczogZ3JvdXBCeUlkcyB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNTY3JvbGxUb0JvdHRvbSh0aGlzLnNjcm9sbFRvcCA9PT0gdGhpcy50Qm9keS5zY3JvbGxIZWlnaHQgLSB0aGlzLnRCb2R5Lm9mZnNldEhlaWdodCk7XG5cbiAgICAgICAgdGhpcy5wbGFjZUhvcml6b250YWxGbG9hdGluZ0VsZW1lbnQoKTtcbiAgICB9XG5cbiAgICAvKiogICAgRU5EIExpZmVjeWNsZSBtZXRob2RzICAgKi9cblxuICAgIHVwZGF0ZVN0aWNreVJvd3NQb3NpdGlvbigpIHtcbiAgICAgICAgY29uc3Qgcm93SGVpZ2h0ID0gdGhpcy5wcm9wcy5kZW5zZSA/IGNzdC5DRUxMX0hFSUdIVF9ERU5TRSA6IGNzdC5DRUxMX0hFSUdIVDtcbiAgICAgICAgdGhpcy5ncm91cEJ5Um93c1Bvc2l0aW9ucyA9IFtdO1xuICAgICAgICAvLyBJbml0aWFsaXplIG5ldyBzdGlja3lSb3dzIHBvc2l0aW9uXG4gICAgICAgIGNvbnN0IHRhYmxlQm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGAke3RoaXMucHJvcHMudGFiSWR9LWJvZHlgKTtcbiAgICAgICAgY29uc3Qgc3RpY2t5Um93cyA9IHRhYmxlQm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzdGlja3lHcm91cEJ5Jyk7XG4gICAgICAgIGlmIChzdGlja3lSb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChzdGlja3lSb3dzLCBzdGlja3lSb3cgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBCeVJvd3NQb3NpdGlvbnMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgc3RpY2t5Um93Lm5leHRTaWJsaW5nLm5leHRTaWJsaW5nLm9mZnNldFRvcCAtIHJvd0hlaWdodCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVGbG9hdGluZ0JvZHlFbGVtZW50UmVmcyA9ICgpID0+IHtcbiAgICAgICAgdGhpcy50Qm9keVNjcm9sbGJhcldpZHRoID0gdGhpcy50Qm9keS5vZmZzZXRXaWR0aCAtIHRoaXMudEJvZHkuY2xpZW50V2lkdGg7XG5cbiAgICAgICAgaWYgKHRoaXMudEhlYWQgJiYgdGhpcy50Qm9keVNjcm9sbGJhcldpZHRoID4gMCkge1xuICAgICAgICAgICAgdGhpcy50SGVhZC5zdHlsZS53aWR0aCA9ICdjYWxjKDEwMCUgLSAnICsgdGhpcy50Qm9keVNjcm9sbGJhcldpZHRoICsgJ3B4KSc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRCb2R5TGVmdFBhZGRpbmdFbGVtZW50cyA9IHRoaXMudEJvZHkucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgICd0ciB0ZDpudGgtY2hpbGQoMSksIC5mbG9hdGluZy1wYXJlbnQtcm93LWxhYmVsJyxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy50Qm9keVJpZ2h0UGFkZGluZ0VsZW1lbnRzID0gdGhpcy50Qm9keS5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICAgJ3RyIHRkOm50aC1sYXN0LWNoaWxkKDEpLCAuZmxvYXRpbmctcGFyZW50LXJvdy1pbmRpY2F0b3InLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMudEJvZHlGaXJzdEVsZW1lbnRzID0gdGhpcy50Qm9keS5xdWVyeVNlbGVjdG9yQWxsKCd0ciB0ZDpudGgtY2hpbGQoMiknKTtcbiAgICB9O1xuXG4gICAgaXNTY3JvbGxUb0JvdHRvbSh2YWx1ZSkge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5pc1Njcm9sbFRvQm90dG9tICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgaXNTY3JvbGxUb0JvdHRvbTogdmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFqb3V0ZSAvIFN1cHByaW1lIGwnaWQgZGUgbCdpdGVtIGR1IHNlbGVjdGVkSWRMaXN0XG4gICAgICogQHBhcmFtIGl0ZW1cbiAgICAgKi9cbiAgICB0b2dnbGVJdGVtKGl0ZW0pIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuc2VsZWN0ZWRJZExpc3QuaW5jbHVkZXMoaXRlbS5yb3dJZCkpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25TZWxlY3QoXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5zZWxlY3RlZElkTGlzdC5maWx0ZXIoZnVuY3Rpb24oaXRlbUlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtSWQgIT09IGl0ZW0ucm93SWQ7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vblNlbGVjdChbLi4udGhpcy5wcm9wcy5zZWxlY3RlZElkTGlzdCwgaXRlbS5yb3dJZF0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU8OpbGVjdGlvbm5lIC8gRMOpc2VsZWN0aW9ubmUgdG91cyBsZXMgw6lsw6ltZW50cyBlbiBmb25jdGlvbiBkZSBsJ8OpdGF0IGRlIGxhIGxpc3RlXG4gICAgICovXG4gICAgdG9nZ2xlQWxsKCkge1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5zZWxlY3RlZElkTGlzdC5sZW5ndGggPT09IHRoaXMucHJvcHMuZGF0YVNvdXJjZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZGVzZWxlY3RBbGwoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTw6lsZWN0aW9ubmUgdG91cyBsZXMgaXRlbXNcbiAgICAgKi9cbiAgICBzZWxlY3RBbGwoKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25TZWxlY3QodGhpcy5wcm9wcy5kYXRhU291cmNlLm1hcChpdGVtID0+IGl0ZW0ucm93SWQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEw6lzw6lsZWN0aW9ubmUgdG91cyBsZXMgaXRlbXNcbiAgICAgKi9cbiAgICBkZXNlbGVjdEFsbCgpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vblNlbGVjdChbXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIGhvcml6b250YWwgc2Nyb2xsICh3cmFwcGVyRGl2KVxuICAgICAqIC0gcmVwbGFjZSBlYWNoIGZpcnN0IGNlbGxzIGJvZHkgJiBoZWFkZXIgJiBhZGQgcmlnaHQgc2hhZG93c1xuICAgICAqL1xuICAgIGhhbmRsZUhvcml6b250YWxTY3JvbGwoZXZlbnQpIHtcbiAgICAgICAgLy8gY2FuY2VsIGlmIHNjcm9sbCBpcyBmcm9tIHRib2R5IE9SIGl0IGRpZG4ndCBjaGFuZ2VcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5ub2RlTmFtZSA9PT0gJ1RCT0RZJyB8fCB0aGlzLnNjcm9sbExlZnQgPT09IGV2ZW50LnRhcmdldC5zY3JvbGxMZWZ0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNjcm9sbExlZnQgPSBldmVudC50YXJnZXQuc2Nyb2xsTGVmdDtcblxuICAgICAgICAvLyBSZXBsYWNlIGxpdmUgZGF0YXMgbm90aWZpY2F0aW9uXG4gICAgICAgIHRoaXMucGxhY2VIb3Jpem9udGFsRmxvYXRpbmdFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIHZlcnRpY2FsIHNjcm9sbCAodGJvZHkpXG4gICAgICogLSBhZGQgYm90dG9tIHNoYWRvd1xuICAgICAqIC0gcGxhY2UgYmFjayB0byB0b3AgYnV0dG9uXG4gICAgICogLSByZXF1ZXN0IG5leHQgZGF0YXMgaWYgcmVhY2ggYm90dG9tXG4gICAgICovXG4gICAgaGFuZGxlVmVydGljYWxTY3JvbGwoZXZlbnQpIHtcbiAgICAgICAgLy8gY2FuY2VsIGlmIHNjcm9sbCBpcyBub3QgZnJvbSB0Ym9keSBPUiBpdCBkaWRuJ3QgY2hhbmdlXG4gICAgICAgIGlmIChldmVudC50YXJnZXQubm9kZU5hbWUgIT09ICdUQk9EWScgfHwgdGhpcy5zY3JvbGxUb3AgPT09IGV2ZW50LnRhcmdldC5zY3JvbGxUb3ApIHJldHVybjtcblxuICAgICAgICBjb25zdCBzY3JvbGxpbmdVcCA9IHRoaXMuc2Nyb2xsVG9wID4gZXZlbnQudGFyZ2V0LnNjcm9sbFRvcDtcblxuICAgICAgICB0aGlzLnNjcm9sbFRvcCA9IGV2ZW50LnRhcmdldC5zY3JvbGxUb3A7XG5cbiAgICAgICAgLy8gQWRkIGJvdHRvbSBzaGFkb3cgdG8gaGVhZGVyIHJvd1xuICAgICAgICBjb25zdCBzaGFkb3dCb3R0b20gPSAnMHB4IDBweCAycHggMHB4IHJnYmEoMTI4LCAxMjgsIDEyOCwgMC4zMiknO1xuICAgICAgICB0aGlzLnRIZWFkLnN0eWxlWydib3gtc2hhZG93J10gPSB0aGlzLnNjcm9sbFRvcCA+IDAgPyBzaGFkb3dCb3R0b20gOiAnbm9uZSc7XG4gICAgICAgIGNvbnN0IHJvd0hlaWdodCA9IHRoaXMucHJvcHMuZGVuc2UgPyBjc3QuQ0VMTF9IRUlHSFRfREVOU0UgOiBjc3QuQ0VMTF9IRUlHSFQ7XG5cbiAgICAgICAgLy8gQWRkIGJhY2sgdG8gdG9wIGJ1dHRvbiB3aGVuIHNjcm9sbGluZyB1cCBmcm9tIGNvbnN0YW50IGRlZmluZWQgc2Nyb2xsIHBvaW50XG4gICAgICAgIC8vIGlmIHRoZXJlIG5vdCBsaXZlIGRhdGEgbm90aWZpY2F0aW9uXG4gICAgICAgIGlmICh0aGlzLnByb3BzLmNvdW50TGl2ZURhdGFzID09PSAwKSB7XG4gICAgICAgICAgICBpZiAoc2Nyb2xsaW5nVXAgJiYgdGhpcy5zY3JvbGxUb3AgPj0gY3N0Lk5CX1JPV1NfQkFDS19UT19UT1AgKiByb3dIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJhY2tUb1RvcEJ1dHRvbi5zdHlsZS50b3AgPSBgJHtyb3dIZWlnaHQgKiAxLjV9IHB4YDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iYWNrVG9Ub3BCdXR0b24uc3R5bGUudG9wID0gYCR7LTk5OTk5fXB4YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGFuZGxlU3RpY2t5Um93UG9zaXRpb25zKCk7XG5cbiAgICAgICAgdGhpcy5pc1Njcm9sbFRvQm90dG9tKFxuICAgICAgICAgICAgdGhpcy5zY3JvbGxUb3AgPT09IGV2ZW50LnRhcmdldC5zY3JvbGxIZWlnaHQgLSB0aGlzLnRCb2R5Lm9mZnNldEhlaWdodCxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBoYW5kbGVTdGlja3lSb3dQb3NpdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IHRhYmxlQm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGAke3RoaXMucHJvcHMudGFiSWR9LWJvZHlgKTtcbiAgICAgICAgY29uc3Qgc3RpY2t5Um93cyA9IHRhYmxlQm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzdGlja3lHcm91cEJ5Jyk7XG4gICAgICAgIGNvbnN0IHJvd0hlaWdodCA9IHRoaXMucHJvcHMuZGVuc2UgPyBjc3QuQ0VMTF9IRUlHSFRfREVOU0UgOiBjc3QuQ0VMTF9IRUlHSFQ7XG4gICAgICAgIGlmIChzdGlja3lSb3dzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChzdGlja3lSb3dzLCAoc3RpY2t5Um93LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZha2VUciA9IHN0aWNreVJvdy5uZXh0U2libGluZztcbiAgICAgICAgICAgICAgICBpZiAodGFibGVCb2R5LnNjcm9sbFRvcCA+IHRoaXMuZ3JvdXBCeVJvd3NQb3NpdGlvbnNbaW5kZXhdKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENhbGN1bCBkZSBsYSBwb3NpdGlvbiBkdSAncGlubmVkJyBpdGVtXG4gICAgICAgICAgICAgICAgICAgIC8vIHBvc2l0aW9ubmVtZW50IGp1c3RlIGVuIGRlc3NvdXMgZHUgaGVhZGVyXG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBzdGlja3lSb3dzW2luZGV4ICsgMV0gPT09ICd1bmRlZmluZWQnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZUJvZHkuc2Nyb2xsVG9wIDwgc3RpY2t5Um93c1tpbmRleCArIDFdLm9mZnNldFRvcFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpIGxhIHByb2NoYWluZSBsaWduZSBlc3QgYXVzc2kgdW4gJ3Bpbm5lZCcgaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlsIHBvdXNzZSBsZSBwcsOpY8OpZGVudCB2ZXJzIGxlIGhhdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy5ncm91cEJ5Um93c1Bvc2l0aW9uc1tpbmRleCArIDFdICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBCeVJvd3NQb3NpdGlvbnNbaW5kZXggKyAxXSAtIHRhYmxlQm9keS5zY3JvbGxUb3AgPFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd0hlaWdodCAtIDEwXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlja3lSb3cuc3R5bGUudG9wID0gYCR7dGFibGVCb2R5LnNjcm9sbFRvcCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ncm91cEJ5Um93c1Bvc2l0aW9uc1tpbmRleCArIDFdIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZUJvZHkuc2Nyb2xsVG9wIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dIZWlnaHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB4YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5Um93LnN0eWxlLnRvcCA9IGAke3RhYmxlQm9keS5zY3JvbGxUb3B9cHhgO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RpY2t5Um93LnN0eWxlLnBvc2l0aW9uICE9PSAnYWJzb2x1dGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVwb3NpdGlvbm5lbWVudCBkZXMgw6lsw6ltZW50cyBkYW5zIHVuZSByb3cgZW4gcG9zaXRpb24gYWJzb2x1dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlja3lSb3cuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZha2VUci5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5Um93LnN0eWxlLmhlaWdodCA9IHRoaXMucHJvcHMuZGVuc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBgJHtjc3QuQ0VMTF9IRUlHSFRfREVOU0UgLSA4fXB4YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGAke2NzdC5DRUxMX0hFSUdIVCAtIDh9cHhgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreVJvdy5xdWVyeVNlbGVjdG9yKCdidXR0b24nKS5zdHlsZS5tYXhIZWlnaHQgPSB0aGlzLnByb3BzLmRlbnNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYCR7Y3N0LkNFTExfSEVJR0hUX0RFTlNFIC0gMTZ9cHhgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYCR7Y3N0LkNFTExfSEVJR0hUIC0gMTZ9cHhgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreVJvdy5xdWVyeVNlbGVjdG9yKCdidXR0b24nKS5zdHlsZS5taW5IZWlnaHQgPSB0aGlzLnByb3BzLmRlbnNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYCR7Y3N0LkNFTExfSEVJR0hUX0RFTlNFIC0gMTZ9cHhgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYCR7Y3N0LkNFTExfSEVJR0hUIC0gMTZ9cHhgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreVJvdy5xdWVyeVNlbGVjdG9yKCdidXR0b24nKS5zdHlsZS50b3AgPSAnLTNweCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5Um93LnF1ZXJ5U2VsZWN0b3IoJyNzdGlja3lSb3dDb250ZW50Jykuc3R5bGUudG9wID0gIXRoaXMucHJvcHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRlbnNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJzRweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnLTNweCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5Um93LnF1ZXJ5U2VsZWN0b3IoJ3RkJykuc3R5bGUuaGVpZ2h0ID0gdGhpcy5wcm9wcy5kZW5zZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGAke2NzdC5DRUxMX0hFSUdIVF9ERU5TRSAtIDh9cHhgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYCR7Y3N0LkNFTExfSEVJR0hUIC0gOH1weGA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMuZGVuc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5Um93LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpLnN0eWxlLnRvcCA9ICcwcHgnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlja3lSb3cucXVlcnlTZWxlY3RvcignYnV0dG9uIHNwYW4nKS5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreVJvdy5xdWVyeVNlbGVjdG9yKCdidXR0b24gc3BhbicpLnN0eWxlLnRvcCA9ICctNHB4JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0aWNreVJvdy5zdHlsZS5wb3NpdGlvbiAhPT0gJ3JlbGF0aXZlJykge1xuICAgICAgICAgICAgICAgICAgICAvLyBSZXBvc2l0aW9ubmVtZW50IG5vcm1hbFxuICAgICAgICAgICAgICAgICAgICBzdGlja3lSb3cuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgICAgICAgICAgICAgICAgICBzdGlja3lSb3cuc3R5bGUudG9wID0gJzBweCc7XG4gICAgICAgICAgICAgICAgICAgIGZha2VUci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgICAgICAgICBzdGlja3lSb3cuc3R5bGUuaGVpZ2h0ID0gdGhpcy5wcm9wcy5kZW5zZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBgJHtjc3QuQ0VMTF9IRUlHSFRfREVOU0V9cHhgXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGAke2NzdC5DRUxMX0hFSUdIVH1weGA7XG4gICAgICAgICAgICAgICAgICAgIHN0aWNreVJvdy5xdWVyeVNlbGVjdG9yKCcjc3RpY2t5LWJhZGdlJykuc3R5bGUudG9wID0gJzBweCc7XG4gICAgICAgICAgICAgICAgICAgIHN0aWNreVJvdy5xdWVyeVNlbGVjdG9yKCcjc3RpY2t5Um93Q29udGVudCcpLnN0eWxlLnRvcCA9ICcycHgnO1xuICAgICAgICAgICAgICAgICAgICBzdGlja3lSb3cucXVlcnlTZWxlY3RvcigndGQnKS5zdHlsZS5oZWlnaHQgPSB0aGlzLnByb3BzLmRlbnNlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGAke2NzdC5DRUxMX0hFSUdIVF9ERU5TRX1weGBcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYCR7Y3N0LkNFTExfSEVJR0hUfXB4YDtcbiAgICAgICAgICAgICAgICAgICAgc3RpY2t5Um93LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpLnN0eWxlLm1heEhlaWdodCA9IHRoaXMucHJvcHMuZGVuc2VcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYCR7Y3N0LkNFTExfSEVJR0hUX0RFTlNFIC0gMn1weGBcbiAgICAgICAgICAgICAgICAgICAgICAgIDogYCR7Y3N0LkNFTExfSEVJR0hUIC0gOH1weGA7XG4gICAgICAgICAgICAgICAgICAgIHN0aWNreVJvdy5xdWVyeVNlbGVjdG9yKCdidXR0b24nKS5zdHlsZS5taW5IZWlnaHQgPSB0aGlzLnByb3BzLmRlbnNlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGAke2NzdC5DRUxMX0hFSUdIVF9ERU5TRSAtIDJ9cHhgXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGAke2NzdC5DRUxMX0hFSUdIVCAtIDh9cHhgO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5kZW5zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5Um93LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbiBzcGFuJykuc3R5bGUudG9wID0gJzBweCc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNvbWUgZWxlbWVudCBtdXN0IGJlIHJlcGxhY2UgXCJtYW51YWxseVwiXG4gICAgICovXG4gICAgcGxhY2VIb3Jpem9udGFsRmxvYXRpbmdFbGVtZW50KCkge1xuICAgICAgICAvLyBsaXZlIGRhdGFzIG5vdGlmaWNhdGlvblxuICAgICAgICBpZiAodGhpcy5saXZlRGF0YVNwYW4pIHtcbiAgICAgICAgICAgIHRoaXMubGl2ZURhdGFTcGFuLnN0eWxlLmxlZnQgPVxuICAgICAgICAgICAgICAgIHRoaXMud3JhcHBlckRpdi5jbGllbnRXaWR0aCAvIDIgLSAxMDAgKyB0aGlzLnNjcm9sbExlZnQgKyAncHgnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVwbGFjZSBsZWZ0IHBhZGRpbmcgY2VsbHNcbiAgICAgICAgWy4uLnRoaXMudEJvZHlMZWZ0UGFkZGluZ0VsZW1lbnRzLCB0aGlzLnRIZWFkTGVmdFBhZGRpbmddLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBlbGVtZW50LnN0eWxlLmxlZnQgPSB0aGlzLnNjcm9sbExlZnQgKyAncHgnO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBUT0RPIC0gRklYXG4gICAgICAgIC8vIExlcyDDqWzDqW1lbnRzIGRlIGRyb2l0ZSBzb250IGTDqWNhbMOpcyBkZSAyMnB4IGxvcnNxdWUgZGUgbm91dmVsbGVzIGxpZ25lcyBzb250XG4gICAgICAgIC8vIHZpc2libGUgKGNoaWxkcmVuIG91IGRldGFpbHMpXG5cbiAgICAgICAgLy8gUmVwbGFjZSByaWdodCBwYWRkaW5nIGNlbGxzXG4gICAgICAgIFsuLi50aGlzLnRCb2R5UmlnaHRQYWRkaW5nRWxlbWVudHMsIHRoaXMudEhlYWRSaWdodFBhZGRpbmddLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBlbGVtZW50LnN0eWxlLnJpZ2h0ID1cbiAgICAgICAgICAgICAgICBNYXRoLm1heCgwLCB0aGlzLndyYXBwZXJTY3JvbGxPZmZzZXQgLSB0aGlzLnNjcm9sbExlZnQgLSB0aGlzLnRCb2R5U2Nyb2xsYmFyV2lkdGgpICsgJ3B4JztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gUmVwbGFjZSBmaXJzdCBjZWxscyAmIGFkZCByaWdodCBzaGFkb3dzXG4gICAgICAgIGlmICh0aGlzLnByb3BzLnN0aWNreSkge1xuICAgICAgICAgICAgY29uc3Qgc2hhZG93UmlnaHQgPSAnMXB4IDBweCAwcHggMHB4IHJnYmEoMTI4LCAxMjgsIDEyOCwgMC4zMiknO1xuICAgICAgICAgICAgWy4uLnRoaXMudEJvZHlGaXJzdEVsZW1lbnRzLCB0aGlzLnRIZWFkRmlyc3RdLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5sZWZ0ID0gdGhpcy5zY3JvbGxMZWZ0ICsgJ3B4JztcbiAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlWydib3gtc2hhZG93J10gPSB0aGlzLnNjcm9sbExlZnQgPiAwID8gc2hhZG93UmlnaHQgOiAnbm9uZSc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlcGxhY2UgY2VudGVyZWQgZWxlbWVudHMgKGVsZW1lbnRzIHdpZHRoIHNob3VsZCBiZSA1MCUgb2Ygd3JhcHBlcilcbiAgICAgICAgaWYgKHRoaXMudEZvb3RDZW50ZXJlZERpdikge1xuICAgICAgICAgICAgdGhpcy50Rm9vdENlbnRlcmVkRGl2LnN0eWxlLmxlZnQgPVxuICAgICAgICAgICAgICAgIE1hdGgucm91bmQodGhpcy53cmFwcGVyRGl2Lm9mZnNldFdpZHRoIC8gNCkgKyB0aGlzLnNjcm9sbExlZnQgKyAncHgnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmVwbGFjZSBzdGlja3lSb3dDb250ZW50XG4gICAgICAgIGNvbnN0IHRhYmxlQm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGAke3RoaXMucHJvcHMudGFiSWR9LWJvZHlgKTtcbiAgICAgICAgY29uc3Qgc3RpY2t5Um93Q29udGVudERpdiA9IHRhYmxlQm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzdGlja3lSb3dDb250ZW50Jyk7XG4gICAgICAgIGlmIChzdGlja3lSb3dDb250ZW50RGl2Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChzdGlja3lSb3dDb250ZW50RGl2LCBkaXYgPT4ge1xuICAgICAgICAgICAgICAgIGRpdi5zdHlsZS5sZWZ0ID0gYCR7dGhpcy53cmFwcGVyRGl2LnNjcm9sbExlZnQgK1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5wcm9wcy5zZWxlY3RhYmxlID8gMjUgOiAwKX1weGA7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVJlcXVlc3RMaXZlRGF0YXMoKSB7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgICAgICAgdGhpcy5wcm9wcy5yZXF1ZXN0TGl2ZURhdGFzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2Nyb2xsIGJhY2sgdG8gdGFibGUgdG9wXG4gICAgICovXG4gICAgc2Nyb2xsVG9Ub3AoKSB7XG4gICAgICAgIC8vIEhpZGUgYmFjayB0byB0b3AgYnV0dG9uXG4gICAgICAgIHRoaXMuYmFja1RvVG9wQnV0dG9uWydzdHlsZSddLnRvcCA9IC05OTk5OSArICdweCc7XG5cbiAgICAgICAgLy8gU2V0IHNjcm9sbCB0b3AgdG8gMFxuICAgICAgICB0aGlzLnRCb2R5LnNjcm9sbFRvcCA9IDA7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9wID0gMDtcbiAgICB9XG5cbiAgICBvcGVuT3JkZXJDb2x1bW5zTWVudShldmVudCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIG9yZGVyQ29sdW1uc0FuY2hvcjogZXZlbnQuY3VycmVudFRhcmdldCxcbiAgICAgICAgICAgIG9yZGVyQ29sdW1uc01lbnVPcGVuOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjbG9zZU9yZGVyQ29sdW1uc01lbnUoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgb3JkZXJDb2x1bW5zQW5jaG9yOiBudWxsLFxuICAgICAgICAgICAgb3JkZXJDb2x1bW5zTWVudU9wZW46IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHBhc3MgdG8gdGFibGUgYm9keSB0byBiZSBhZHZpc2VkIHdoZW4gbmV3IHJvd3MgYXJlIGR5bmFtaWNhbGx5IGFkZGVkIChleCBkZXRhaWwgcm93cylcbiAgICAgKiB3ZSBjYW4gdGhlbiB1cGRhdGUgb3VyIGxpc3Qgb2YgZmxvYXRpbmcgYm9keSBlbGVtZW50cyByZWZzXG4gICAgICoqL1xuICAgIGFkZE5ld1Jvd1JlZnMgPSAoKSA9PiB7XG4gICAgICAgIC8vIGRlbGF5ZWQgcmVmcyBnZXR0aW5nIHRvIGxldCB0aW1lIGF0IG5ldyByb3dzIHRvIGJ1aWxkIHVwXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGbG9hdGluZ0JvZHlFbGVtZW50UmVmcygpO1xuICAgICAgICAgICAgdGhpcy5wbGFjZUhvcml6b250YWxGbG9hdGluZ0VsZW1lbnQoKTtcbiAgICAgICAgfSwgMTApO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBTY3JvbGwganVzcXUnYXUgcHJvY2hhaW4gc3RpY2tSb3dcbiAgICAgKlxuICAgICAqIEBwYXJhbSBzdGlja3lSb3dJbmRleFxuICAgICAqL1xuICAgIGhhbmRsZU5leHRTdGlja3lSb3coc3RpY2t5Um93SW5kZXgpIHtcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBCeVJvd3NQb3NpdGlvbnMubGVuZ3RoIC0gMSA+IHN0aWNreVJvd0luZGV4KSB7XG4gICAgICAgICAgICBjb25zdCB0YWJsZUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgJHt0aGlzLnByb3BzLnRhYklkfS1ib2R5YCk7XG4gICAgICAgICAgICB0YWJsZUJvZHkuc2Nyb2xsVG9wID0gdGhpcy5ncm91cEJ5Um93c1Bvc2l0aW9uc1tzdGlja3lSb3dJbmRleCArIDFdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjbGFzc2VzLFxuICAgICAgICAgICAgdGFiSWQsXG4gICAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgICAgb3JkZXJlZENvbHVtbnMsXG4gICAgICAgICAgICBkYXRhU291cmNlLFxuICAgICAgICAgICAgb3JkZXJhYmxlLFxuICAgICAgICAgICAgb25Db2x1bW5zT3JkZXJVcGRhdGUsXG4gICAgICAgICAgICBtYW5kYXRvcnlDb2x1bW5JZCxcbiAgICAgICAgICAgIHNlbGVjdGFibGUsXG4gICAgICAgICAgICBzZWxlY3RlZElkTGlzdCxcbiAgICAgICAgICAgIG9uUm93Q2xpY2ssXG4gICAgICAgICAgICBzb3J0YWJsZSxcbiAgICAgICAgICAgIHNvcnRlZENvbHVtbklkLFxuICAgICAgICAgICAgc29ydERpcmVjdGlvbixcbiAgICAgICAgICAgIG9uU29ydCxcbiAgICAgICAgICAgIGZpbHRlcmFibGUsXG4gICAgICAgICAgICBvbkZpbHRlckNoYW5nZSxcbiAgICAgICAgICAgIGluZmluaXRlU2Nyb2xsLFxuICAgICAgICAgICAgaGFzTmV4dERhdGFzLFxuICAgICAgICAgICAgcmVxdWVzdE5leHREYXRhcyxcbiAgICAgICAgICAgIGNvdW50TGl2ZURhdGFzLFxuICAgICAgICAgICAgZGF0ZUxvY2FsZSxcbiAgICAgICAgICAgIG51bWJlckxvY2FsZSxcbiAgICAgICAgICAgIGRlbnNlLFxuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgc3RpY2t5LFxuICAgICAgICAgICAgdHJhbnNsYXRpb25zLFxuICAgICAgICAgICAgdmlldyxcbiAgICAgICAgICAgIGdyb3VwQnksXG4gICAgICAgICAgICBsb29rdXBDb2x1bW5zLFxuICAgICAgICAgICAgbG9hZGluZyxcbiAgICAgICAgICAgIGZpeGVkQ29sdW1uV2lkdGgsXG4gICAgICAgICAgICBkaXNhYmxlQ29udGV4dE1lbnUsXG4gICAgICAgICAgICBmb290ZXJDb250ZW50LFxuICAgICAgICAgICAgZGV0YWlsUm93c09wdGlvbnMsXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGNvbnN0IHsgZGF0ZVVwZGF0ZSwgaXNTY3JvbGxUb0JvdHRvbSwgZ3JvdXBCeUlkcyB9ID0gdGhpcy5zdGF0ZTtcblxuICAgICAgICBjb25zdCBoZWFkZXJIZWlnaHQgPSBkZW5zZSA/IGNzdC5DRUxMX0hFQURFUl9IRUlHSFRfREVOU0UgOiBjc3QuQ0VMTF9IRUFERVJfSEVJR0hUO1xuXG4gICAgICAgIGxldCBuYkNvbHVtbnNEaXNwbGF5ZWQgPSAwO1xuICAgICAgICBvcmRlcmVkQ29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgICBpZiAoY29sdW1uLmRpc3BsYXllZCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBuYkNvbHVtbnNEaXNwbGF5ZWQgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLnJvb3R9PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgaWQ9e3RhYklkfVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMudGFibGVXcmFwcGVyfVxuICAgICAgICAgICAgICAgICAgICByZWY9e2RpdiA9PiB0aGlzLndyYXBwZXJEaXYgPSBkaXZ9XG4gICAgICAgICAgICAgICAgICAgIG9uU2Nyb2xsPXt0aGlzLmhhbmRsZUhvcml6b250YWxTY3JvbGx9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8VGFibGUgY2xhc3NOYW1lPXtjbGFzc2VzLnRhYmxlfSBzdHlsZT17eyBoZWlnaHQ6IGhlaWdodCB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxIaVRhYmxlSGVhZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM9e2NvbHVtbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXJlZENvbHVtbnM9e29yZGVyZWRDb2x1bW5zfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U9e2RhdGFTb3VyY2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0YWJsZT17c2VsZWN0YWJsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZElkTGlzdD17c2VsZWN0ZWRJZExpc3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMudG9nZ2xlQWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlPXtzb3J0YWJsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWRDb2x1bW5JZD17c29ydGVkQ29sdW1uSWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydERpcmVjdGlvbj17c29ydERpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNvcnQ9e29uU29ydH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJhYmxlPXtmaWx0ZXJhYmxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmlsdGVyQ2hhbmdlPXtvbkZpbHRlckNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmFibGU9e29yZGVyYWJsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbHVtbnNPcmRlclVwZGF0ZT17b25Db2x1bW5zT3JkZXJVcGRhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuZGF0b3J5Q29sdW1uSWQ9e21hbmRhdG9yeUNvbHVtbklkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUmVxdWVzdExpdmVEYXRhcz17dGhpcy5oYW5kbGVSZXF1ZXN0TGl2ZURhdGFzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50TGl2ZURhdGFzPXtjb3VudExpdmVEYXRhc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlTG9jYWxlPXtkYXRlTG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlckxvY2FsZT17bnVtYmVyTG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbnNlPXtkZW5zZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9e2hlYWRlckhlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlja3k9e3N0aWNreX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3PXt2aWV3fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9ucz17dHJhbnNsYXRpb25zfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2t1cENvbHVtbnM9e2xvb2t1cENvbHVtbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWRDb2x1bW5XaWR0aD17Zml4ZWRDb2x1bW5XaWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8SGlUYWJsZUJvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJJZD17dGFiSWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucz17Y29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmVkQ29sdW1ucz17b3JkZXJlZENvbHVtbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZT17ZGF0YVNvdXJjZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RhYmxlPXtzZWxlY3RhYmxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSWRMaXN0PXtzZWxlY3RlZElkTGlzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWRDb2x1bW5JZD17c29ydGVkQ29sdW1uSWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMudG9nZ2xlSXRlbX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlVXBkYXRlPXtkYXRlVXBkYXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVMb2NhbGU9e2RhdGVMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyTG9jYWxlPXtudW1iZXJMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVuc2U9e2RlbnNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD17aGVpZ2h0IC0gaGVhZGVySGVpZ2h0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreT17c3RpY2t5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXc9e3ZpZXd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Sb3dDbGljaz17b25Sb3dDbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNjcm9sbD17dGhpcy5oYW5kbGVWZXJ0aWNhbFNjcm9sbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGROZXdSb3dSZWZzPXt0aGlzLmFkZE5ld1Jvd1JlZnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25zPXt0cmFuc2xhdGlvbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBCeT17Z3JvdXBCeX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrTmV4dD17dGhpcy5oYW5kbGVOZXh0U3RpY2t5Um93fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwQnlJZHM9e2dyb3VwQnlJZHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwQ29sdW1ucz17bG9va3VwQ29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkQ29sdW1uV2lkdGg9e2ZpeGVkQ29sdW1uV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZUNvbnRleHRNZW51PXtkaXNhYmxlQ29udGV4dE1lbnV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsUm93c09wdGlvbnM9e2RldGFpbFJvd3NPcHRpb25zfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpbmZpbml0ZVNjcm9sbCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpVGFibGVGb290ZXJTY3JvbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSWQ9e3RhYklkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNOZXh0RGF0YXM9e2hhc05leHREYXRhc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdE5leHREYXRhcz17cmVxdWVzdE5leHREYXRhc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4QXV0b1JlcXVlc3Q9ezN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2Nyb2xsVG9Cb3R0b209e2lzU2Nyb2xsVG9Cb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9ucz17dHJhbnNsYXRpb25zfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgeyFpbmZpbml0ZVNjcm9sbCAmJiBmb290ZXJDb250ZW50ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlUYWJsZUZvb3RlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYkNvbHVtbnNEaXNwbGF5ZWQ9e25iQ29sdW1uc0Rpc3BsYXllZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldz17dmlld31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmb290ZXJDb250ZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSGlUYWJsZUZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvVGFibGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPEhpVGFibGVDb250ZXh0TWVudVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSWQ9e3RhYklkfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25TZWFyY2g9e3RoaXMucHJvcHMub25TZWFyY2h9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblJlZGlyZWN0PXt0aGlzLnByb3BzLm9uUmVkaXJlY3R9XG4gICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BiYWNrLXRvLXRvcC1idXR0b24gJHtjbGFzc2VzLmJhY2tUb1RvcEJ1dHRvbkNvbnRhaW5lcn1gfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxIaUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJyYWlzZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmJhY2tUb1RvcEJ1dHRvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLnNjcm9sbFRvVG9wKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93VXAgY2xhc3NOYW1lPXtjbGFzc2VzLmJhY2tUb1RvcEJ1dHRvbkFycm93fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2xhdGlvbnMuYmFja190b190b3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93VXAgY2xhc3NOYW1lPXtjbGFzc2VzLmJhY2tUb1RvcEJ1dHRvbkFycm93fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9IaUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZXMoc3R5bGVzLCB7IHdpdGhUaGVtZTogdHJ1ZSwgbmFtZTogJ0htdWlIaVRhYmxlJyB9KShIaVRhYmxlKTtcbiJdfQ==
|
31263
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9IaVRhYmxlL0hpVGFibGUuanMiXSwibmFtZXMiOlsiY3N0Iiwic3R5bGVzIiwicm9vdCIsInBvc2l0aW9uIiwiYmFja2dyb3VuZENvbG9yIiwidGhlbWUiLCJwYWxldHRlIiwiYmFja2dyb3VuZDMiLCJ0YWJsZVdyYXBwZXIiLCJvdmVyZmxvd1giLCJvdmVyZmxvd1kiLCJmaWx0ZXIiLCJ0b3AiLCJsZWZ0IiwiY3Vyc29yIiwidGFibGUiLCJ3aWR0aCIsIm92ZXJmbG93IiwiYm9yZGVyQ29sbGFwc2UiLCJ6SW5kZXgiLCJiYWNrVG9Ub3BCdXR0b25Db250YWluZXIiLCJ0ZXh0QWxpZ24iLCJoZWlnaHQiLCJiYWNrVG9Ub3BCdXR0b24iLCJiYWNrVG9Ub3BCdXR0b25BcnJvdyIsIm1hcmdpbiIsIk1BTkRBVE9SWV9DT0xVTU5fRVJST1JfTUVTU0FHRSIsIlNPUlRFRF9DT0xVTU5fRVJST1JfTUVTU0FHRSIsIkhpVGFibGUiLCJwcm9wcyIsInN0YXRlIiwiZGF0ZVVwZGF0ZSIsIkRhdGUiLCJub3ciLCJpc1Njcm9sbFRvQm90dG9tIiwiZ3JvdXBCeUlkcyIsImdyb3VwQnkiLCJkYXRhU291cmNlIiwibWFwIiwidmFsdWUiLCJyb3ciLCJkYXRhcyIsImRhdGUiLCJpc0Zpbml0ZSIsInN1YnN0ciIsImhhc093blByb3BlcnR5IiwicHVzaCIsIm9wZW5PcmRlckNvbHVtbnNNZW51IiwiYmluZCIsImNsb3NlT3JkZXJDb2x1bW5zTWVudSIsInRvZ2dsZUl0ZW0iLCJ0b2dnbGVBbGwiLCJzZWxlY3RBbGwiLCJkZXNlbGVjdEFsbCIsImhhbmRsZUhvcml6b250YWxTY3JvbGwiLCJoYW5kbGVWZXJ0aWNhbFNjcm9sbCIsInBsYWNlSG9yaXpvbnRhbEZsb2F0aW5nRWxlbWVudCIsInNjcm9sbFRvVG9wIiwiaGFuZGxlUmVxdWVzdExpdmVEYXRhcyIsImhhbmRsZU5leHRTdGlja3lSb3ciLCJoYW5kbGVTdGlja3lSb3dQb3NpdGlvbnMiLCJ3cmFwcGVyU2Nyb2xsT2Zmc2V0Iiwid3JhcHBlckRpdiIsInNjcm9sbFdpZHRoIiwib2Zmc2V0V2lkdGgiLCJ0SGVhZCIsInF1ZXJ5U2VsZWN0b3IiLCJ0SGVhZExlZnRQYWRkaW5nIiwidEhlYWRSaWdodFBhZGRpbmciLCJ0SGVhZEZpcnN0IiwidEJvZHkiLCJ0Rm9vdCIsInRGb290Q2VudGVyZWREaXYiLCJ1cGRhdGVGbG9hdGluZ0JvZHlFbGVtZW50UmVmcyIsInN0eWxlIiwiTWF0aCIsInJvdW5kIiwiYm90dG9tIiwidXBkYXRlU3RpY2t5Um93c1Bvc2l0aW9uIiwicHJldlByb3BzIiwicHJldlN0YXRlIiwicHJldkNvbnRleHQiLCJvcmRlcmVkQ29sdW1ucyIsImNvbElkIiwidEJvZHlGaXJzdEVsZW1lbnRzIiwicXVlcnlTZWxlY3RvckFsbCIsImxlbmd0aCIsImNvdW50TGl2ZURhdGFzIiwibGl2ZURhdGFTcGFuIiwic2V0U3RhdGUiLCJkZW5zZSIsInNvcnRlZENvbHVtbklkIiwic29ydERpcmVjdGlvbiIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsIm9mZnNldEhlaWdodCIsInJvd0hlaWdodCIsIkNFTExfSEVJR0hUX0RFTlNFIiwiQ0VMTF9IRUlHSFQiLCJncm91cEJ5Um93c1Bvc2l0aW9ucyIsInRhYmxlQm9keSIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJ0YWJJZCIsInN0aWNreVJvd3MiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJjYWxsIiwic3RpY2t5Um93IiwibmV4dFNpYmxpbmciLCJvZmZzZXRUb3AiLCJpdGVtIiwic2VsZWN0ZWRJZExpc3QiLCJpbmNsdWRlcyIsInJvd0lkIiwib25TZWxlY3QiLCJpdGVtSWQiLCJldmVudCIsInRhcmdldCIsIm5vZGVOYW1lIiwic2Nyb2xsTGVmdCIsInNjcm9sbGluZ1VwIiwic2hhZG93Qm90dG9tIiwiTkJfUk9XU19CQUNLX1RPX1RPUCIsImluZGV4IiwiZmFrZVRyIiwiZGlzcGxheSIsIm1heEhlaWdodCIsIm1pbkhlaWdodCIsImNsaWVudFdpZHRoIiwidEJvZHlMZWZ0UGFkZGluZ0VsZW1lbnRzIiwiZm9yRWFjaCIsImVsZW1lbnQiLCJ0Qm9keVJpZ2h0UGFkZGluZ0VsZW1lbnRzIiwicmlnaHQiLCJtYXgiLCJ0Qm9keVNjcm9sbGJhcldpZHRoIiwic3RpY2t5Iiwic2hhZG93UmlnaHQiLCJzdGlja3lSb3dDb250ZW50RGl2IiwiZGl2Iiwic2VsZWN0YWJsZSIsInJlcXVlc3RMaXZlRGF0YXMiLCJvcmRlckNvbHVtbnNBbmNob3IiLCJjdXJyZW50VGFyZ2V0Iiwib3JkZXJDb2x1bW5zTWVudU9wZW4iLCJzdGlja3lSb3dJbmRleCIsImNsYXNzZXMiLCJjb2x1bW5zIiwib3JkZXJhYmxlIiwib25Db2x1bW5zT3JkZXJVcGRhdGUiLCJtYW5kYXRvcnlDb2x1bW5JZCIsIm9uUm93Q2xpY2siLCJzb3J0YWJsZSIsIm9uU29ydCIsImZpbHRlcmFibGUiLCJvbkZpbHRlckNoYW5nZSIsImluZmluaXRlU2Nyb2xsIiwiaGFzTmV4dERhdGFzIiwicmVxdWVzdE5leHREYXRhcyIsImRhdGVMb2NhbGUiLCJudW1iZXJMb2NhbGUiLCJ0cmFuc2xhdGlvbnMiLCJ2aWV3IiwibG9va3VwQ29sdW1ucyIsImxvYWRpbmciLCJmaXhlZENvbHVtbldpZHRoIiwiZGlzYWJsZUNvbnRleHRNZW51IiwiZm9vdGVyQ29udGVudCIsImRldGFpbFJvd3NPcHRpb25zIiwiaGVhZGVySGVpZ2h0IiwiQ0VMTF9IRUFERVJfSEVJR0hUX0RFTlNFIiwiQ0VMTF9IRUFERVJfSEVJR0hUIiwibmJDb2x1bW5zRGlzcGxheWVkIiwiY29sdW1uIiwiZGlzcGxheWVkIiwidGFibGVIZWFkIiwiYWRkTmV3Um93UmVmcyIsInRhYmxlRm9vdGVyU2Nyb2xsIiwib25TZWFyY2giLCJvblJlZGlyZWN0IiwiYmFja190b190b3AiLCJDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJvYmplY3QiLCJpc1JlcXVpcmVkIiwibnVtYmVyIiwiYXJyYXkiLCJzdHJpbmciLCJib29sIiwibm9kZSIsImZ1bmMiLCJvbmVPZiIsImRlZmF1bHRQcm9wcyIsIndyYXBwZXJXaWR0aCIsInNldFRpbWVvdXQiLCJ3aXRoVGhlbWUiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFFQTs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOztJQUFZQSxHOztBQUNaOzs7Ozs7Ozs7Ozs7Ozs7O0FBRU8sSUFBTUMsMEJBQVMsU0FBVEEsTUFBUztBQUFBLFdBQVU7QUFDNUJDLGNBQU07QUFDRkMsc0JBQVUsVUFEUjtBQUVGQyw2QkFBaUJDLE1BQU1DLE9BQU4sQ0FBY0M7QUFGN0IsU0FEc0I7QUFLNUJDLHNCQUFjO0FBQ1ZDLHVCQUFXLE1BREQ7QUFFVkMsdUJBQVc7QUFGRCxTQUxjO0FBUzVCQyxnQkFBUTtBQUNKUixzQkFBVSxVQUROO0FBRUpTLGlCQUFLLENBRkQ7QUFHSkMsa0JBQU0sQ0FIRjtBQUlKQyxvQkFBUTtBQUpKLFNBVG9CO0FBZTVCQyxlQUFPO0FBQ0haLHNCQUFVLFVBRFA7QUFFSGEsbUJBQU8sTUFGSjtBQUdIQyxzQkFBVSxRQUhQO0FBSUhDLDRCQUFnQixVQUpiO0FBS0hkLDZCQUFpQkMsTUFBTUMsT0FBTixDQUFjQyxXQUw1QjtBQU1IWSxvQkFBUTtBQU5MLFNBZnFCO0FBdUI1QkMsa0NBQTBCO0FBQ3RCakIsc0JBQVUsVUFEWTtBQUV0QmEsbUJBQU8sTUFGZTtBQUd0QkssdUJBQVcsUUFIVztBQUl0QkMsb0JBQVEsRUFKYztBQUt0QlYsaUJBQUssQ0FBQztBQUxnQixTQXZCRTtBQThCNUJXLHlCQUFpQjtBQUNiSixvQkFBUTtBQURLLFNBOUJXO0FBaUM1QkssOEJBQXNCO0FBQ2xCRixvQkFBUSxFQURVO0FBRWxCTixtQkFBTyxFQUZXO0FBR2xCYixzQkFBVSxVQUhRO0FBSWxCUyxpQkFBSyxDQUFDLENBSlk7QUFLbEJhLG9CQUFRO0FBTFU7QUFqQ00s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QUFYLENBQTRCLG9CQUE1QixDQUExQjtBQUNILEs7O1NBa1JENkYsYSxHQUFnQixZQUFNO0FBQ2xCO0FBQ0FrQixtQkFBVyxZQUFNO0FBQ2IsbUJBQUszSCw2QkFBTDtBQUNBLG1CQUFLakIsOEJBQUw7QUFDSCxTQUhELEVBR0csRUFISDtBQUlILEs7OztrQkE4S1Usd0JBQVd2RCxNQUFYLEVBQW1CLEVBQUVvTSxXQUFXLElBQWIsRUFBbUJDLE1BQU0sYUFBekIsRUFBbkIsRUFBNkQxSyxPQUE3RCxDIiwiZmlsZSI6IkhpVGFibGUuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvbWZhemlvL2Rldi9wcm9qZWN0cy9oaXBheS1tYXRlcmlhbC11aSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFRhYmxlIGZyb20gJ21hdGVyaWFsLXVpL1RhYmxlJztcbmltcG9ydCBBcnJvd1VwIGZyb20gJ21kaS1tYXRlcmlhbC11aS9BcnJvd1VwJztcbmltcG9ydCBpc1JlcXVpcmVkSWYgZnJvbSAncmVhY3QtcHJvcHR5cGUtY29uZGl0aW9uYWwtcmVxdWlyZSc7XG5pbXBvcnQgSGlCdXR0b24gZnJvbSAnLi4vSGlCdXR0b24nO1xuXG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnLi4vc3R5bGVzJztcbmltcG9ydCBIaVRhYmxlSGVhZCBmcm9tICcuL0hpVGFibGVIZWFkJztcbmltcG9ydCBIaVRhYmxlQm9keSBmcm9tICcuL0hpVGFibGVCb2R5JztcbmltcG9ydCBIaVRhYmxlRm9vdGVyU2Nyb2xsIGZyb20gJy4vSGlUYWJsZUZvb3RlclNjcm9sbCc7XG5pbXBvcnQgSGlUYWJsZUZvb3RlciBmcm9tICcuL0hpVGFibGVGb290ZXInO1xuaW1wb3J0ICogYXMgY3N0IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCBIaVRhYmxlQ29udGV4dE1lbnUgZnJvbSAnLi9IaVRhYmxlQ29udGV4dE1lbnUnO1xuXG5leHBvcnQgY29uc3Qgc3R5bGVzID0gdGhlbWUgPT4gKHtcbiAgICByb290OiB7XG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnBhbGV0dGUuYmFja2dyb3VuZDMsXG4gICAgfSxcbiAgICB0YWJsZVdyYXBwZXI6IHtcbiAgICAgICAgb3ZlcmZsb3dYOiAnYXV0bycsXG4gICAgICAgIG92ZXJmbG93WTogJ2hpZGRlbicsXG4gICAgfSxcbiAgICBmaWx0ZXI6IHtcbiAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgIHRvcDogMixcbiAgICAgICAgbGVmdDogMixcbiAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgfSxcbiAgICB0YWJsZToge1xuICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICBib3JkZXJDb2xsYXBzZTogJ2NvbGxhcHNlJyxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5wYWxldHRlLmJhY2tncm91bmQzLFxuICAgICAgICB6SW5kZXg6IDEwLFxuICAgIH0sXG4gICAgYmFja1RvVG9wQnV0dG9uQ29udGFpbmVyOiB7XG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgICBoZWlnaHQ6IDQ4LFxuICAgICAgICB0b3A6IC05OTk5OSxcbiAgICB9LFxuICAgIGJhY2tUb1RvcEJ1dHRvbjoge1xuICAgICAgICB6SW5kZXg6IDExLFxuICAgIH0sXG4gICAgYmFja1RvVG9wQnV0dG9uQXJyb3c6IHtcbiAgICAgICAgaGVpZ2h0OiAxOCxcbiAgICAgICAgd2lkdGg6IDE4LFxuICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgdG9wOiAtMixcbiAgICAgICAgbWFyZ2luOiAyLFxuICAgIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IE1BTkRBVE9SWV9DT0xVTU5fRVJST1JfTUVTU0FHRSA9XG4gICAgJ1ZvdXMgZGV2ZXogc2Fpc2lyIGxhIHByb3ByacOpdMOpIFwibWFuZGF0b3J5Q29sdW1uSWRcIiBwb3VyIGxlcyB0YWJsZWF1eCBcIm9yZGVyYWJsZVwiJztcbmV4cG9ydCBjb25zdCBTT1JURURfQ09MVU1OX0VSUk9SX01FU1NBR0UgPVxuICAgICdWb3VzIGRldmV6IHNhaXNpciBsYSBwcm9wcmnDqXTDqSBcInNvcnRlZENvbHVtbklkXCIgcG91ciBsZXMgdGFibGVhdXggXCJzb3J0YWJsZVwiJztcblxuLyoqXG4gKiBEaXNwbGF5IGEgbGlzdCBvZiBlbGVtZW50cyBpbiBhIHRhYmxlXG4gKiBUaGUgY2xpY2sgb24gRmlsdGVyVmFyaWFudCBvcGVucyBhIG1lbnUgdGhhdCBhbGxvd3MgdGhlIHVzZXJcbiAqIHRvIGZpbHRlciBieSB2YWx1ZSBvciB0byBvcmRlciBieSBhIHNwZWNpZmljIGNvbHVtblxuICpcbiAqIFJlbmRlcmVyIGJlaGF2aW9yczpcbiAqIC0gV2lkdGhzOlxuICogICAgICAtIGFsbCBjZWxscyB0eXBlcyBoYXZlIGRlZmF1bHQgd2lkdGggc2l6ZSAocHgpIGZvciBlYWNoIGtpbmQgb2YgdmlldyAoTC9NL1MpLlxuICogICAgICAtIGlmIHZpZXcgaXNuJ3Qgc2V0IHdlIHVzZSB0aGUgbGFyZ2VzdCBvbmUgKGxhcmdlKS5cbiAqICAgICAgLSBjZWxsIHdpZHRoIGNhbiBiZSBvdmVycmlkZW4gYnkgY29sdW1uJ3MgcHJvcHMuXG4gKiAgICAgIC0gaWYgdGhlcmUgaXMgbm90IGVub3VnaCBzcGFjZSB0byByZW5kZXIgYWxsIGNlbGxzLFxuICogICAgICAgIHdlIHVzZSBob3Jpem9udGFsIHNjcm9sbCBhbmQgY2VsbHMgd2lkdGggYXJlIGZpeGVkXG4gKiAgICAgIC0gaWYgdGhlcmUgaXMgZW5vdWdoIHNwYWNlLCBubyBzY3JvbGwgYW5kIG9ubHkgdGhlIGZpcnN0IGNlbGwgKGNvbHVtbiksXG4gKiAgICAgIHdoaWNoIGlzIG5vdCBleHBsaWNpdGx5IHNldCBhcyB1bmZpeGVkIChmaXhlZFdpZHRoID0gZmFsc2UpLFxuICogICAgICBoYXMgbm90IGZpeGVkIHdpZHRoIGFuZCBtYXkgZW5sYXJnZSBoaXMgd2lkdGggdG8gZml0IGF2YWlsYWJsZSBzcGFjZS5cbiAqXG4gKiAtIEZpeGVkIEhlYWRlcjpcbiAqICAgICAgLSBoZWFkZXIgcm93cyBzaG91bGQgYmUgZml4ZWQgYW5kIGFsd2F5cyBiZSB2aXNpYmxlIG9uIGJvZHkgc2Nyb2xsLlxuICogICAgICAtIHZlcnRpY2FsIHNjcm9sbGJhciBzaG91bGQgYmUgaGlkZGVuXG4gKiAgICAgIC0gaWYgbmJSb3dzICogY2VsbEhlaWdodCA+IHRhYmxlSGVpZ2h0LFxuICogICAgICAgIHdlIHZpcnR1YWxseSBlbmxhcmdlIHRoZSB0YWJsZSB0aGVuIGNyb3AgYXJiaXRyYXJ5IHdpZHRoIHRvIGhpZGUgdGhlIHNjcm9sbGJhci5cbiAqICAgICAgYXMgZWFjaCBicm93c2VycyBtYXkgaGF2ZSBkaWZmZXJlbnQgc2Nyb2xsYmFyIHdpZHRocyxcbiAqICAgICAgaXQgbWF5IHRyb3VibGUgY29sdW1uIGhlYWRlciBhbGlnbm1lbnQuXG4gKi9cbmNsYXNzIEhpVGFibGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAgIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVc2VmdWwgdG8gZXh0ZW5kIHRoZSBzdHlsZSBhcHBsaWVkIHRvIGNvbXBvbmVudHMuXG4gICAgICAgICAqL1xuICAgICAgICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgICAvKipcbiAgICAgICAgICogQ29sb25uZXMgZHUgdGFibGVhdSAobGFiZWwsIGxhcmdldXIsIGRvbm7DqWVzLCAuLi4gKVxuICAgICAgICAgKi9cbiAgICAgICAgY29sdW1uczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgICAvKipcbiAgICAgICAgICogTm9tYnJlIGRlIG5vdXZlbGxlcyBkb25uw6llcyBkaXNwb25pYmxlcyAobGl2ZSlcbiAgICAgICAgICovXG4gICAgICAgIGNvdW50TGl2ZURhdGFzOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgICAvKipcbiAgICAgICAgICogVGFibGVhdSBkZXMgZG9ubsOpZXNcbiAgICAgICAgICovXG4gICAgICAgIGRhdGFTb3VyY2U6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICAgICAgICAvKipcbiAgICAgICAgICogTG9jYWxlIHV0aWxpc8OpIHBvdXIgbGUgZm9ybWF0IGRlcyBkYXRlc1xuICAgICAgICAgKi9cbiAgICAgICAgZGF0ZUxvY2FsZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE9wdGlvbnMgdXRpbGlzw6llcyBwb3VyIGTDqWNyaXJlIGxlIGNvbXBvcnRlbWVudCBkZSBsaWduZXMgZGUgZMOpdGFpbHNcbiAgICAgICAgICogZXg6IHtcbiAgICAgICAgICogICAgIHBheW1lbnRfb3BlcmF0aW9uOiB7XG4gICAgICAgICAqICAgICAgICAgYW5jaG9yOiAndHJhbnNhY3Rpb25faWQnXG4gICAgICAgICAqICAgICB9XG4gICAgICAgICAqIH1cbiAgICAgICAgICogZGFucyBjZXQgZXhlbXBsZSwgb24gdmV1dCBxdWUgbGVzIGxpZ25lcyBkZSBkw6l0YWlscyBkZSB0eXBlIHBheW1lbnRfb3BlcmF0aW9uXG4gICAgICAgICAqIHNvaWVudCBhZmZpY2hhYmxlIMOgIHBhcnRpciBkJ3VuIGNoaXAgYnV0dG9uIGRhbnMgbGVzIGNlbGx1bGVzIHRyYW5zYWN0aW9uX2lkXG4gICAgICAgICAqL1xuICAgICAgICBkZXRhaWxSb3dzT3B0aW9uczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlbnNpdMOpIGQnYWZmaWNoYWdlIChqb3VlIHN1ciBsYSBoYXV0ZXVyIGRlcyBsaWduZXMpXG4gICAgICAgICAqL1xuICAgICAgICBkZW5zZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBY3RpdmUvZMOpc2FjdGl2ZSBsZSBtZW51IGNvbnRleHR1ZWwgYXUgY2xpYyBkcm9pdCBzdXIgbGVzIGNlbGx1bGVzIGR1IHRhYmxlYXVcbiAgICAgICAgICovXG4gICAgICAgIGRpc2FibGVDb250ZXh0TWVudTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFjdGl2ZSBsZSBmaWx0cmUgc3VyIGxlcyBjb2xvbm5lcyBmaWx0cmFibGVzXG4gICAgICAgICAqL1xuICAgICAgICBmaWx0ZXJhYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZpeGUgbGEgdGFpbGxlIGRlcyBjb2xvbm5lcyBzZWxvbiBsZSB0eXBlIGRlIHZ1ZVxuICAgICAgICAgKiBTaW5vbiBsZXMgY29sb25uZXMgcydhZGFwdGVudCDDoCBsJ2VzcGFjZSBkaXNwb25pYmxlXG4gICAgICAgICAqL1xuICAgICAgICBmaXhlZENvbHVtbldpZHRoOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFqb3V0ZSB1biBmb290ZXIgYXZlYyBsZSBjb250ZW51IGZvb3RlckNvbnRlbnQgw6AgbCdpbnTDqXJpZXVyXG4gICAgICAgICAqL1xuICAgICAgICBmb290ZXJDb250ZW50OiBQcm9wVHlwZXMubm9kZSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElkIGRlIGxhIGNvbG9ubmUgcGFyIGxhcXVlbGxlIHNvbnQgcmVncm91cMOpIGxlcyDDqWzDqW1lbnRzXG4gICAgICAgICAqL1xuICAgICAgICBncm91cEJ5OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICAvKipcbiAgICAgICAgICogQWpvdXRlIGxlIGxvYWRlciBldCBsZSByZXF1ZXN0TmV4dERhdGFzIGVuIGZpbiBkZSB0YWJsZWF1IChzaSBpbmZpbml0ZVNjcm9sbCBhY3RpdsOpKVxuICAgICAgICAgKi9cbiAgICAgICAgaGFzTmV4dERhdGFzOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEhhdXRldXIgZHUgdGFibGVhdSAocHgpXG4gICAgICAgICAqL1xuICAgICAgICBoZWlnaHQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBam91dGUgbCdpbmZpbml0ZSBzY3JvbGxcbiAgICAgICAgICovXG4gICAgICAgIGluZmluaXRlU2Nyb2xsOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIMOJdGF0IGR1IHRhYmxlYXUgZW4gY291cnMgZGUgY2hhcmdlbWVudCBkZXMgZG9ubsOpZXNcbiAgICAgICAgICovXG4gICAgICAgIGxvYWRpbmc6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogSWRlbnRpZmlhbnQgZGUgbGEgb3UgZGVzIGNvbG9ubmVzIHN1ciBsYS9sZXNxdWVsbGVzIGlsIHkgYSB1bmUgJ2xvb2t1cCcgc2VhcmNoXG4gICAgICAgICAqL1xuICAgICAgICBsb29rdXBDb2x1bW5zOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQb3VyIGxlcyB0YWJsZWF1eCBcIm9yZGVyYWJsZVwiIHVuaXF1ZW1lbnQgOiBJZCBkZSBsYSBjb2xvbm5lIG9ibGlnYXRvaXJlLFxuICAgICAgICAgKiBlbGxlIHNlcmEgdG91am91cnMgYWZmaWNow6llIGRhbnMgbGUgdGFibGVhdSBldCBuZSBwb3VycmEgcGFzIMOqdHJlIGNhY2jDqWUuXG4gICAgICAgICAqL1xuICAgICAgICBtYW5kYXRvcnlDb2x1bW5JZDogaXNSZXF1aXJlZElmKFxuICAgICAgICAgICAgUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgICAgICAgIHByb3BzID0+IHByb3BzLmhhc093blByb3BlcnR5KCdvcmRlcmFibGUnKSAmJiBwcm9wcy5vcmRlcmFibGUgPT09IHRydWUsXG4gICAgICAgICAgICBNQU5EQVRPUllfQ09MVU1OX0VSUk9SX01FU1NBR0UsXG4gICAgICAgICksXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMb2NhbGUgdXRpbGlzw6kgcG91ciBsZSBmb3JtYXQgZGVzIG5vbWJyZXNcbiAgICAgICAgICovXG4gICAgICAgIG51bWJlckxvY2FsZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIHF1aSBwcmVuZCBlbiBwYXJhbcOodHJlIGxlIHRhYmxlYXUgZGVzIGNvbG9ubmVzIG1pcyDDoCBqb3VyLlxuICAgICAgICAgKi9cbiAgICAgICAgb25Db2x1bW5zT3JkZXJVcGRhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICAvKipcbiAgICAgICAgICogRm9uY3Rpb24gZGUgY2FsbGJhY2sgc3VyIGxlIGZpbHRyZSBkJ3VuZSBjb2xvbm5lXG4gICAgICAgICAqIFBhc3NlIGwnaWQgZGUgbGEgY29sb25uZSBldCBsYSBsaXN0ZSBkZXMgaWQgZGVzIMOpbMOpbWVudHMgaW5jbHVzXG4gICAgICAgICAqL1xuICAgICAgICBvbkZpbHRlckNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayBhcHBlbMOpZSBhdSBjbGljIHN1ciBsJ2l0ZW0gcmVkaXJlY3Rpb25cbiAgICAgICAgICogZHUgbWVudSBjb250ZXh0dWVsIG91dmVydCBhdSBjbGljIGRyb2l0XG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSB7aW50fSBpZFxuICAgICAgICAgKi9cbiAgICAgICAgb25SZWRpcmVjdDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayBhdSBjbGljayBzdXIgdW5lIGxpZ25lXG4gICAgICAgICAqIFBhc3NlIGwnZWxlbWVudCAocm93KVxuICAgICAgICAgKi9cbiAgICAgICAgb25Sb3dDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayBhcHBlbMOpZSBhdSBjbGljIHN1ciBsZXMgaXRlbXMgZGUgcmVjaGVyY2hlXG4gICAgICAgICAqIGR1IG1lbnUgY29udGV4dHVlbCBvdXZlcnQgYXUgY2xpYyBkcm9pdFxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VhcmNoZWQgZmllbGRcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNlYXJjaGVkIHZhbHVlXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWFyY2ggdHlwZSAobG9va3VwLCBleGNsdWRlKVxuICAgICAgICAgKi9cbiAgICAgICAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICAvKipcbiAgICAgICAgICogRm9uY3Rpb24gZGUgY2FsbGJhY2sgc3VyIGxhIHPDqWxlY3Rpb24gZCd1bmUgbGlnbmVcbiAgICAgICAgICogKG91IHPDqWxlY3Rpb24vZMOpc2VsZWN0aW9uIGRlIHRvdXMgZGFucyBsZSBoZWFkZXIpXG4gICAgICAgICAqIFBhc3NlIGxhIGxpc3RlIGRlcyBpZCBkZXMgbGlnbmVzIHPDqWxlY3Rpb25uw6llcyAoc2VsZWN0ZWRJZExpc3QpXG4gICAgICAgICAqL1xuICAgICAgICBvblNlbGVjdDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayBzdXIgbGUgdHJpIGQndW5lIGNvbG9ubmVcbiAgICAgICAgICogUGFzc2UgbCdpZCBkZSBsYSBjb2xvbm5lIGV0IGxhIGRpcmVjdGlvbiBkdSB0cmkgKG91IGZhbHNlIHNpIHRyaSBwYXIgZMOpZmF1dClcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbHVtbiBpZFxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyZWN0aW9uXG4gICAgICAgICAqL1xuICAgICAgICBvblNvcnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICAvKipcbiAgICAgICAgICogTCd1dGlsaXNhdGV1ciBwZXV0IGNoYW5nZXIgbCdvcmRyZSBkZXMgY29sb25uZXMsXG4gICAgICAgICAqIGxlcyBhZmZpY2hlciBvdSBub24sIGV0IGNoYW5nZXIgbGEgdnVlIGRlIGNoYXF1ZSBjb2xvbm5lIChzbWFsbCwgbWVkaXVtLCBsYXJnZSkuXG4gICAgICAgICAqL1xuICAgICAgICBvcmRlcmFibGU6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogVGFibGVhdSBkZXMgY29sb25uZXMgYWZmaWNow6llcyAob3Jkb25uw6llcywgdmlzaWJsZXMvY2FjaMOpZXMsIGwvbS9zKVxuICAgICAgICAgKi9cbiAgICAgICAgb3JkZXJlZENvbHVtbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICAgICAgICAvKipcbiAgICAgICAgICogRm9uY3Rpb24gZGUgY2FsbGJhY2sgcmVxdcOpcmFudCBsJ2FmZmljaGFnZSBkZXMgbm91dmVsbGVzIGRvbm7DqWVzIChsaXZlKVxuICAgICAgICAgKi9cbiAgICAgICAgcmVxdWVzdExpdmVEYXRhczogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayByZXF1w6lyYW50IGwnYWZmaWNoYWdlIGRlcyBkb25uw6llcyBzdWl2YW50ZXNcbiAgICAgICAgICovXG4gICAgICAgIHJlcXVlc3ROZXh0RGF0YXM6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICAvKipcbiAgICAgICAgICogW3YyIC0gw6AgdmVuaXJdIExlcyBsaWduZXMgc29udCBzw6lsZWN0aW9ubmFibGVzIChhZmZpY2hhZ2UgZCd1bmUgY2hlY2tib3gpXG4gICAgICAgICAqL1xuICAgICAgICBzZWxlY3RhYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3RlIGRlcyBpZCBkZXMgbGlnbmVzIHPDqWxlY3Rpb25uw6llc1xuICAgICAgICAgKi9cbiAgICAgICAgc2VsZWN0ZWRJZExpc3Q6IFByb3BUeXBlcy5hcnJheSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFjdGl2ZSBsZSB0cmkgc3VyIGxlcyBjb2xvbm5lc1xuICAgICAgICAgKi9cbiAgICAgICAgc29ydGFibGU6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogU2VucyBkdSB0cmlcbiAgICAgICAgICovXG4gICAgICAgIHNvcnREaXJlY3Rpb246IFByb3BUeXBlcy5vbmVPZihbJ2FzYycsICdkZXNjJ10pLFxuICAgICAgICAvKipcbiAgICAgICAgICogSWQgZGUgbGEgY29sb25uZSB0cmnDqVxuICAgICAgICAgKi9cbiAgICAgICAgc29ydGVkQ29sdW1uSWQ6IGlzUmVxdWlyZWRJZihcbiAgICAgICAgICAgIFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgICAgICBwcm9wcyA9PiBwcm9wcy5oYXNPd25Qcm9wZXJ0eSgnc29ydGFibGUnKSAmJiBwcm9wcy5zb3J0YWJsZSA9PT0gdHJ1ZSxcbiAgICAgICAgICAgIFNPUlRFRF9DT0xVTU5fRVJST1JfTUVTU0FHRSxcbiAgICAgICAgKSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZpeGUgbGEgcHJlbWnDqHJlIGNvbG9ubmVcbiAgICAgICAgICovXG4gICAgICAgIHN0aWNreTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZGVudGlmaWFudCB1bmlxdWUgw6Agc3DDqWNpZmllciBzaSBvbiB1dGlsaXNlIHBsdXNpZXVycyBjb21wb3NhbnRzIEhpVGFibGVcbiAgICAgICAgICovXG4gICAgICAgIHRhYklkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUcmFkdWN0aW9uIGRlcyBjaGHDrm5lcyBhZmZpY2jDqWVzXG4gICAgICAgICAqL1xuICAgICAgICB0cmFuc2xhdGlvbnM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUYWlsbGUgZHUgdGFibGVhdSAoTC9NL1MpLFxuICAgICAgICAgKiBkw6lmaW5pdCBsJ2VzcGFjZSBlbnRyZSBsZXMgY2VsbHVsZXMgZXQgbGV1cnMgdGFpbGxlcyBwYXIgZGVmYXVsdFxuICAgICAgICAgKi9cbiAgICAgICAgdmlldzogUHJvcFR5cGVzLm9uZU9mKFsnbCcsICdtJywgJ3MnXSksXG4gICAgfTtcblxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICAgIG9yZGVyYWJsZTogZmFsc2UsXG4gICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgc29ydERpcmVjdGlvbjogJ2FzYycsXG4gICAgICAgIGZpbHRlcmFibGU6IHRydWUsXG4gICAgICAgIGluZmluaXRlU2Nyb2xsOiBmYWxzZSxcbiAgICAgICAgaGFzTmV4dERhdGFzOiBmYWxzZSxcbiAgICAgICAgY291bnRMaXZlRGF0YXM6IDAsXG4gICAgICAgIGRhdGVMb2NhbGU6ICdlbi1FTicsXG4gICAgICAgIG51bWJlckxvY2FsZTogJ2VuLUVOJyxcbiAgICAgICAgZGVuc2U6IGZhbHNlLFxuICAgICAgICBkZXRhaWxSb3dzT3B0aW9uczoge30sXG4gICAgICAgIGhlaWdodDogNDUwLFxuICAgICAgICBzdGlja3k6IHRydWUsXG4gICAgICAgIHRyYW5zbGF0aW9uczoge1xuICAgICAgICAgICAgYmFja190b190b3A6ICdCYWNrIHRvIHRvcCcsXG4gICAgICAgIH0sXG4gICAgICAgIHZpZXc6ICdsJyxcbiAgICAgICAgbG9va3VwQ29sdW1uczogW10sXG4gICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICBmaXhlZENvbHVtbldpZHRoOiB0cnVlLFxuICAgICAgICBkaXNhYmxlQ29udGV4dE1lbnU6IHRydWUsXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcblxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgZGF0ZVVwZGF0ZTogRGF0ZS5ub3coKSxcbiAgICAgICAgICAgIGlzU2Nyb2xsVG9Cb3R0b206IGZhbHNlLFxuICAgICAgICAgICAgZ3JvdXBCeUlkczoge30sXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gY3JlYXRlIGFzc29jaWF0aXZlIGFycmF5IChvYmplY3QpIHdpdGggc3RpY2t5IHJvdyBrZXkgJiBpdHMgdmFsdWVzXG4gICAgICAgIC8vID0+IHVzZWQgZm9yIHN0aWNreSByb3cgYmFkZ2VzXG4gICAgICAgIGlmIChwcm9wcy5ncm91cEJ5KSB7XG4gICAgICAgICAgICBwcm9wcy5kYXRhU291cmNlLm1hcChyb3cgPT4ge1xuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHJvdy5kYXRhc1twcm9wcy5ncm91cEJ5XS52YWx1ZTtcbiAgICAgICAgICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHZhbHVlKTtcblxuICAgICAgICAgICAgICAgIGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSAmJiBpc0Zpbml0ZShkYXRlKSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cigwLCAxMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zdGF0ZS5ncm91cEJ5SWRzLmhhc093blByb3BlcnR5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmdyb3VwQnlJZHNbdmFsdWVdID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuZ3JvdXBCeUlkc1t2YWx1ZV0ucHVzaChyb3cuZGF0YXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPcmRlcmFibGVcbiAgICAgICAgdGhpcy5vcGVuT3JkZXJDb2x1bW5zTWVudSA9IHRoaXMub3Blbk9yZGVyQ29sdW1uc01lbnUuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5jbG9zZU9yZGVyQ29sdW1uc01lbnUgPSB0aGlzLmNsb3NlT3JkZXJDb2x1bW5zTWVudS5iaW5kKHRoaXMpO1xuXG4gICAgICAgIC8vIFNlbGVjdGFibGVcbiAgICAgICAgdGhpcy50b2dnbGVJdGVtID0gdGhpcy50b2dnbGVJdGVtLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMudG9nZ2xlQWxsID0gdGhpcy50b2dnbGVBbGwuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5zZWxlY3RBbGwgPSB0aGlzLnNlbGVjdEFsbC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmRlc2VsZWN0QWxsID0gdGhpcy5kZXNlbGVjdEFsbC5iaW5kKHRoaXMpO1xuXG4gICAgICAgIC8vIE1hbmFnZSBzY3JvbGxpbmdcbiAgICAgICAgdGhpcy5oYW5kbGVIb3Jpem9udGFsU2Nyb2xsID0gdGhpcy5oYW5kbGVIb3Jpem9udGFsU2Nyb2xsLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlVmVydGljYWxTY3JvbGwgPSB0aGlzLmhhbmRsZVZlcnRpY2FsU2Nyb2xsLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMucGxhY2VIb3Jpem9udGFsRmxvYXRpbmdFbGVtZW50ID0gdGhpcy5wbGFjZUhvcml6b250YWxGbG9hdGluZ0VsZW1lbnQuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5zY3JvbGxUb1RvcCA9IHRoaXMuc2Nyb2xsVG9Ub3AuYmluZCh0aGlzKTtcblxuICAgICAgICB0aGlzLmlzU2Nyb2xsVG9Cb3R0b20gPSB0aGlzLmlzU2Nyb2xsVG9Cb3R0b20uYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVSZXF1ZXN0TGl2ZURhdGFzID0gdGhpcy5oYW5kbGVSZXF1ZXN0TGl2ZURhdGFzLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlTmV4dFN0aWNreVJvdyA9IHRoaXMuaGFuZGxlTmV4dFN0aWNreVJvdy5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZVN0aWNreVJvd1Bvc2l0aW9ucyA9IHRoaXMuaGFuZGxlU3RpY2t5Um93UG9zaXRpb25zLmJpbmQodGhpcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRE9NIHJlZmVyZW5jZXNcbiAgICAgKiB1c2UgdG8gcmVwbGFjZSBlbGVtZW50IG9uIGhvcml6b250YWwgJiB2ZXJ0aWNhbCBzY3JvbGxcbiAgICAgKi9cbiAgICB3cmFwcGVyRGl2ID0gPGRpdiAvPjtcbiAgICB3cmFwcGVyV2lkdGggPSAwO1xuICAgIHRIZWFkID0gPGRpdiAvPjtcbiAgICB0SGVhZExlZnRQYWRkaW5nID0gPGRpdiAvPjtcbiAgICB0SGVhZFJpZ2h0UGFkZGluZyA9IDxkaXYgLz47XG4gICAgdEhlYWRGaXJzdCA9IDxkaXYgLz47XG4gICAgdEJvZHkgPSA8ZGl2IC8+O1xuICAgIHRCb2R5U2Nyb2xsYmFyV2lkdGggPSAwO1xuICAgIHRCb2R5TGVmdFBhZGRpbmdFbGVtZW50cyA9IFtdO1xuICAgIHRCb2R5UmlnaHRQYWRkaW5nRWxlbWVudHMgPSBbXTtcbiAgICB0Qm9keUZpcnN0RWxlbWVudHMgPSBbXTtcbiAgICB0Rm9vdCA9IDxkaXYgLz47XG4gICAgdEZvb3RDZW50ZXJlZERpdiA9IDxkaXYgLz47XG4gICAgYmFja1RvVG9wQnV0dG9uID0gbnVsbDtcbiAgICBsaXZlRGF0YVNwYW4gPSBudWxsO1xuICAgIHNjcm9sbFRvcCA9IDA7XG4gICAgc2Nyb2xsTGVmdCA9IDA7XG4gICAgZ3JvdXBCeVJvd3NQb3NpdGlvbnMgPSBbXTtcblxuICAgIC8qKiBMaWZlY3ljbGUgbWV0aG9kcyAqL1xuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIHRoaXMud3JhcHBlclNjcm9sbE9mZnNldCA9IHRoaXMud3JhcHBlckRpdi5zY3JvbGxXaWR0aCAtIHRoaXMud3JhcHBlckRpdi5vZmZzZXRXaWR0aDtcblxuICAgICAgICAvLyBTZXQgRE9NIHJlZmVyZW5jZXNcbiAgICAgICAgdGhpcy50SGVhZCA9IHRoaXMud3JhcHBlckRpdi5xdWVyeVNlbGVjdG9yKCd0YWJsZSB0aGVhZCcpO1xuICAgICAgICB0aGlzLnRIZWFkTGVmdFBhZGRpbmcgPSB0aGlzLnRIZWFkLnF1ZXJ5U2VsZWN0b3IoJ3RyIHRoOm50aC1jaGlsZCgxKScpO1xuICAgICAgICB0aGlzLnRIZWFkUmlnaHRQYWRkaW5nID0gdGhpcy50SGVhZC5xdWVyeVNlbGVjdG9yKCd0ciB0aDpudGgtbGFzdC1jaGlsZCgxKScpO1xuICAgICAgICB0aGlzLnRIZWFkRmlyc3QgPSB0aGlzLnRIZWFkLnF1ZXJ5U2VsZWN0b3IoJ3RyIHRoOm50aC1jaGlsZCgyKScpO1xuICAgICAgICB0aGlzLnRCb2R5ID0gdGhpcy53cmFwcGVyRGl2LnF1ZXJ5U2VsZWN0b3IoJ3RhYmxlIHRib2R5Jyk7XG4gICAgICAgIHRoaXMudEZvb3QgPSB0aGlzLndyYXBwZXJEaXYucXVlcnlTZWxlY3RvcigndGFibGUgdGZvb3QnKTtcbiAgICAgICAgdGhpcy50Rm9vdENlbnRlcmVkRGl2ID0gdGhpcy53cmFwcGVyRGl2LnF1ZXJ5U2VsZWN0b3IoJ3RhYmxlIHRmb290IHRyIHRkIGRpdicpO1xuICAgICAgICB0aGlzLmJhY2tUb1RvcEJ1dHRvbiA9IHRoaXMud3JhcHBlckRpdi5xdWVyeVNlbGVjdG9yKCcuYmFjay10by10b3AtYnV0dG9uJyk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVGbG9hdGluZ0JvZHlFbGVtZW50UmVmcygpO1xuXG4gICAgICAgIC8vIERldGVjdCBpZiByb290IGhhcyBob3Jpem9udGFsIHNjcm9sbCBiYXJcbiAgICAgICAgaWYgKHRoaXMud3JhcHBlckRpdi5zY3JvbGxXaWR0aCA+IHRoaXMud3JhcHBlckRpdi5vZmZzZXRXaWR0aCkge1xuICAgICAgICAgICAgLy8gYWRhcHQgZmlyc3QgY29sdW1uIHRvIGZpeGVkIHdpZHRoXG4gICAgICAgICAgICBpZiAodGhpcy50SGVhZEZpcnN0ICYmIHRoaXMudEhlYWRGaXJzdC5zdHlsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudEhlYWRGaXJzdC5zdHlsZS53aWR0aCA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGZpeGVkIGZvb3RlciB3aWR0aFxuICAgICAgICAgICAgaWYgKHRoaXMudEZvb3RDZW50ZXJlZERpdiAmJiB0aGlzLnRGb290Q2VudGVyZWREaXYuc3R5bGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRGb290Q2VudGVyZWREaXYuc3R5bGUud2lkdGggPSAoTWF0aC5yb3VuZCh0aGlzLndyYXBwZXJEaXYub2Zmc2V0V2lkdGggLyAyKSkgKyAncHgnO1xuICAgICAgICAgICAgICAgIHRoaXMudEZvb3RDZW50ZXJlZERpdi5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgICAgICAgICAgdGhpcy50Rm9vdENlbnRlcmVkRGl2LnN0eWxlLmJvdHRvbSA9ICcwcHgnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVTdGlja3lSb3dzUG9zaXRpb24oKTtcblxuICAgICAgICB0aGlzLnBsYWNlSG9yaXpvbnRhbEZsb2F0aW5nRWxlbWVudCgpO1xuICAgIH1cblxuICAgIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZXZTdGF0ZSwgcHJldkNvbnRleHQpIHtcbiAgICAgICAgdGhpcy53cmFwcGVyU2Nyb2xsT2Zmc2V0ID0gdGhpcy53cmFwcGVyRGl2LnNjcm9sbFdpZHRoIC0gdGhpcy53cmFwcGVyRGl2Lm9mZnNldFdpZHRoO1xuXG4gICAgICAgIC8vIElmIG9yZGVyZWRDb2x1bW5zIGhhcyBjaGFuZ2UsIHBvc3NpYmx5IHRoZSBzdGlja3kgY2VsbHMgaGFzIGNoYW5nZWQgdG9vXG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9yZGVyZWRDb2x1bW5zWzBdLmNvbElkICE9PSBwcmV2UHJvcHMub3JkZXJlZENvbHVtbnNbMF0uY29sSWQpIHtcbiAgICAgICAgICAgIHRoaXMudEhlYWRGaXJzdCA9IHRoaXMudEhlYWQucXVlcnlTZWxlY3RvcigndHIgdGg6bnRoLWNoaWxkKDIpJyk7XG4gICAgICAgICAgICB0aGlzLnRCb2R5Rmlyc3RFbGVtZW50cyA9IHRoaXMud3JhcHBlckRpdi5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICAgICAgICd0YWJsZSB0Ym9keSB0ciB0ZDpudGgtY2hpbGQoMiknLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZXJlIGlzIG5ldyByb3dzLCB1cGRhdGUgdGJvZHkgZmlyc3QgZWxlbWVudCBsaXN0IGFuZCBsZWZ0IHBhZGRpbmcgY2VsbHNcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZGF0YVNvdXJjZS5sZW5ndGggPiBwcmV2UHJvcHMuZGF0YVNvdXJjZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRmxvYXRpbmdCb2R5RWxlbWVudFJlZnMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnByb3BzLmNvdW50TGl2ZURhdGFzID4gMCkge1xuICAgICAgICAgICAgdGhpcy5saXZlRGF0YVNwYW4gPSB0aGlzLnRIZWFkLnF1ZXJ5U2VsZWN0b3IoJ3RyOm50aC1jaGlsZCgyKSB0aCBzcGFuJyk7XG4gICAgICAgICAgICB0aGlzLmJhY2tUb1RvcEJ1dHRvbi5zdHlsZS50b3AgPSAnLTk5OTk5cHgnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByZXZQcm9wcy5jb3VudExpdmVEYXRhcyA+IHRoaXMucHJvcHMuY291bnRMaXZlRGF0YXMpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIGRhdGVVcGRhdGU6IERhdGUubm93KCksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9ubHkgaWYgbmVlZGVkXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMucHJvcHMuZGF0YVNvdXJjZS5sZW5ndGggPiBwcmV2UHJvcHMuZGF0YVNvdXJjZS5sZW5ndGggfHxcbiAgICAgICAgICAgIHRoaXMucHJvcHMuZGVuc2UgIT09IHByZXZQcm9wcy5kZW5zZSB8fFxuICAgICAgICAgICAgdGhpcy5wcm9wcy5zb3J0ZWRDb2x1bW5JZCAhPT0gcHJldlByb3BzLnNvcnRlZENvbHVtbklkIHx8XG4gICAgICAgICAgICB0aGlzLnByb3BzLnNvcnREaXJlY3Rpb24gIT09IHByZXZQcm9wcy5zb3J0RGlyZWN0aW9uXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdGlja3lSb3dzUG9zaXRpb24oKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLmRhdGFTb3VyY2UubGVuZ3RoID4gcHJldlByb3BzLmRhdGFTb3VyY2UubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTdGlja3lSb3dQb3NpdGlvbnMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wcm9wcy5kYXRhU291cmNlLmxlbmd0aCA+IHByZXZQcm9wcy5kYXRhU291cmNlLmxlbmd0aCAmJiB0aGlzLnByb3BzLmdyb3VwQnkpIHtcbiAgICAgICAgICAgIC8vIGNyZWF0ZSBhc3NvY2lhdGl2ZSBhcnJheSAob2JqZWN0KSB3aXRoIHN0aWNreSByb3cga2V5ICYgaXRzIHZhbHVlc1xuICAgICAgICAgICAgLy8gPT4gdXNlZCBmb3Igc3RpY2t5IHJvdyBiYWRnZXNcbiAgICAgICAgICAgIGxldCBncm91cEJ5SWRzID0ge307XG4gICAgICAgICAgICB0aGlzLnByb3BzLmRhdGFTb3VyY2UubWFwKHJvdyA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gcm93LmRhdGFzW3RoaXMucHJvcHMuZ3JvdXBCeV0udmFsdWU7XG4gICAgICAgICAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUgJiYgaXNGaW5pdGUoZGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHIoMCwgMTApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWdyb3VwQnlJZHMuaGFzT3duUHJvcGVydHkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwQnlJZHNbdmFsdWVdID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGdyb3VwQnlJZHNbdmFsdWVdLnB1c2gocm93LmRhdGFzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGdyb3VwQnlJZHM6IGdyb3VwQnlJZHMgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzU2Nyb2xsVG9Cb3R0b20odGhpcy5zY3JvbGxUb3AgPT09IHRoaXMudEJvZHkuc2Nyb2xsSGVpZ2h0IC0gdGhpcy50Qm9keS5vZmZzZXRIZWlnaHQpO1xuXG4gICAgICAgIHRoaXMucGxhY2VIb3Jpem9udGFsRmxvYXRpbmdFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgLyoqICAgIEVORCBMaWZlY3ljbGUgbWV0aG9kcyAgICovXG5cbiAgICB1cGRhdGVTdGlja3lSb3dzUG9zaXRpb24oKSB7XG4gICAgICAgIGNvbnN0IHJvd0hlaWdodCA9IHRoaXMucHJvcHMuZGVuc2UgPyBjc3QuQ0VMTF9IRUlHSFRfREVOU0UgOiBjc3QuQ0VMTF9IRUlHSFQ7XG4gICAgICAgIHRoaXMuZ3JvdXBCeVJvd3NQb3NpdGlvbnMgPSBbXTtcbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBuZXcgc3RpY2t5Um93cyBwb3NpdGlvblxuICAgICAgICBjb25zdCB0YWJsZUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgJHt0aGlzLnByb3BzLnRhYklkfS1ib2R5YCk7XG4gICAgICAgIGNvbnN0IHN0aWNreVJvd3MgPSB0YWJsZUJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc3RpY2t5R3JvdXBCeScpO1xuICAgICAgICBpZiAoc3RpY2t5Um93cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoc3RpY2t5Um93cywgc3RpY2t5Um93ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwQnlSb3dzUG9zaXRpb25zLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHN0aWNreVJvdy5uZXh0U2libGluZy5uZXh0U2libGluZy5vZmZzZXRUb3AgLSByb3dIZWlnaHQsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlRmxvYXRpbmdCb2R5RWxlbWVudFJlZnMgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMudEJvZHlTY3JvbGxiYXJXaWR0aCA9IHRoaXMudEJvZHkub2Zmc2V0V2lkdGggLSB0aGlzLnRCb2R5LmNsaWVudFdpZHRoO1xuXG4gICAgICAgIGlmICh0aGlzLnRIZWFkICYmIHRoaXMudEJvZHlTY3JvbGxiYXJXaWR0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMudEhlYWQuc3R5bGUud2lkdGggPSAnY2FsYygxMDAlIC0gJyArIHRoaXMudEJvZHlTY3JvbGxiYXJXaWR0aCArICdweCknO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50Qm9keUxlZnRQYWRkaW5nRWxlbWVudHMgPSB0aGlzLnRCb2R5LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgICAndHIgdGQ6bnRoLWNoaWxkKDEpLCAuZmxvYXRpbmctcGFyZW50LXJvdy1sYWJlbCcsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudEJvZHlSaWdodFBhZGRpbmdFbGVtZW50cyA9IHRoaXMudEJvZHkucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgICd0ciB0ZDpudGgtbGFzdC1jaGlsZCgxKSwgLmZsb2F0aW5nLXBhcmVudC1yb3ctaW5kaWNhdG9yJyxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnRCb2R5Rmlyc3RFbGVtZW50cyA9IHRoaXMudEJvZHkucXVlcnlTZWxlY3RvckFsbCgndHIgdGQ6bnRoLWNoaWxkKDIpJyk7XG4gICAgfTtcblxuICAgIGlzU2Nyb2xsVG9Cb3R0b20odmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuaXNTY3JvbGxUb0JvdHRvbSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgIGlzU2Nyb2xsVG9Cb3R0b206IHZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBam91dGUgLyBTdXBwcmltZSBsJ2lkIGRlIGwnaXRlbSBkdSBzZWxlY3RlZElkTGlzdFxuICAgICAqIEBwYXJhbSBpdGVtXG4gICAgICovXG4gICAgdG9nZ2xlSXRlbShpdGVtKSB7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdGVkSWRMaXN0LmluY2x1ZGVzKGl0ZW0ucm93SWQpKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uU2VsZWN0KFxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuc2VsZWN0ZWRJZExpc3QuZmlsdGVyKGZ1bmN0aW9uKGl0ZW1JZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbUlkICE9PSBpdGVtLnJvd0lkO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25TZWxlY3QoWy4uLnRoaXMucHJvcHMuc2VsZWN0ZWRJZExpc3QsIGl0ZW0ucm93SWRdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFPDqWxlY3Rpb25uZSAvIETDqXNlbGVjdGlvbm5lIHRvdXMgbGVzIMOpbMOpbWVudHMgZW4gZm9uY3Rpb24gZGUgbCfDqXRhdCBkZSBsYSBsaXN0ZVxuICAgICAqL1xuICAgIHRvZ2dsZUFsbCgpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuc2VsZWN0ZWRJZExpc3QubGVuZ3RoID09PSB0aGlzLnByb3BzLmRhdGFTb3VyY2UubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmRlc2VsZWN0QWxsKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEFsbCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU8OpbGVjdGlvbm5lIHRvdXMgbGVzIGl0ZW1zXG4gICAgICovXG4gICAgc2VsZWN0QWxsKCkge1xuICAgICAgICB0aGlzLnByb3BzLm9uU2VsZWN0KHRoaXMucHJvcHMuZGF0YVNvdXJjZS5tYXAoaXRlbSA9PiBpdGVtLnJvd0lkKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRMOpc8OpbGVjdGlvbm5lIHRvdXMgbGVzIGl0ZW1zXG4gICAgICovXG4gICAgZGVzZWxlY3RBbGwoKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25TZWxlY3QoW10pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBob3Jpem9udGFsIHNjcm9sbCAod3JhcHBlckRpdilcbiAgICAgKiAtIHJlcGxhY2UgZWFjaCBmaXJzdCBjZWxscyBib2R5ICYgaGVhZGVyICYgYWRkIHJpZ2h0IHNoYWRvd3NcbiAgICAgKi9cbiAgICBoYW5kbGVIb3Jpem9udGFsU2Nyb2xsKGV2ZW50KSB7XG4gICAgICAgIC8vIGNhbmNlbCBpZiBzY3JvbGwgaXMgZnJvbSB0Ym9keSBPUiBpdCBkaWRuJ3QgY2hhbmdlXG4gICAgICAgIGlmIChldmVudC50YXJnZXQubm9kZU5hbWUgPT09ICdUQk9EWScgfHwgdGhpcy5zY3JvbGxMZWZ0ID09PSBldmVudC50YXJnZXQuc2Nyb2xsTGVmdCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zY3JvbGxMZWZ0ID0gZXZlbnQudGFyZ2V0LnNjcm9sbExlZnQ7XG5cbiAgICAgICAgLy8gUmVwbGFjZSBsaXZlIGRhdGFzIG5vdGlmaWNhdGlvblxuICAgICAgICB0aGlzLnBsYWNlSG9yaXpvbnRhbEZsb2F0aW5nRWxlbWVudCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSB2ZXJ0aWNhbCBzY3JvbGwgKHRib2R5KVxuICAgICAqIC0gYWRkIGJvdHRvbSBzaGFkb3dcbiAgICAgKiAtIHBsYWNlIGJhY2sgdG8gdG9wIGJ1dHRvblxuICAgICAqIC0gcmVxdWVzdCBuZXh0IGRhdGFzIGlmIHJlYWNoIGJvdHRvbVxuICAgICAqL1xuICAgIGhhbmRsZVZlcnRpY2FsU2Nyb2xsKGV2ZW50KSB7XG4gICAgICAgIC8vIGNhbmNlbCBpZiBzY3JvbGwgaXMgbm90IGZyb20gdGJvZHkgT1IgaXQgZGlkbid0IGNoYW5nZVxuICAgICAgICBpZiAoZXZlbnQudGFyZ2V0Lm5vZGVOYW1lICE9PSAnVEJPRFknIHx8IHRoaXMuc2Nyb2xsVG9wID09PSBldmVudC50YXJnZXQuc2Nyb2xsVG9wKSByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgc2Nyb2xsaW5nVXAgPSB0aGlzLnNjcm9sbFRvcCA+IGV2ZW50LnRhcmdldC5zY3JvbGxUb3A7XG5cbiAgICAgICAgdGhpcy5zY3JvbGxUb3AgPSBldmVudC50YXJnZXQuc2Nyb2xsVG9wO1xuXG4gICAgICAgIC8vIEFkZCBib3R0b20gc2hhZG93IHRvIGhlYWRlciByb3dcbiAgICAgICAgY29uc3Qgc2hhZG93Qm90dG9tID0gJzBweCAwcHggMnB4IDBweCByZ2JhKDEyOCwgMTI4LCAxMjgsIDAuMzIpJztcbiAgICAgICAgdGhpcy50SGVhZC5zdHlsZVsnYm94LXNoYWRvdyddID0gdGhpcy5zY3JvbGxUb3AgPiAwID8gc2hhZG93Qm90dG9tIDogJ25vbmUnO1xuICAgICAgICBjb25zdCByb3dIZWlnaHQgPSB0aGlzLnByb3BzLmRlbnNlID8gY3N0LkNFTExfSEVJR0hUX0RFTlNFIDogY3N0LkNFTExfSEVJR0hUO1xuXG4gICAgICAgIC8vIEFkZCBiYWNrIHRvIHRvcCBidXR0b24gd2hlbiBzY3JvbGxpbmcgdXAgZnJvbSBjb25zdGFudCBkZWZpbmVkIHNjcm9sbCBwb2ludFxuICAgICAgICAvLyBpZiB0aGVyZSBub3QgbGl2ZSBkYXRhIG5vdGlmaWNhdGlvblxuICAgICAgICBpZiAodGhpcy5wcm9wcy5jb3VudExpdmVEYXRhcyA9PT0gMCkge1xuICAgICAgICAgICAgaWYgKHNjcm9sbGluZ1VwICYmIHRoaXMuc2Nyb2xsVG9wID49IGNzdC5OQl9ST1dTX0JBQ0tfVE9fVE9QICogcm93SGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iYWNrVG9Ub3BCdXR0b24uc3R5bGUudG9wID0gYCR7cm93SGVpZ2h0ICogMS41fSBweGA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYmFja1RvVG9wQnV0dG9uLnN0eWxlLnRvcCA9IGAkey05OTk5OX1weGA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhhbmRsZVN0aWNreVJvd1Bvc2l0aW9ucygpO1xuXG4gICAgICAgIHRoaXMuaXNTY3JvbGxUb0JvdHRvbShcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9wID09PSBldmVudC50YXJnZXQuc2Nyb2xsSGVpZ2h0IC0gdGhpcy50Qm9keS5vZmZzZXRIZWlnaHQsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaGFuZGxlU3RpY2t5Um93UG9zaXRpb25zKCkge1xuICAgICAgICBjb25zdCB0YWJsZUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgJHt0aGlzLnByb3BzLnRhYklkfS1ib2R5YCk7XG4gICAgICAgIGNvbnN0IHN0aWNreVJvd3MgPSB0YWJsZUJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc3RpY2t5R3JvdXBCeScpO1xuICAgICAgICBjb25zdCByb3dIZWlnaHQgPSB0aGlzLnByb3BzLmRlbnNlID8gY3N0LkNFTExfSEVJR0hUX0RFTlNFIDogY3N0LkNFTExfSEVJR0hUO1xuICAgICAgICBpZiAoc3RpY2t5Um93cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoc3RpY2t5Um93cywgKHN0aWNreVJvdywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmYWtlVHIgPSBzdGlja3lSb3cubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgaWYgKHRhYmxlQm9keS5zY3JvbGxUb3AgPiB0aGlzLmdyb3VwQnlSb3dzUG9zaXRpb25zW2luZGV4XSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBDYWxjdWwgZGUgbGEgcG9zaXRpb24gZHUgJ3Bpbm5lZCcgaXRlbVxuICAgICAgICAgICAgICAgICAgICAvLyBwb3NpdGlvbm5lbWVudCBqdXN0ZSBlbiBkZXNzb3VzIGR1IGhlYWRlclxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2Ygc3RpY2t5Um93c1tpbmRleCArIDFdID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVCb2R5LnNjcm9sbFRvcCA8IHN0aWNreVJvd3NbaW5kZXggKyAxXS5vZmZzZXRUb3BcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTaSBsYSBwcm9jaGFpbmUgbGlnbmUgZXN0IGF1c3NpIHVuICdwaW5uZWQnIGl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpbCBwb3Vzc2UgbGUgcHLDqWPDqWRlbnQgdmVycyBsZSBoYXV0XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHRoaXMuZ3JvdXBCeVJvd3NQb3NpdGlvbnNbaW5kZXggKyAxXSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyb3VwQnlSb3dzUG9zaXRpb25zW2luZGV4ICsgMV0gLSB0YWJsZUJvZHkuc2Nyb2xsVG9wIDxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dIZWlnaHQgLSAxMFxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5Um93LnN0eWxlLnRvcCA9IGAke3RhYmxlQm9keS5zY3JvbGxUb3AgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBCeVJvd3NQb3NpdGlvbnNbaW5kZXggKyAxXSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVCb2R5LnNjcm9sbFRvcCAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93SGVpZ2h0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweGA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreVJvdy5zdHlsZS50b3AgPSBgJHt0YWJsZUJvZHkuc2Nyb2xsVG9wfXB4YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0aWNreVJvdy5zdHlsZS5wb3NpdGlvbiAhPT0gJ2Fic29sdXRlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlcG9zaXRpb25uZW1lbnQgZGVzIMOpbMOpbWVudHMgZGFucyB1bmUgcm93IGVuIHBvc2l0aW9uIGFic29sdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5Um93LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWtlVHIuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtYmxvY2snO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreVJvdy5zdHlsZS5oZWlnaHQgPSB0aGlzLnByb3BzLmRlbnNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gYCR7Y3N0LkNFTExfSEVJR0hUX0RFTlNFIC0gOH1weGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBgJHtjc3QuQ0VMTF9IRUlHSFQgLSA4fXB4YDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlja3lSb3cucXVlcnlTZWxlY3RvcignYnV0dG9uJykuc3R5bGUubWF4SGVpZ2h0ID0gdGhpcy5wcm9wcy5kZW5zZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGAke2NzdC5DRUxMX0hFSUdIVF9ERU5TRSAtIDE2fXB4YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGAke2NzdC5DRUxMX0hFSUdIVCAtIDE2fXB4YDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlja3lSb3cucXVlcnlTZWxlY3RvcignYnV0dG9uJykuc3R5bGUubWluSGVpZ2h0ID0gdGhpcy5wcm9wcy5kZW5zZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGAke2NzdC5DRUxMX0hFSUdIVF9ERU5TRSAtIDE2fXB4YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGAke2NzdC5DRUxMX0hFSUdIVCAtIDE2fXB4YDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlja3lSb3cucXVlcnlTZWxlY3RvcignYnV0dG9uJykuc3R5bGUudG9wID0gJy0zcHgnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreVJvdy5xdWVyeVNlbGVjdG9yKCcjc3RpY2t5Um93Q29udGVudCcpLnN0eWxlLnRvcCA9ICF0aGlzLnByb3BzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5kZW5zZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICc0cHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0zcHgnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreVJvdy5xdWVyeVNlbGVjdG9yKCd0ZCcpLnN0eWxlLmhlaWdodCA9IHRoaXMucHJvcHMuZGVuc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBgJHtjc3QuQ0VMTF9IRUlHSFRfREVOU0UgLSA4fXB4YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGAke2NzdC5DRUxMX0hFSUdIVCAtIDh9cHhgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLmRlbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreVJvdy5xdWVyeVNlbGVjdG9yKCdidXR0b24nKS5zdHlsZS50b3AgPSAnMHB4JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5Um93LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbiBzcGFuJykuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlja3lSb3cucXVlcnlTZWxlY3RvcignYnV0dG9uIHNwYW4nKS5zdHlsZS50b3AgPSAnLTRweCc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGlja3lSb3cuc3R5bGUucG9zaXRpb24gIT09ICdyZWxhdGl2ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVwb3NpdGlvbm5lbWVudCBub3JtYWxcbiAgICAgICAgICAgICAgICAgICAgc3RpY2t5Um93LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICAgICAgICAgICAgICAgICAgc3RpY2t5Um93LnN0eWxlLnRvcCA9ICcwcHgnO1xuICAgICAgICAgICAgICAgICAgICBmYWtlVHIuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgICAgICAgICAgc3RpY2t5Um93LnN0eWxlLmhlaWdodCA9IHRoaXMucHJvcHMuZGVuc2VcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYCR7Y3N0LkNFTExfSEVJR0hUX0RFTlNFfXB4YFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBgJHtjc3QuQ0VMTF9IRUlHSFR9cHhgO1xuICAgICAgICAgICAgICAgICAgICBzdGlja3lSb3cucXVlcnlTZWxlY3RvcignI3N0aWNreS1iYWRnZScpLnN0eWxlLnRvcCA9ICcwcHgnO1xuICAgICAgICAgICAgICAgICAgICBzdGlja3lSb3cucXVlcnlTZWxlY3RvcignI3N0aWNreVJvd0NvbnRlbnQnKS5zdHlsZS50b3AgPSAnMnB4JztcbiAgICAgICAgICAgICAgICAgICAgc3RpY2t5Um93LnF1ZXJ5U2VsZWN0b3IoJ3RkJykuc3R5bGUuaGVpZ2h0ID0gdGhpcy5wcm9wcy5kZW5zZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBgJHtjc3QuQ0VMTF9IRUlHSFRfREVOU0V9cHhgXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGAke2NzdC5DRUxMX0hFSUdIVH1weGA7XG4gICAgICAgICAgICAgICAgICAgIHN0aWNreVJvdy5xdWVyeVNlbGVjdG9yKCdidXR0b24nKS5zdHlsZS5tYXhIZWlnaHQgPSB0aGlzLnByb3BzLmRlbnNlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGAke2NzdC5DRUxMX0hFSUdIVF9ERU5TRSAtIDJ9cHhgXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGAke2NzdC5DRUxMX0hFSUdIVCAtIDh9cHhgO1xuICAgICAgICAgICAgICAgICAgICBzdGlja3lSb3cucXVlcnlTZWxlY3RvcignYnV0dG9uJykuc3R5bGUubWluSGVpZ2h0ID0gdGhpcy5wcm9wcy5kZW5zZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBgJHtjc3QuQ0VMTF9IRUlHSFRfREVOU0UgLSAyfXB4YFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBgJHtjc3QuQ0VMTF9IRUlHSFQgLSA4fXB4YDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMuZGVuc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreVJvdy5xdWVyeVNlbGVjdG9yKCdidXR0b24gc3BhbicpLnN0eWxlLnRvcCA9ICcwcHgnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTb21lIGVsZW1lbnQgbXVzdCBiZSByZXBsYWNlIFwibWFudWFsbHlcIlxuICAgICAqL1xuICAgIHBsYWNlSG9yaXpvbnRhbEZsb2F0aW5nRWxlbWVudCgpIHtcbiAgICAgICAgLy8gbGl2ZSBkYXRhcyBub3RpZmljYXRpb25cbiAgICAgICAgaWYgKHRoaXMubGl2ZURhdGFTcGFuKSB7XG4gICAgICAgICAgICB0aGlzLmxpdmVEYXRhU3Bhbi5zdHlsZS5sZWZ0ID1cbiAgICAgICAgICAgICAgICB0aGlzLndyYXBwZXJEaXYuY2xpZW50V2lkdGggLyAyIC0gMTAwICsgdGhpcy5zY3JvbGxMZWZ0ICsgJ3B4JztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlcGxhY2UgbGVmdCBwYWRkaW5nIGNlbGxzXG4gICAgICAgIFsuLi50aGlzLnRCb2R5TGVmdFBhZGRpbmdFbGVtZW50cywgdGhpcy50SGVhZExlZnRQYWRkaW5nXS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5sZWZ0ID0gdGhpcy5zY3JvbGxMZWZ0ICsgJ3B4JztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gVE9ETyAtIEZJWFxuICAgICAgICAvLyBMZXMgw6lsw6ltZW50cyBkZSBkcm9pdGUgc29udCBkw6ljYWzDqXMgZGUgMjJweCBsb3JzcXVlIGRlIG5vdXZlbGxlcyBsaWduZXMgc29udFxuICAgICAgICAvLyB2aXNpYmxlIChjaGlsZHJlbiBvdSBkZXRhaWxzKVxuXG4gICAgICAgIC8vIFJlcGxhY2UgcmlnaHQgcGFkZGluZyBjZWxsc1xuICAgICAgICBbLi4udGhpcy50Qm9keVJpZ2h0UGFkZGluZ0VsZW1lbnRzLCB0aGlzLnRIZWFkUmlnaHRQYWRkaW5nXS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5yaWdodCA9XG4gICAgICAgICAgICAgICAgTWF0aC5tYXgoMCwgdGhpcy53cmFwcGVyU2Nyb2xsT2Zmc2V0IC0gdGhpcy5zY3JvbGxMZWZ0IC0gdGhpcy50Qm9keVNjcm9sbGJhcldpZHRoKSArICdweCc7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFJlcGxhY2UgZmlyc3QgY2VsbHMgJiBhZGQgcmlnaHQgc2hhZG93c1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5zdGlja3kpIHtcbiAgICAgICAgICAgIGNvbnN0IHNoYWRvd1JpZ2h0ID0gJzFweCAwcHggMHB4IDBweCByZ2JhKDEyOCwgMTI4LCAxMjgsIDAuMzIpJztcbiAgICAgICAgICAgIFsuLi50aGlzLnRCb2R5Rmlyc3RFbGVtZW50cywgdGhpcy50SGVhZEZpcnN0XS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9IHRoaXMuc2Nyb2xsTGVmdCArICdweCc7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZVsnYm94LXNoYWRvdyddID0gdGhpcy5zY3JvbGxMZWZ0ID4gMCA/IHNoYWRvd1JpZ2h0IDogJ25vbmUnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXBsYWNlIGNlbnRlcmVkIGVsZW1lbnRzIChlbGVtZW50cyB3aWR0aCBzaG91bGQgYmUgNTAlIG9mIHdyYXBwZXIpXG4gICAgICAgIGlmICh0aGlzLnRGb290Q2VudGVyZWREaXYpIHtcbiAgICAgICAgICAgIHRoaXMudEZvb3RDZW50ZXJlZERpdi5zdHlsZS5sZWZ0ID1cbiAgICAgICAgICAgICAgICBNYXRoLnJvdW5kKHRoaXMud3JhcHBlckRpdi5vZmZzZXRXaWR0aCAvIDQpICsgdGhpcy5zY3JvbGxMZWZ0ICsgJ3B4JztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlcGxhY2Ugc3RpY2t5Um93Q29udGVudFxuICAgICAgICBjb25zdCB0YWJsZUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgJHt0aGlzLnByb3BzLnRhYklkfS1ib2R5YCk7XG4gICAgICAgIGNvbnN0IHN0aWNreVJvd0NvbnRlbnREaXYgPSB0YWJsZUJvZHkuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnc3RpY2t5Um93Q29udGVudCcpO1xuICAgICAgICBpZiAoc3RpY2t5Um93Q29udGVudERpdi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoc3RpY2t5Um93Q29udGVudERpdiwgZGl2ID0+IHtcbiAgICAgICAgICAgICAgICBkaXYuc3R5bGUubGVmdCA9IGAke3RoaXMud3JhcHBlckRpdi5zY3JvbGxMZWZ0ICtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMucHJvcHMuc2VsZWN0YWJsZSA/IDI1IDogMCl9cHhgO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVSZXF1ZXN0TGl2ZURhdGFzKCkge1xuICAgICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgICAgIHRoaXMucHJvcHMucmVxdWVzdExpdmVEYXRhcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNjcm9sbCBiYWNrIHRvIHRhYmxlIHRvcFxuICAgICAqL1xuICAgIHNjcm9sbFRvVG9wKCkge1xuICAgICAgICAvLyBIaWRlIGJhY2sgdG8gdG9wIGJ1dHRvblxuICAgICAgICB0aGlzLmJhY2tUb1RvcEJ1dHRvblsnc3R5bGUnXS50b3AgPSAtOTk5OTkgKyAncHgnO1xuXG4gICAgICAgIC8vIFNldCBzY3JvbGwgdG9wIHRvIDBcbiAgICAgICAgdGhpcy50Qm9keS5zY3JvbGxUb3AgPSAwO1xuICAgICAgICB0aGlzLnNjcm9sbFRvcCA9IDA7XG4gICAgfVxuXG4gICAgb3Blbk9yZGVyQ29sdW1uc01lbnUoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBvcmRlckNvbHVtbnNBbmNob3I6IGV2ZW50LmN1cnJlbnRUYXJnZXQsXG4gICAgICAgICAgICBvcmRlckNvbHVtbnNNZW51T3BlbjogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2xvc2VPcmRlckNvbHVtbnNNZW51KCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIG9yZGVyQ29sdW1uc0FuY2hvcjogbnVsbCxcbiAgICAgICAgICAgIG9yZGVyQ29sdW1uc01lbnVPcGVuOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBwYXNzIHRvIHRhYmxlIGJvZHkgdG8gYmUgYWR2aXNlZCB3aGVuIG5ldyByb3dzIGFyZSBkeW5hbWljYWxseSBhZGRlZCAoZXggZGV0YWlsIHJvd3MpXG4gICAgICogd2UgY2FuIHRoZW4gdXBkYXRlIG91ciBsaXN0IG9mIGZsb2F0aW5nIGJvZHkgZWxlbWVudHMgcmVmc1xuICAgICAqKi9cbiAgICBhZGROZXdSb3dSZWZzID0gKCkgPT4ge1xuICAgICAgICAvLyBkZWxheWVkIHJlZnMgZ2V0dGluZyB0byBsZXQgdGltZSBhdCBuZXcgcm93cyB0byBidWlsZCB1cFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRmxvYXRpbmdCb2R5RWxlbWVudFJlZnMoKTtcbiAgICAgICAgICAgIHRoaXMucGxhY2VIb3Jpem9udGFsRmxvYXRpbmdFbGVtZW50KCk7XG4gICAgICAgIH0sIDEwKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogU2Nyb2xsIGp1c3F1J2F1IHByb2NoYWluIHN0aWNrUm93XG4gICAgICpcbiAgICAgKiBAcGFyYW0gc3RpY2t5Um93SW5kZXhcbiAgICAgKi9cbiAgICBoYW5kbGVOZXh0U3RpY2t5Um93KHN0aWNreVJvd0luZGV4KSB7XG4gICAgICAgIGlmICh0aGlzLmdyb3VwQnlSb3dzUG9zaXRpb25zLmxlbmd0aCAtIDEgPiBzdGlja3lSb3dJbmRleCkge1xuICAgICAgICAgICAgY29uc3QgdGFibGVCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYCR7dGhpcy5wcm9wcy50YWJJZH0tYm9keWApO1xuICAgICAgICAgICAgdGFibGVCb2R5LnNjcm9sbFRvcCA9IHRoaXMuZ3JvdXBCeVJvd3NQb3NpdGlvbnNbc3RpY2t5Um93SW5kZXggKyAxXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2xhc3NlcyxcbiAgICAgICAgICAgIHRhYklkLFxuICAgICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICAgIG9yZGVyZWRDb2x1bW5zLFxuICAgICAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgICAgIG9yZGVyYWJsZSxcbiAgICAgICAgICAgIG9uQ29sdW1uc09yZGVyVXBkYXRlLFxuICAgICAgICAgICAgbWFuZGF0b3J5Q29sdW1uSWQsXG4gICAgICAgICAgICBzZWxlY3RhYmxlLFxuICAgICAgICAgICAgc2VsZWN0ZWRJZExpc3QsXG4gICAgICAgICAgICBvblJvd0NsaWNrLFxuICAgICAgICAgICAgc29ydGFibGUsXG4gICAgICAgICAgICBzb3J0ZWRDb2x1bW5JZCxcbiAgICAgICAgICAgIHNvcnREaXJlY3Rpb24sXG4gICAgICAgICAgICBvblNvcnQsXG4gICAgICAgICAgICBmaWx0ZXJhYmxlLFxuICAgICAgICAgICAgb25GaWx0ZXJDaGFuZ2UsXG4gICAgICAgICAgICBpbmZpbml0ZVNjcm9sbCxcbiAgICAgICAgICAgIGhhc05leHREYXRhcyxcbiAgICAgICAgICAgIHJlcXVlc3ROZXh0RGF0YXMsXG4gICAgICAgICAgICBjb3VudExpdmVEYXRhcyxcbiAgICAgICAgICAgIGRhdGVMb2NhbGUsXG4gICAgICAgICAgICBudW1iZXJMb2NhbGUsXG4gICAgICAgICAgICBkZW5zZSxcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHN0aWNreSxcbiAgICAgICAgICAgIHRyYW5zbGF0aW9ucyxcbiAgICAgICAgICAgIHZpZXcsXG4gICAgICAgICAgICBncm91cEJ5LFxuICAgICAgICAgICAgbG9va3VwQ29sdW1ucyxcbiAgICAgICAgICAgIGxvYWRpbmcsXG4gICAgICAgICAgICBmaXhlZENvbHVtbldpZHRoLFxuICAgICAgICAgICAgZGlzYWJsZUNvbnRleHRNZW51LFxuICAgICAgICAgICAgZm9vdGVyQ29udGVudCxcbiAgICAgICAgICAgIGRldGFpbFJvd3NPcHRpb25zLFxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCB7IGRhdGVVcGRhdGUsIGlzU2Nyb2xsVG9Cb3R0b20sIGdyb3VwQnlJZHMgfSA9IHRoaXMuc3RhdGU7XG5cbiAgICAgICAgY29uc3QgaGVhZGVySGVpZ2h0ID0gZGVuc2UgPyBjc3QuQ0VMTF9IRUFERVJfSEVJR0hUX0RFTlNFIDogY3N0LkNFTExfSEVBREVSX0hFSUdIVDtcblxuICAgICAgICBsZXQgbmJDb2x1bW5zRGlzcGxheWVkID0gMDtcbiAgICAgICAgb3JkZXJlZENvbHVtbnMuZm9yRWFjaChjb2x1bW4gPT4ge1xuICAgICAgICAgICAgaWYgKGNvbHVtbi5kaXNwbGF5ZWQgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgbmJDb2x1bW5zRGlzcGxheWVkICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5yb290fT5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGlkPXt0YWJJZH1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnRhYmxlV3JhcHBlcn1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtkaXYgPT4gdGhpcy53cmFwcGVyRGl2ID0gZGl2fVxuICAgICAgICAgICAgICAgICAgICBvblNjcm9sbD17dGhpcy5oYW5kbGVIb3Jpem9udGFsU2Nyb2xsfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFRhYmxlIGNsYXNzTmFtZT17Y2xhc3Nlcy50YWJsZX0gc3R5bGU9e3sgaGVpZ2h0OiBoZWlnaHQgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8SGlUYWJsZUhlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtjb2x1bW5zfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyZWRDb2x1bW5zPXtvcmRlcmVkQ29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlPXtkYXRhU291cmNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGFibGU9e3NlbGVjdGFibGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJZExpc3Q9e3NlbGVjdGVkSWRMaXN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnRvZ2dsZUFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZT17c29ydGFibGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkQ29sdW1uSWQ9e3NvcnRlZENvbHVtbklkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnREaXJlY3Rpb249e3NvcnREaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyYWJsZT17ZmlsdGVyYWJsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbHRlckNoYW5nZT17b25GaWx0ZXJDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXJhYmxlPXtvcmRlcmFibGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db2x1bW5zT3JkZXJVcGRhdGU9e29uQ29sdW1uc09yZGVyVXBkYXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmRhdG9yeUNvbHVtbklkPXttYW5kYXRvcnlDb2x1bW5JZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJlcXVlc3RMaXZlRGF0YXM9e3RoaXMuaGFuZGxlUmVxdWVzdExpdmVEYXRhc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudExpdmVEYXRhcz17Y291bnRMaXZlRGF0YXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUxvY2FsZT17ZGF0ZUxvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGU9e251bWJlckxvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZW5zZT17ZGVuc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXtoZWFkZXJIZWlnaHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5PXtzdGlja3l9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldz17dmlld31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbnM9e3RyYW5zbGF0aW9ucy50YWJsZUhlYWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwQ29sdW1ucz17bG9va3VwQ29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZENvbHVtbldpZHRoPXtmaXhlZENvbHVtbldpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxIaVRhYmxlQm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYklkPXt0YWJJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtjb2x1bW5zfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyZWRDb2x1bW5zPXtvcmRlcmVkQ29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlPXtkYXRhU291cmNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGFibGU9e3NlbGVjdGFibGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJZExpc3Q9e3NlbGVjdGVkSWRMaXN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZENvbHVtbklkPXtzb3J0ZWRDb2x1bW5JZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy50b2dnbGVJdGVtfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVVcGRhdGU9e2RhdGVVcGRhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZUxvY2FsZT17ZGF0ZUxvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJMb2NhbGU9e251bWJlckxvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZW5zZT17ZGVuc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PXtoZWlnaHQgLSBoZWFkZXJIZWlnaHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5PXtzdGlja3l9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldz17dmlld31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblJvd0NsaWNrPXtvblJvd0NsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2Nyb2xsPXt0aGlzLmhhbmRsZVZlcnRpY2FsU2Nyb2xsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZE5ld1Jvd1JlZnM9e3RoaXMuYWRkTmV3Um93UmVmc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbnM9e3RyYW5zbGF0aW9ucy50YWJsZUJvZHl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBCeT17Z3JvdXBCeX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrTmV4dD17dGhpcy5oYW5kbGVOZXh0U3RpY2t5Um93fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwQnlJZHM9e2dyb3VwQnlJZHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwQ29sdW1ucz17bG9va3VwQ29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkQ29sdW1uV2lkdGg9e2ZpeGVkQ29sdW1uV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZUNvbnRleHRNZW51PXtkaXNhYmxlQ29udGV4dE1lbnV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsUm93c09wdGlvbnM9e2RldGFpbFJvd3NPcHRpb25zfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpbmZpbml0ZVNjcm9sbCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpVGFibGVGb290ZXJTY3JvbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSWQ9e3RhYklkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNOZXh0RGF0YXM9e2hhc05leHREYXRhc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdE5leHREYXRhcz17cmVxdWVzdE5leHREYXRhc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4QXV0b1JlcXVlc3Q9ezN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU2Nyb2xsVG9Cb3R0b209e2lzU2Nyb2xsVG9Cb3R0b219XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9ucz17dHJhbnNsYXRpb25zLnRhYmxlRm9vdGVyU2Nyb2xsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgeyFpbmZpbml0ZVNjcm9sbCAmJiBmb290ZXJDb250ZW50ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlUYWJsZUZvb3RlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYkNvbHVtbnNEaXNwbGF5ZWQ9e25iQ29sdW1uc0Rpc3BsYXllZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldz17dmlld31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtmb290ZXJDb250ZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSGlUYWJsZUZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvVGFibGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPEhpVGFibGVDb250ZXh0TWVudVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSWQ9e3RhYklkfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25TZWFyY2g9e3RoaXMucHJvcHMub25TZWFyY2h9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblJlZGlyZWN0PXt0aGlzLnByb3BzLm9uUmVkaXJlY3R9XG4gICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BiYWNrLXRvLXRvcC1idXR0b24gJHtjbGFzc2VzLmJhY2tUb1RvcEJ1dHRvbkNvbnRhaW5lcn1gfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxIaUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJyYWlzZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmJhY2tUb1RvcEJ1dHRvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLnNjcm9sbFRvVG9wKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93VXAgY2xhc3NOYW1lPXtjbGFzc2VzLmJhY2tUb1RvcEJ1dHRvbkFycm93fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2xhdGlvbnMuYmFja190b190b3B9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93VXAgY2xhc3NOYW1lPXtjbGFzc2VzLmJhY2tUb1RvcEJ1dHRvbkFycm93fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9IaUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZXMoc3R5bGVzLCB7IHdpdGhUaGVtZTogdHJ1ZSwgbmFtZTogJ0htdWlIaVRhYmxlJyB9KShIaVRhYmxlKTtcbiJdfQ==
|
31274
31264
|
|
31275
31265
|
/***/ }),
|
31276
31266
|
/* 293 */
|
@@ -32899,51 +32889,44 @@ var HiSelectableListItem = function (_React$Component) {
|
|
32899
32889
|
listItemProps.button = false;
|
32900
32890
|
}
|
32901
32891
|
|
32902
|
-
var iconAll = void 0;
|
32903
|
-
if (item.id === '_all' && item.icon) {
|
32904
|
-
iconAll = _react2.default.createElement(_HiIconBuilder2.default, { icon: item.icon, className: classes.checkboxIcon });
|
32905
|
-
}
|
32906
|
-
|
32907
32892
|
// calcul du padding left
|
32908
32893
|
var paddingLeft = 0;
|
32909
32894
|
|
32910
32895
|
if (leftPadding) {
|
32911
32896
|
paddingLeft = leftPadding;
|
32912
|
-
} else {
|
32913
|
-
// Si pas de hiérarchie, padding de 8px
|
32914
|
-
if (!
|
32915
|
-
|
32916
|
-
|
32897
|
+
} else if (!hierarchic) {
|
32898
|
+
// Si pas de hiérarchie et sans checkbox, padding de 8px
|
32899
|
+
if (!effectiveCheckbox) {
|
32900
|
+
paddingLeft = 8;
|
32901
|
+
}
|
32902
|
+
} else if (selectable) {
|
32903
|
+
// Si item selectionnable
|
32904
|
+
// Si parent selectionnable
|
32905
|
+
if (parentItemSelectable) {
|
32906
|
+
// Si l'item contient une checkbox
|
32907
|
+
if (effectiveCheckbox) {
|
32908
|
+
paddingLeft = 16 * level;
|
32909
|
+
} else {
|
32910
|
+
paddingLeft = 16 * (level + 1);
|
32917
32911
|
}
|
32918
|
-
} else if (
|
32919
|
-
|
32920
|
-
|
32921
|
-
|
32922
|
-
|
32923
|
-
if (effectiveCheckbox) {
|
32924
|
-
paddingLeft = 16 * level;
|
32925
|
-
} else {
|
32926
|
-
paddingLeft = 16 * (level + 1);
|
32927
|
-
}
|
32928
|
-
} else if (level > 0) {
|
32929
|
-
if (effectiveCheckbox) {
|
32930
|
-
paddingLeft = 16 * (level - 1);
|
32931
|
-
} else {
|
32932
|
-
paddingLeft = 16 * level;
|
32933
|
-
}
|
32934
|
-
} else if (!effectiveCheckbox) {
|
32935
|
-
if (item.id === '_all') {
|
32936
|
-
paddingLeft = 16;
|
32937
|
-
} else {
|
32938
|
-
paddingLeft = 16 * level;
|
32939
|
-
}
|
32912
|
+
} else if (level > 0) {
|
32913
|
+
if (effectiveCheckbox) {
|
32914
|
+
paddingLeft = 16 * (level - 1);
|
32915
|
+
} else {
|
32916
|
+
paddingLeft = 16 * level;
|
32940
32917
|
}
|
32941
|
-
} else {
|
32942
|
-
|
32943
|
-
|
32918
|
+
} else if (!effectiveCheckbox) {
|
32919
|
+
if (item.id === '_all') {
|
32920
|
+
paddingLeft = 16;
|
32921
|
+
} else {
|
32944
32922
|
paddingLeft = 16 * level;
|
32945
32923
|
}
|
32946
32924
|
}
|
32925
|
+
} else {
|
32926
|
+
paddingLeft = 16; // Padding de 16 par défaut
|
32927
|
+
if (level > 0) {
|
32928
|
+
paddingLeft = 16 * level;
|
32929
|
+
}
|
32947
32930
|
}
|
32948
32931
|
|
32949
32932
|
listItemProps.style = { paddingLeft: paddingLeft + 'px' };
|
@@ -32953,8 +32936,8 @@ var HiSelectableListItem = function (_React$Component) {
|
|
32953
32936
|
iconDisplay = hoverIcon;
|
32954
32937
|
} else if (item.hasChildren) {
|
32955
32938
|
iconDisplay = parentIcon;
|
32956
|
-
} else if (item.
|
32957
|
-
iconDisplay =
|
32939
|
+
} else if (item.type === 'icon' && item.icon) {
|
32940
|
+
iconDisplay = _react2.default.createElement(_HiIconBuilder2.default, { icon: item.icon, className: classes.checkboxIcon });
|
32958
32941
|
}
|
32959
32942
|
|
32960
32943
|
return _react2.default.createElement(
|
@@ -33082,7 +33065,7 @@ HiSelectableListItem.defaultProps = {
|
|
33082
33065
|
}
|
33083
33066
|
};
|
33084
33067
|
exports.default = (0, _withStyles2.default)(styles, { name: 'HmuiHiSelectableList' })(HiSelectableListItem);
|
33085
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9IaVNlbGVjdGFibGVMaXN0L0hpU2VsZWN0YWJsZUxpc3RJdGVtLmpzIl0sIm5hbWVzIjpbInN0eWxlcyIsImxpc3RJdGVtIiwicGFkZGluZyIsImZvbnRXZWlnaHQiLCJ0aGVtZSIsInR5cG9ncmFwaHkiLCJmb250V2VpZ2h0UmVndWxhciIsIm1heEhlaWdodCIsImxpc3RJdGVtVGl0bGUiLCJmb250V2VpZ2h0TGlnaHQiLCJsaXN0SXRlbUhvdmVyIiwiYmFja2dyb3VuZENvbG9yIiwicGFsZXR0ZSIsImhvdmVyIiwiZm9udFdlaWdodE1lZGl1bSIsImRpc2FibGVkIiwiY29sb3IiLCJuZXV0cmFsIiwibGlnaHQiLCJjZW50ZXJlZCIsInRleHRBbGlnbiIsIndpZHRoIiwic2VsZWN0ZWQiLCJjaGlsZExpc3RJdGVtIiwicGFkZGluZ0xlZnQiLCJzcGFjaW5nIiwidW5pdCIsImxpc3RJdGVtSWNvbkNoZWNrZWQiLCJidXNpbmVzcyIsInByaW1hcnkiLCJub3JtYWwiLCJsaXN0SXRlbUNvbnRlbnQiLCJ3aGl0ZVNwYWNlIiwib3ZlcmZsb3ciLCJ0ZXh0T3ZlcmZsb3ciLCJib2R5MSIsImxpc3RJdGVtU2Vjb25kYXJ5VGV4dCIsImJvZHk1IiwibWFyZ2luTGVmdCIsImxpc3RJdGVtSW5mb1RleHQiLCJib2R5NCIsIm1hcmdpbiIsImNoZWNrYm94IiwiaGVpZ2h0IiwiZm9udFNpemUiLCJtYXJnaW5SaWdodCIsImltZ0xpc3RJdGVtIiwidmVydGljYWxBbGlnbiIsImNoZWNrYm94SWNvbiIsInRleHQiLCJpY29uIiwibmJDaGlsZHJlbkluZGljYXRvciIsInBvc2l0aW9uIiwicmlnaHQiLCJib2R5MyIsImxhYmVsSGlnaGxpZ2h0IiwibGFiZWxIaWdobGlnaHRDb2xvcmVkIiwicHJpbWFyeUhpZ2hsaWdodCIsInRleHRUcmFuc2Zvcm0iLCJIaVNlbGVjdGFibGVMaXN0SXRlbSIsInByb3BzIiwiYnVpbGRMaXN0SXRlbSIsImNsYXNzZXMiLCJ0eXBlIiwiaXRlbSIsIm5iQ2hpbGRyZW4iLCJ0cmFuc2xhdGlvbnMiLCJlZmZlY3RpdmVUeXBlIiwiY2hpbGRyZW5JbmRpY2F0b3IiLCJvbmVfY2hpbGQiLCJyZXBsYWNlIiwibl9jaGlsZHJlbiIsImVmZmVjdGl2ZUNoZWNrYm94IiwiaWQiLCJnZXRJdGVtTGFiZWwiLCJzZWNvbmRhcnlMYWJlbCIsImltZyIsIml0ZW1QcmltYXJ5SGlnaGxpZ2h0Q2xhc3MiLCJpdGVtVGV4dENsYXNzIiwic3RhdGUiLCJiaW5kIiwidG9nZ2xlSG92ZXIiLCJzZXRTdGF0ZSIsImxhYmVsIiwibUxhYmVsIiwiX19odG1sIiwib25TZWxlY3QiLCJpbmRldGVybWluYXRlIiwicGFyZW50SXRlbVNlbGVjdGFibGUiLCJwYXJlbnRJY29uIiwiaG92ZXJJY29uIiwiY2hlY2tlZEljb24iLCJsZXZlbCIsImhpZXJhcmNoaWMiLCJsZWZ0UGFkZGluZyIsImVmZmVjdGl2ZURpc2FibGVkIiwibGlzdEl0ZW1DbGFzcyIsImhhc0NoaWxkcmVuIiwibGlzdEl0ZW1Qcm9wcyIsImtleSIsImNsYXNzTmFtZSIsIm9uTW91c2VFbnRlciIsIm9uTW91c2VMZWF2ZSIsImJ1dHRvbiIsImNvbXBvbmVudCIsIm9uQ2xpY2siLCJldmVudCIsInNlbGVjdGFibGUiLCJpY29uQWxsIiwic3R5bGUiLCJpY29uRGlzcGxheSIsImNoZWNrZWQiLCJpbmZvIiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwiYm9vbCIsIm5vZGUiLCJvYmplY3QiLCJpc1JlcXVpcmVkIiwibnVtYmVyIiwiZnVuYyIsInBhcmVudEl0ZW0iLCJzdHJpbmciLCJkZWZhdWx0UHJvcHMiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUFFTyxJQUFNQSwwQkFBUyxTQUFUQSxNQUFTO0FBQUEsV0FBVTtBQUM1QkMs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QUFjbEIzQixrQkFBYztBQUNWSyxvQkFBWSxVQURGO0FBRVZGLG1CQUFXO0FBRkQ7QUFkSSxDO2tCQW1SWCwwQkFBV3JFLE1BQVgsRUFBbUIsRUFBRTRILE1BQU0sc0JBQVIsRUFBbkIsRUFBcURqRSxvQkFBckQsQyIsImZpbGUiOiJIaVNlbGVjdGFibGVMaXN0SXRlbS5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9tZmF6aW8vZGV2L3Byb2plY3RzL2hpcGF5LW1hdGVyaWFsLXVpIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB3YXJuaW5nIGZyb20gJ3dhcm5pbmcnO1xuaW1wb3J0IHsgQ2hlY2tib3hCbGFua091dGxpbmUsIENoZWNrYm94TWFya2VkIH0gZnJvbSAnbWRpLW1hdGVyaWFsLXVpJztcbmltcG9ydCBMaXN0SXRlbSBmcm9tICdtYXRlcmlhbC11aS9MaXN0L0xpc3RJdGVtJztcbmltcG9ydCBIaUNoZWNrYm94IGZyb20gJy4uL0hpQ2hlY2tib3gnO1xuaW1wb3J0IHdpdGhTdHlsZXMgZnJvbSAnLi4vc3R5bGVzL3dpdGhTdHlsZXMnO1xuaW1wb3J0IHsgZXNjYXBlSFRNTCB9IGZyb20gJy4uL3V0aWxzL2hpSGVscGVycyc7XG5pbXBvcnQgSGlJY29uQnVpbGRlciBmcm9tICcuLi91dGlscy9IaUljb25CdWlsZGVyJztcbmltcG9ydCBIaUNvbG9yZWRMYWJlbCBmcm9tICcuLi9IaUNvbG9yZWRMYWJlbCc7XG5cbmV4cG9ydCBjb25zdCBzdHlsZXMgPSB0aGVtZSA9PiAoe1xuICAgIGxpc3RJdGVtOiB7XG4gICAgICAgIHBhZGRpbmc6IGAkezl9cHggMHB4YCxcbiAgICAgICAgZm9udFdlaWdodDogdGhlbWUudHlwb2dyYXBoeS5mb250V2VpZ2h0UmVndWxhcixcbiAgICAgICAgbWF4SGVpZ2h0OiA0MCxcbiAgICB9LFxuICAgIGxpc3RJdGVtVGl0bGU6IHtcbiAgICAgICAgcGFkZGluZzogYCR7OX1weCAwcHhgLFxuICAgICAgICBmb250V2VpZ2h0OiB0aGVtZS50eXBvZ3JhcGh5LmZvbnRXZWlnaHRMaWdodCxcbiAgICB9LFxuICAgIGxpc3RJdGVtSG92ZXI6IHtcbiAgICAgICAgJyY6aG92ZXI6bm90KCRkaXNhYmxlZCknOiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnBhbGV0dGUuaG92ZXIsXG4gICAgICAgICAgICBmb250V2VpZ2h0OiB0aGVtZS50eXBvZ3JhcGh5LmZvbnRXZWlnaHRNZWRpdW0sXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBkaXNhYmxlZDoge1xuICAgICAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS5uZXV0cmFsLmxpZ2h0LFxuICAgICAgICBmb250V2VpZ2h0OiB0aGVtZS50eXBvZ3JhcGh5LmZvbnRXZWlnaHRMaWdodCxcbiAgICB9LFxuICAgIGNlbnRlcmVkOiB7XG4gICAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgfSxcbiAgICBzZWxlY3RlZDoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnBhbGV0dGUuc2VsZWN0ZWQsXG4gICAgfSxcbiAgICBjaGlsZExpc3RJdGVtOiB7XG4gICAgICAgIHBhZGRpbmdMZWZ0OiB0aGVtZS5zcGFjaW5nLnVuaXQgKiAyLFxuICAgIH0sXG4gICAgbGlzdEl0ZW1JY29uQ2hlY2tlZDoge1xuICAgICAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS5idXNpbmVzcy5wcmltYXJ5Lm5vcm1hbCxcbiAgICB9LFxuICAgIGxpc3RJdGVtQ29udGVudDoge1xuICAgICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gICAgICAgIC4uLnRoZW1lLnR5cG9ncmFwaHkuYm9keTEsXG4gICAgICAgIGZvbnRXZWlnaHQ6ICdpbmhlcml0JyxcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICB9LFxuICAgIGxpc3RJdGVtU2Vjb25kYXJ5VGV4dDoge1xuICAgICAgICAuLi50aGVtZS50eXBvZ3JhcGh5LmJvZHk1LFxuICAgICAgICBmb250V2VpZ2h0OiB0aGVtZS50eXBvZ3JhcGh5LmZvbnRXZWlnaHRMaWdodCxcbiAgICAgICAgbWFyZ2luTGVmdDogdGhlbWUuc3BhY2luZy51bml0LFxuICAgICAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS5uZXV0cmFsLm5vcm1hbCxcbiAgICB9LFxuICAgIGxpc3RJdGVtSW5mb1RleHQ6IHtcbiAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICAgICAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS5uZXV0cmFsLm5vcm1hbCxcbiAgICAgICAgLi4udGhlbWUudHlwb2dyYXBoeS5ib2R5NCxcbiAgICAgICAgZm9udFdlaWdodDogdGhlbWUudHlwb2dyYXBoeS5mb250V2VpZ2h0UmVndWxhcixcbiAgICAgICAgdGV4dEFsaWduOiAncmlnaHQnLFxuICAgICAgICBtYXJnaW46ICcwIDhweCcsXG4gICAgICAgIHdpZHRoOiAnLXdlYmtpdC1maWxsLWF2YWlsYWJsZScsXG4gICAgfSxcbiAgICBjaGVja2JveDoge1xuICAgICAgICB3aWR0aDogMjAsXG4gICAgICAgIGhlaWdodDogMjAsXG4gICAgICAgIGZvbnRTaXplOiAyMCxcbiAgICAgICAgbWFyZ2luUmlnaHQ6IDIwLFxuICAgICAgICBtYXJnaW5MZWZ0OiAyMCxcbiAgICB9LFxuICAgIGltZ0xpc3RJdGVtOiB7XG4gICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgaGVpZ2h0OiAnYXV0bycsXG4gICAgICAgIG1hcmdpblJpZ2h0OiA4LFxuICAgICAgICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbiAgICB9LFxuICAgIGNoZWNrYm94SWNvbjoge1xuICAgICAgICB3aWR0aDogMjAsXG4gICAgICAgIGhlaWdodDogMjAsXG4gICAgICAgIG1hcmdpbkxlZnQ6IDIsXG4gICAgICAgIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuICAgICAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS50ZXh0Lmljb24sXG4gICAgfSxcbiAgICBpY29uOiB7XG4gICAgICAgIHdpZHRoOiAyMCxcbiAgICAgICAgaGVpZ2h0OiAyMCxcbiAgICAgICAgbWFyZ2luUmlnaHQ6IDgsXG4gICAgICAgIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuICAgICAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS50ZXh0Lmljb24sXG4gICAgfSxcbiAgICBuYkNoaWxkcmVuSW5kaWNhdG9yOiB7XG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICByaWdodDogMTAsXG4gICAgICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlLm5ldXRyYWwubm9ybWFsLFxuICAgICAgICAuLi50aGVtZS50eXBvZ3JhcGh5LmJvZHkzLFxuICAgIH0sXG4gICAgbGFiZWxIaWdobGlnaHQ6IHtcbiAgICAgICAgJyY+c3Ryb25nJzoge1xuICAgICAgICAgICAgZm9udFdlaWdodDogdGhlbWUudHlwb2dyYXBoeS5mb250V2VpZ2h0TWVkaXVtLFxuICAgICAgICAgICAgY29sb3I6ICcjMDAwMDAwJyxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGxhYmVsSGlnaGxpZ2h0Q29sb3JlZDoge1xuICAgICAgICAnJj5zdHJvbmcnOiB7XG4gICAgICAgICAgICBmb250V2VpZ2h0OiB0aGVtZS50eXBvZ3JhcGh5LmZvbnRXZWlnaHRNZWRpdW0sXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBwcmltYXJ5SGlnaGxpZ2h0OiB7XG4gICAgICAgIGZvbnRXZWlnaHQ6IHRoZW1lLnR5cG9ncmFwaHkuZm9udFdlaWdodE1lZGl1bSxcbiAgICAgICAgY29sb3I6IHRoZW1lLnBhbGV0dGUuYnVzaW5lc3MucHJpbWFyeS5ub3JtYWwsXG4gICAgICAgIHRleHRUcmFuc2Zvcm06ICd1cHBlcmNhc2UnLFxuICAgIH0sXG59KTtcblxuLyoqXG4gKiBDb25zdHJ1aXQgdW4gw6lsw6ltZW50IGRlIGxpc3RlIHPDqWxlY3Rpb25uYWJsZSAoYXZlYyBjaGVja2JveClcbiAqL1xuY2xhc3MgSGlTZWxlY3RhYmxlTGlzdEl0ZW0gZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAgIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBZmZpY2hlIHVuZSBjaGVja2JveFxuICAgICAgICAgKi9cbiAgICAgICAgY2hlY2tib3g6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogSWNvbiBhZmZpY2jDqSBsb3JzcXVlIGwnaXRlbSBlc3Qgc8OpbGVjdGlvbm7DqVxuICAgICAgICAgKi9cbiAgICAgICAgY2hlY2tlZEljb246IFByb3BUeXBlcy5ub2RlLFxuICAgICAgICAvKipcbiAgICAgICAgICogVXNlZnVsIHRvIGV4dGVuZCB0aGUgc3R5bGUgYXBwbGllZCB0byBjb21wb25lbnRzLlxuICAgICAgICAgKi9cbiAgICAgICAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFwcGxpcXVlIGxlIHN0eWxlIGV0IGTDqXNhY3RpdmUgbGUgY2xpY2tcbiAgICAgICAgICovXG4gICAgICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNpIFwidHJ1ZVwiLCBsaXN0ZSBhdmVjIGhpZXJhcmNoaWVcbiAgICAgICAgICovXG4gICAgICAgIGhpZXJhcmNoaWM6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogSWNvbiBhZmZpY2jDqSBsb3JzcXVlIGwnaXRlbSBuJ2VzdCBwYXMgc8OpbGVjdGlvbm7DqSBldCBxdSdvbiBsZSBzdXJ2b2xlXG4gICAgICAgICAqL1xuICAgICAgICBob3Zlckljb246IFByb3BUeXBlcy5ub2RlLFxuICAgICAgICAvKipcbiAgICAgICAgICogSWNvbiBhZmZpY2jDqSBsb3JzcXVlIGwnaXRlbSBuJ2VzdCBwYXMgc8OpbGVjdGlvbm7DqVxuICAgICAgICAgKi9cbiAgICAgICAgaWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJdGVtcyBzw6lsZWN0aW9ubsOpIHBhcnRpZWxsZW1lbnRcbiAgICAgICAgICovXG4gICAgICAgIGluZGV0ZXJtaW5hdGU6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogw4lsw6ltZW50IGRvbnQgbGEgc3RydWN0dXJlIGF0dGVuZHVlIGTDqXBlbmQgZHUgdHlwZVxuICAgICAgICAgKiBwYXJhbcOodHJlcyByZXF1aXM6XG4gICAgICAgICAqIC0gaWQ6IHN0cmluZy9udW1iZXJcbiAgICAgICAgICogLSBsYWJlbDogc3RyaW5nXG4gICAgICAgICAqL1xuICAgICAgICBpdGVtOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQYWRkaW5nIHBhciBkw6lmYXV0IGRlcyDDqWzDqW1lbnRzXG4gICAgICAgICAqL1xuICAgICAgICBsZWZ0UGFkZGluZzogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE5pdmVhdSBkZSBsJ2l0ZW1cbiAgICAgICAgICovXG4gICAgICAgIGxldmVsOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgICAvKipcbiAgICAgICAgICogTm9tYnJlIGQnaXRlbXMgZW5mYW50c1xuICAgICAgICAgKi9cbiAgICAgICAgbmJDaGlsZHJlbjogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIMOgIGxhIHPDqWxlY3Rpb24gZGUgbCfDqWzDqW1lbnRcbiAgICAgICAgICovXG4gICAgICAgIG9uU2VsZWN0OiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEljb24gYWZmaWNow6kgbG9yc3F1J3VuIGl0ZW0gcGFyZW50IG4nZXN0IHBhcyBzw6lsZWN0aW9ubsOpXG4gICAgICAgICAqL1xuICAgICAgICBwYXJlbnRJY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFmZmljaGUgbCdpdGVtIGVuIHRhbnQgcXUnaXRlbSBwYXJlbnQgZCd1biBncm91cGVcbiAgICAgICAgICovXG4gICAgICAgIHBhcmVudEl0ZW06IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogTGVzIGl0ZW1zIHBhcmVudHMgc29udCBzw6lsZWN0aW9ubmFibGVzXG4gICAgICAgICAqL1xuICAgICAgICBwYXJlbnRJdGVtU2VsZWN0YWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDDiXRhdCBkZSBsJ8OpbMOpbWVudFxuICAgICAgICAgKi9cbiAgICAgICAgc2VsZWN0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogVHJhZHVjdGlvbnMgKHBhciBkw6lmYXV0IGVuIGFuZ2xhaXMpXG4gICAgICAgICAqL1xuICAgICAgICB0cmFuc2xhdGlvbnM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUeXBlIGRlIGwnw6lsw6ltZW50XG4gICAgICAgICAqL1xuICAgICAgICB0eXBlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIH07XG5cbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgIGNoZWNrYm94OiBmYWxzZSxcbiAgICAgICAgcGFyZW50SXRlbTogZmFsc2UsXG4gICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgaW5kZXRlcm1pbmF0ZTogZmFsc2UsXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgcGFyZW50SXRlbVNlbGVjdGFibGU6IGZhbHNlLFxuICAgICAgICBuYkNoaWxkcmVuOiAwLFxuICAgICAgICBpY29uOiA8Q2hlY2tib3hCbGFua091dGxpbmUgc3R5bGU9e3sgd2lkdGg6IDIwLCBoZWlnaHQ6IDIwIH19IC8+LFxuICAgICAgICBwYXJlbnRJY29uOiA8Q2hlY2tib3hCbGFua091dGxpbmUgc3R5bGU9e3sgd2lkdGg6IDIwLCBoZWlnaHQ6IDIwIH19IC8+LFxuICAgICAgICBob3Zlckljb246IDxDaGVja2JveEJsYW5rT3V0bGluZSBzdHlsZT17eyB3aWR0aDogMjAsIGhlaWdodDogMjAgfX0gLz4sXG4gICAgICAgIGNoZWNrZWRJY29uOiA8Q2hlY2tib3hNYXJrZWQgc3R5bGU9e3sgd2lkdGg6IDIwLCBoZWlnaHQ6IDIwIH19IC8+LFxuICAgICAgICBoaWVyYXJjaGljOiBmYWxzZSxcbiAgICAgICAgdHJhbnNsYXRpb25zOiB7XG4gICAgICAgICAgICBuX2NoaWxkcmVuOiAnJXMgaXRlbXMnLFxuICAgICAgICAgICAgb25lX2NoaWxkOiAnJXMgaXRlbScsXG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcblxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgaG92ZXI6IGZhbHNlLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuYnVpbGRMaXN0SXRlbSA9IHRoaXMuYnVpbGRMaXN0SXRlbS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLnRvZ2dsZUhvdmVyID0gdGhpcy50b2dnbGVIb3Zlci5iaW5kKHRoaXMpO1xuICAgIH1cblxuICAgIHRvZ2dsZUhvdmVyKCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgaG92ZXI6ICF0aGlzLnN0YXRlLmhvdmVyIH0pO1xuICAgIH1cblxuICAgIGdldEl0ZW1MYWJlbChpdGVtKSB7XG4gICAgICAgIGNvbnN0IHsgY2xhc3NlcyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKCFpdGVtLmxhYmVsSGlnaGxpZ2h0ICYmIGl0ZW0uY29sb3IgJiYgdGhpcy5wcm9wcy5zZWxlY3RlZCkge1xuICAgICAgICAgICAgcmV0dXJuIDxIaUNvbG9yZWRMYWJlbCBjb2xvcj17aXRlbS5jb2xvcn0gbGFiZWw9e2l0ZW0ubGFiZWx9IC8+O1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0ubGFiZWxIaWdobGlnaHQpIHtcbiAgICAgICAgICAgIGNvbnN0IG1MYWJlbCA9IChcbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2l0ZW0uY29sb3IgPyBjbGFzc2VzLmxhYmVsSGlnaGxpZ2h0Q29sb3JlZCA6IGNsYXNzZXMubGFiZWxIaWdobGlnaHR9XG4gICAgICAgICAgICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBfX2h0bWw6IGVzY2FwZUhUTUwoaXRlbS5sYWJlbEhpZ2hsaWdodCksXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoaXRlbS5jb2xvciAmJiB0aGlzLnByb3BzLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxIaUNvbG9yZWRMYWJlbCBjb2xvcj17aXRlbS5jb2xvcn0gbGFiZWw9e21MYWJlbH0gLz47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbUxhYmVsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpdGVtLmxhYmVsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJ1aWxkIGxpc3QgaXRlbSBmcm9tIHR5cGVcbiAgICAgKi9cbiAgICBidWlsZExpc3RJdGVtID0gKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGNsYXNzZXMsIHR5cGUsIGl0ZW0sIG5iQ2hpbGRyZW4sIHRyYW5zbGF0aW9ucywgY2hlY2tib3ggfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IGVmZmVjdGl2ZVR5cGUgPSB0eXBlb2YgaXRlbS50eXBlICE9PSAndW5kZWZpbmVkJyA/IGl0ZW0udHlwZSA6IHR5cGU7XG5cbiAgICAgICAgbGV0IGNoaWxkcmVuSW5kaWNhdG9yID0gJyc7XG4gICAgICAgIGlmIChuYkNoaWxkcmVuID4gMCkge1xuICAgICAgICAgICAgY2hpbGRyZW5JbmRpY2F0b3IgPSAoXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc2VzLm5iQ2hpbGRyZW5JbmRpY2F0b3J9PlxuICAgICAgICAgICAgICAgICAgICB7bmJDaGlsZHJlbiA8IDJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdHJhbnNsYXRpb25zLm9uZV9jaGlsZC5yZXBsYWNlKCclcycsIG5iQ2hpbGRyZW4pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHRyYW5zbGF0aW9ucy5uX2NoaWxkcmVuLnJlcGxhY2UoJyVzJywgbmJDaGlsZHJlbil9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGVmZmVjdGl2ZVR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2ljb24nOlxuICAgICAgICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBpdGVtLmljb24gIT09ICd1bmRlZmluZWQnLFxuICAgICAgICAgICAgICAgICAgICAnSGlwYXktTWF0ZXJpYWwtVUk6IGl0ZW0gd2l0aCB0eXBlIGljb24gc2hvdWxkIGhhdmUgaWNvbiBwYXJhbWV0ZXInLFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBlZmZlY3RpdmVDaGVja2JveCA9XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBpdGVtLmNoZWNrYm94ICE9PSAndW5kZWZpbmVkJyA/IGl0ZW0uY2hlY2tib3ggOiBjaGVja2JveDtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5saXN0SXRlbUNvbnRlbnR9IGRhdGEtaWQ9e2l0ZW0uaWR9PlxuICAgICAgICAgICAgICAgICAgICAgICAgeyFlZmZlY3RpdmVDaGVja2JveCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpSWNvbkJ1aWxkZXIgaWNvbj17aXRlbS5pY29ufSBjbGFzc05hbWU9e2NsYXNzZXMuaWNvbn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5nZXRJdGVtTGFiZWwoaXRlbSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzZXMubGlzdEl0ZW1TZWNvbmRhcnlUZXh0fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXRlbS5zZWNvbmRhcnlMYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjaGlsZHJlbkluZGljYXRvcn1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgJ2ltYWdlJzpcbiAgICAgICAgICAgICAgICBsZXQgaW1nID0gJyc7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpdGVtLmltZyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaW1nID0gPGltZyBzcmM9e2l0ZW0uaW1nfSBhbHQ9e2l0ZW0uaW1nfSBjbGFzc05hbWU9e2NsYXNzZXMuaW1nTGlzdEl0ZW19IC8+O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmxpc3RJdGVtQ29udGVudH0gZGF0YS1pZD17aXRlbS5pZH0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aW1nfVxuICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMuZ2V0SXRlbUxhYmVsKGl0ZW0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc2VzLmxpc3RJdGVtU2Vjb25kYXJ5VGV4dH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2l0ZW0uc2Vjb25kYXJ5TGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y2hpbGRyZW5JbmRpY2F0b3J9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjYXNlICdwcmltYXJ5LWhpZ2hsaWdodCc6IC8vIHVzZWQgaW4gRGF0ZVJhbmdlU2VsZWN0b3IgZm9yIEN1c3RvbSBpdGVtXG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbVByaW1hcnlIaWdobGlnaHRDbGFzcyA9IGNsYXNzTmFtZXMoXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzZXMubGlzdEl0ZW1Db250ZW50LFxuICAgICAgICAgICAgICAgICAgICBjbGFzc2VzLnByaW1hcnlIaWdobGlnaHQsXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtpdGVtUHJpbWFyeUhpZ2hsaWdodENsYXNzfSBkYXRhLWlkPXtpdGVtLmlkfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLmdldEl0ZW1MYWJlbChpdGVtKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtVGV4dENsYXNzID0gY2xhc3NOYW1lcyhjbGFzc2VzLmxpc3RJdGVtQ29udGVudCwge1xuICAgICAgICAgICAgICAgICAgICBbY2xhc3Nlcy5jZW50ZXJlZF06IGl0ZW0uY2VudGVyZWQsXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17aXRlbVRleHRDbGFzc30gZGF0YS1pZD17aXRlbS5pZH0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5nZXRJdGVtTGFiZWwoaXRlbSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzZXMubGlzdEl0ZW1TZWNvbmRhcnlUZXh0fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aXRlbS5zZWNvbmRhcnlMYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjaGlsZHJlbkluZGljYXRvcn1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNsYXNzZXMsXG4gICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgIGl0ZW0sXG4gICAgICAgICAgICBvblNlbGVjdCxcbiAgICAgICAgICAgIGNoZWNrYm94LFxuICAgICAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgICAgICBpbmRldGVybWluYXRlLFxuICAgICAgICAgICAgcGFyZW50SXRlbVNlbGVjdGFibGUsXG4gICAgICAgICAgICBpY29uLFxuICAgICAgICAgICAgcGFyZW50SWNvbixcbiAgICAgICAgICAgIGhvdmVySWNvbixcbiAgICAgICAgICAgIGNoZWNrZWRJY29uLFxuICAgICAgICAgICAgbGV2ZWwsXG4gICAgICAgICAgICBoaWVyYXJjaGljLFxuICAgICAgICAgICAgbGVmdFBhZGRpbmcsXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJdGVtIHBhcmFtcyBvdmVycmlkZSBpbmhlcml0ZWQgcHJvcHNcbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGVmZmVjdGl2ZUNoZWNrYm94ID0gdHlwZW9mIGl0ZW0uY2hlY2tib3ggIT09ICd1bmRlZmluZWQnID8gaXRlbS5jaGVja2JveCA6IGNoZWNrYm94O1xuICAgICAgICBjb25zdCBlZmZlY3RpdmVEaXNhYmxlZCA9IHR5cGVvZiBpdGVtLmRpc2FibGVkICE9PSAndW5kZWZpbmVkJyA/IGl0ZW0uZGlzYWJsZWQgOiBkaXNhYmxlZDtcblxuICAgICAgICAvLyBidWlsZCBjbGFzc1xuICAgICAgICBsZXQgbGlzdEl0ZW1DbGFzcyA9IGNsYXNzTmFtZXMoY2xhc3Nlcy5saXN0SXRlbSwgY2xhc3Nlcy5saXN0SXRlbUhvdmVyLCB7XG4gICAgICAgICAgICBbY2xhc3Nlcy5kaXNhYmxlZF06IGVmZmVjdGl2ZURpc2FibGVkLFxuICAgICAgICAgICAgW2NsYXNzZXMuc2VsZWN0ZWRdOiBzZWxlY3RlZCxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpdGVtLmhhc0NoaWxkcmVuICYmIHBhcmVudEl0ZW1TZWxlY3RhYmxlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgbGlzdEl0ZW1DbGFzcyA9IGNsYXNzTmFtZXMoY2xhc3Nlcy5saXN0SXRlbVRpdGxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGJ1aWxkIHByb3BzXG4gICAgICAgIGxldCBsaXN0SXRlbVByb3BzID0ge1xuICAgICAgICAgICAga2V5OiBpdGVtLmlkLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiBsaXN0SXRlbUNsYXNzLFxuICAgICAgICAgICAgb25Nb3VzZUVudGVyOiB0aGlzLnRvZ2dsZUhvdmVyLFxuICAgICAgICAgICAgb25Nb3VzZUxlYXZlOiB0aGlzLnRvZ2dsZUhvdmVyLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICghZWZmZWN0aXZlRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGxpc3RJdGVtUHJvcHMgPSB7XG4gICAgICAgICAgICAgICAgLi4ubGlzdEl0ZW1Qcm9wcyxcbiAgICAgICAgICAgICAgICBidXR0b246IHRydWUsXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiAnbGknLFxuICAgICAgICAgICAgICAgIG9uQ2xpY2s6IGV2ZW50ID0+IG9uU2VsZWN0KGV2ZW50LCBpdGVtKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc2VsZWN0YWJsZSA9IHRydWU7XG4gICAgICAgIGlmIChpdGVtLmhhc0NoaWxkcmVuICYmIHBhcmVudEl0ZW1TZWxlY3RhYmxlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgc2VsZWN0YWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgbGlzdEl0ZW1Qcm9wcy5vbkNsaWNrID0gKCkgPT4ge307XG4gICAgICAgICAgICBsaXN0SXRlbVByb3BzLmJ1dHRvbiA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGljb25BbGw7XG4gICAgICAgIGlmIChpdGVtLmlkID09PSAnX2FsbCcgJiYgaXRlbS5pY29uKSB7XG4gICAgICAgICAgICBpY29uQWxsID0gPEhpSWNvbkJ1aWxkZXIgaWNvbj17aXRlbS5pY29ufSBjbGFzc05hbWU9e2NsYXNzZXMuY2hlY2tib3hJY29ufSAvPjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNhbGN1bCBkdSBwYWRkaW5nIGxlZnRcbiAgICAgICAgbGV0IHBhZGRpbmdMZWZ0ID0gMDtcblxuICAgICAgICBpZiAobGVmdFBhZGRpbmcpIHtcbiAgICAgICAgICAgIHBhZGRpbmdMZWZ0ID0gbGVmdFBhZGRpbmc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBTaSBwYXMgZGUgaGnDqXJhcmNoaWUsIHBhZGRpbmcgZGUgOHB4XG4gICAgICAgICAgICBpZiAoIWhpZXJhcmNoaWMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWVmZmVjdGl2ZUNoZWNrYm94KSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0ID0gODtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGFibGUpIHtcbiAgICAgICAgICAgICAgICAvLyBTaSBpdGVtIHNlbGVjdGlvbm5hYmxlXG4gICAgICAgICAgICAgICAgLy8gU2kgcGFyZW50IHNlbGVjdGlvbm5hYmxlXG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudEl0ZW1TZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNpIGwnaXRlbSBjb250aWVudCB1bmUgY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVmZmVjdGl2ZUNoZWNrYm94KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdCA9IDE2ICogbGV2ZWw7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdCA9IDE2ICogKGxldmVsICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxldmVsID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWZmZWN0aXZlQ2hlY2tib3gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0ID0gMTYgKiAobGV2ZWwgLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0ID0gMTYgKiBsZXZlbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWVmZmVjdGl2ZUNoZWNrYm94KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSAnX2FsbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0ID0gMTY7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdCA9IDE2ICogbGV2ZWw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0ID0gMTY7IC8vIFBhZGRpbmcgZGUgMTYgcGFyIGTDqWZhdXRcbiAgICAgICAgICAgICAgICBpZiAobGV2ZWwgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0ID0gMTYgKiBsZXZlbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsaXN0SXRlbVByb3BzLnN0eWxlID0geyBwYWRkaW5nTGVmdDogYCR7cGFkZGluZ0xlZnR9cHhgIH07XG5cbiAgICAgICAgbGV0IGljb25EaXNwbGF5ID0gaWNvbjtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuaG92ZXIpIHtcbiAgICAgICAgICAgIGljb25EaXNwbGF5ID0gaG92ZXJJY29uO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0uaGFzQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGljb25EaXNwbGF5ID0gcGFyZW50SWNvbjtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLmlkID09PSAnX2FsbCcpIHtcbiAgICAgICAgICAgIGljb25EaXNwbGF5ID0gaWNvbkFsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8TGlzdEl0ZW0gey4uLmxpc3RJdGVtUHJvcHN9PlxuICAgICAgICAgICAgICAgIHtlZmZlY3RpdmVDaGVja2JveCAmJlxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RhYmxlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxIaUNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj17aWNvbkRpc3BsYXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZEljb249e2NoZWNrZWRJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU9e2luZGV0ZXJtaW5hdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcz17eyBjaGVja2VkOiBjbGFzc2VzLmxpc3RJdGVtSWNvbkNoZWNrZWQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuY2hlY2tib3h9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHt0aGlzLmJ1aWxkTGlzdEl0ZW0oKX1cbiAgICAgICAgICAgICAgICB7ISFpdGVtLmluZm8gJiYgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc2VzLmxpc3RJdGVtSW5mb1RleHR9PntpdGVtLmluZm99PC9zcGFuPn1cbiAgICAgICAgICAgIDwvTGlzdEl0ZW0+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGVzKHN0eWxlcywgeyBuYW1lOiAnSG11aUhpU2VsZWN0YWJsZUxpc3QnIH0pKEhpU2VsZWN0YWJsZUxpc3RJdGVtKTtcbiJdfQ==
|
33068
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9IaVNlbGVjdGFibGVMaXN0L0hpU2VsZWN0YWJsZUxpc3RJdGVtLmpzIl0sIm5hbWVzIjpbInN0eWxlcyIsImxpc3RJdGVtIiwicGFkZGluZyIsImZvbnRXZWlnaHQiLCJ0aGVtZSIsInR5cG9ncmFwaHkiLCJmb250V2VpZ2h0UmVndWxhciIsIm1heEhlaWdodCIsImxpc3RJdGVtVGl0bGUiLCJmb250V2VpZ2h0TGlnaHQiLCJsaXN0SXRlbUhvdmVyIiwiYmFja2dyb3VuZENvbG9yIiwicGFsZXR0ZSIsImhvdmVyIiwiZm9udFdlaWdodE1lZGl1bSIsImRpc2FibGVkIiwiY29sb3IiLCJuZXV0cmFsIiwibGlnaHQiLCJjZW50ZXJlZCIsInRleHRBbGlnbiIsIndpZHRoIiwic2VsZWN0ZWQiLCJjaGlsZExpc3RJdGVtIiwicGFkZGluZ0xlZnQiLCJzcGFjaW5nIiwidW5pdCIsImxpc3RJdGVtSWNvbkNoZWNrZWQiLCJidXNpbmVzcyIsInByaW1hcnkiLCJub3JtYWwiLCJsaXN0SXRlbUNvbnRlbnQiLCJ3aGl0ZVNwYWNlIiwib3ZlcmZsb3ciLCJ0ZXh0T3ZlcmZsb3ciLCJib2R5MSIsImxpc3RJdGVtU2Vjb25kYXJ5VGV4dCIsImJvZHk1IiwibWFyZ2luTGVmdCIsImxpc3RJdGVtSW5mb1RleHQiLCJib2R5NCIsIm1hcmdpbiIsImNoZWNrYm94IiwiaGVpZ2h0IiwiZm9udFNpemUiLCJtYXJnaW5SaWdodCIsImltZ0xpc3RJdGVtIiwidmVydGljYWxBbGlnbiIsImNoZWNrYm94SWNvbiIsInRleHQiLCJpY29uIiwibmJDaGlsZHJlbkluZGljYXRvciIsInBvc2l0aW9uIiwicmlnaHQiLCJib2R5MyIsImxhYmVsSGlnaGxpZ2h0IiwibGFiZWxIaWdobGlnaHRDb2xvcmVkIiwicHJpbWFyeUhpZ2hsaWdodCIsInRleHRUcmFuc2Zvcm0iLCJIaVNlbGVjdGFibGVMaXN0SXRlbSIsInByb3BzIiwiYnVpbGRMaXN0SXRlbSIsImNsYXNzZXMiLCJ0eXBlIiwiaXRlbSIsIm5iQ2hpbGRyZW4iLCJ0cmFuc2xhdGlvbnMiLCJlZmZlY3RpdmVUeXBlIiwiY2hpbGRyZW5JbmRpY2F0b3IiLCJvbmVfY2hpbGQiLCJyZXBsYWNlIiwibl9jaGlsZHJlbiIsImVmZmVjdGl2ZUNoZWNrYm94IiwiaWQiLCJnZXRJdGVtTGFiZWwiLCJzZWNvbmRhcnlMYWJlbCIsImltZyIsIml0ZW1QcmltYXJ5SGlnaGxpZ2h0Q2xhc3MiLCJpdGVtVGV4dENsYXNzIiwic3RhdGUiLCJiaW5kIiwidG9nZ2xlSG92ZXIiLCJzZXRTdGF0ZSIsImxhYmVsIiwibUxhYmVsIiwiX19odG1sIiwib25TZWxlY3QiLCJpbmRldGVybWluYXRlIiwicGFyZW50SXRlbVNlbGVjdGFibGUiLCJwYXJlbnRJY29uIiwiaG92ZXJJY29uIiwiY2hlY2tlZEljb24iLCJsZXZlbCIsImhpZXJhcmNoaWMiLCJsZWZ0UGFkZGluZyIsImVmZmVjdGl2ZURpc2FibGVkIiwibGlzdEl0ZW1DbGFzcyIsImhhc0NoaWxkcmVuIiwibGlzdEl0ZW1Qcm9wcyIsImtleSIsImNsYXNzTmFtZSIsIm9uTW91c2VFbnRlciIsIm9uTW91c2VMZWF2ZSIsImJ1dHRvbiIsImNvbXBvbmVudCIsIm9uQ2xpY2siLCJldmVudCIsInNlbGVjdGFibGUiLCJzdHlsZSIsImljb25EaXNwbGF5IiwiY2hlY2tlZCIsImluZm8iLCJDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJib29sIiwibm9kZSIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJudW1iZXIiLCJmdW5jIiwicGFyZW50SXRlbSIsInN0cmluZyIsImRlZmF1bHRQcm9wcyIsIm5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7QUFDQTs7OztBQUNBOzs7Ozs7Ozs7Ozs7OztBQUVPLElBQU1BLDBCQUFTLFNBQVRBLE1BQVM7QUFBQSxXQUFVO0FBQzVCQyxrQkFBVTtBQUNO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QUFuQixFQUFxRGhFLG9CQUFyRCxDIiwiZmlsZSI6IkhpU2VsZWN0YWJsZUxpc3RJdGVtLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL21mYXppby9kZXYvcHJvamVjdHMvaGlwYXktbWF0ZXJpYWwtdWkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHdhcm5pbmcgZnJvbSAnd2FybmluZyc7XG5pbXBvcnQgeyBDaGVja2JveEJsYW5rT3V0bGluZSwgQ2hlY2tib3hNYXJrZWQgfSBmcm9tICdtZGktbWF0ZXJpYWwtdWknO1xuaW1wb3J0IExpc3RJdGVtIGZyb20gJ21hdGVyaWFsLXVpL0xpc3QvTGlzdEl0ZW0nO1xuaW1wb3J0IEhpQ2hlY2tib3ggZnJvbSAnLi4vSGlDaGVja2JveCc7XG5pbXBvcnQgd2l0aFN0eWxlcyBmcm9tICcuLi9zdHlsZXMvd2l0aFN0eWxlcyc7XG5pbXBvcnQgeyBlc2NhcGVIVE1MIH0gZnJvbSAnLi4vdXRpbHMvaGlIZWxwZXJzJztcbmltcG9ydCBIaUljb25CdWlsZGVyIGZyb20gJy4uL3V0aWxzL0hpSWNvbkJ1aWxkZXInO1xuaW1wb3J0IEhpQ29sb3JlZExhYmVsIGZyb20gJy4uL0hpQ29sb3JlZExhYmVsJztcblxuZXhwb3J0IGNvbnN0IHN0eWxlcyA9IHRoZW1lID0+ICh7XG4gICAgbGlzdEl0ZW06IHtcbiAgICAgICAgcGFkZGluZzogYCR7OX1weCAwcHhgLFxuICAgICAgICBmb250V2VpZ2h0OiB0aGVtZS50eXBvZ3JhcGh5LmZvbnRXZWlnaHRSZWd1bGFyLFxuICAgICAgICBtYXhIZWlnaHQ6IDQwLFxuICAgIH0sXG4gICAgbGlzdEl0ZW1UaXRsZToge1xuICAgICAgICBwYWRkaW5nOiBgJHs5fXB4IDBweGAsXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRoZW1lLnR5cG9ncmFwaHkuZm9udFdlaWdodExpZ2h0LFxuICAgIH0sXG4gICAgbGlzdEl0ZW1Ib3Zlcjoge1xuICAgICAgICAnJjpob3Zlcjpub3QoJGRpc2FibGVkKSc6IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUucGFsZXR0ZS5ob3ZlcixcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ6IHRoZW1lLnR5cG9ncmFwaHkuZm9udFdlaWdodE1lZGl1bSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGRpc2FibGVkOiB7XG4gICAgICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlLm5ldXRyYWwubGlnaHQsXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRoZW1lLnR5cG9ncmFwaHkuZm9udFdlaWdodExpZ2h0LFxuICAgIH0sXG4gICAgY2VudGVyZWQ6IHtcbiAgICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICB9LFxuICAgIHNlbGVjdGVkOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUucGFsZXR0ZS5zZWxlY3RlZCxcbiAgICB9LFxuICAgIGNoaWxkTGlzdEl0ZW06IHtcbiAgICAgICAgcGFkZGluZ0xlZnQ6IHRoZW1lLnNwYWNpbmcudW5pdCAqIDIsXG4gICAgfSxcbiAgICBsaXN0SXRlbUljb25DaGVja2VkOiB7XG4gICAgICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlLmJ1c2luZXNzLnByaW1hcnkubm9ybWFsLFxuICAgIH0sXG4gICAgbGlzdEl0ZW1Db250ZW50OiB7XG4gICAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgICAgICAgLi4udGhlbWUudHlwb2dyYXBoeS5ib2R5MSxcbiAgICAgICAgZm9udFdlaWdodDogJ2luaGVyaXQnLFxuICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgIH0sXG4gICAgbGlzdEl0ZW1TZWNvbmRhcnlUZXh0OiB7XG4gICAgICAgIC4uLnRoZW1lLnR5cG9ncmFwaHkuYm9keTUsXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRoZW1lLnR5cG9ncmFwaHkuZm9udFdlaWdodExpZ2h0LFxuICAgICAgICBtYXJnaW5MZWZ0OiB0aGVtZS5zcGFjaW5nLnVuaXQsXG4gICAgICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlLm5ldXRyYWwubm9ybWFsLFxuICAgIH0sXG4gICAgbGlzdEl0ZW1JbmZvVGV4dDoge1xuICAgICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gICAgICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlLm5ldXRyYWwubm9ybWFsLFxuICAgICAgICAuLi50aGVtZS50eXBvZ3JhcGh5LmJvZHk0LFxuICAgICAgICBmb250V2VpZ2h0OiB0aGVtZS50eXBvZ3JhcGh5LmZvbnRXZWlnaHRSZWd1bGFyLFxuICAgICAgICB0ZXh0QWxpZ246ICdyaWdodCcsXG4gICAgICAgIG1hcmdpbjogJzAgOHB4JyxcbiAgICAgICAgd2lkdGg6ICctd2Via2l0LWZpbGwtYXZhaWxhYmxlJyxcbiAgICB9LFxuICAgIGNoZWNrYm94OiB7XG4gICAgICAgIHdpZHRoOiAyMCxcbiAgICAgICAgaGVpZ2h0OiAyMCxcbiAgICAgICAgZm9udFNpemU6IDIwLFxuICAgICAgICBtYXJnaW5SaWdodDogMjAsXG4gICAgICAgIG1hcmdpbkxlZnQ6IDIwLFxuICAgIH0sXG4gICAgaW1nTGlzdEl0ZW06IHtcbiAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgICBoZWlnaHQ6ICdhdXRvJyxcbiAgICAgICAgbWFyZ2luUmlnaHQ6IDgsXG4gICAgICAgIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuICAgIH0sXG4gICAgY2hlY2tib3hJY29uOiB7XG4gICAgICAgIHdpZHRoOiAyMCxcbiAgICAgICAgaGVpZ2h0OiAyMCxcbiAgICAgICAgbWFyZ2luTGVmdDogMixcbiAgICAgICAgdmVydGljYWxBbGlnbjogJ21pZGRsZScsXG4gICAgICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlLnRleHQuaWNvbixcbiAgICB9LFxuICAgIGljb246IHtcbiAgICAgICAgd2lkdGg6IDIwLFxuICAgICAgICBoZWlnaHQ6IDIwLFxuICAgICAgICBtYXJnaW5SaWdodDogOCxcbiAgICAgICAgdmVydGljYWxBbGlnbjogJ21pZGRsZScsXG4gICAgICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlLnRleHQuaWNvbixcbiAgICB9LFxuICAgIG5iQ2hpbGRyZW5JbmRpY2F0b3I6IHtcbiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgIHJpZ2h0OiAxMCxcbiAgICAgICAgY29sb3I6IHRoZW1lLnBhbGV0dGUubmV1dHJhbC5ub3JtYWwsXG4gICAgICAgIC4uLnRoZW1lLnR5cG9ncmFwaHkuYm9keTMsXG4gICAgfSxcbiAgICBsYWJlbEhpZ2hsaWdodDoge1xuICAgICAgICAnJj5zdHJvbmcnOiB7XG4gICAgICAgICAgICBmb250V2VpZ2h0OiB0aGVtZS50eXBvZ3JhcGh5LmZvbnRXZWlnaHRNZWRpdW0sXG4gICAgICAgICAgICBjb2xvcjogJyMwMDAwMDAnLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgbGFiZWxIaWdobGlnaHRDb2xvcmVkOiB7XG4gICAgICAgICcmPnN0cm9uZyc6IHtcbiAgICAgICAgICAgIGZvbnRXZWlnaHQ6IHRoZW1lLnR5cG9ncmFwaHkuZm9udFdlaWdodE1lZGl1bSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIHByaW1hcnlIaWdobGlnaHQ6IHtcbiAgICAgICAgZm9udFdlaWdodDogdGhlbWUudHlwb2dyYXBoeS5mb250V2VpZ2h0TWVkaXVtLFxuICAgICAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS5idXNpbmVzcy5wcmltYXJ5Lm5vcm1hbCxcbiAgICAgICAgdGV4dFRyYW5zZm9ybTogJ3VwcGVyY2FzZScsXG4gICAgfSxcbn0pO1xuXG4vKipcbiAqIENvbnN0cnVpdCB1biDDqWzDqW1lbnQgZGUgbGlzdGUgc8OpbGVjdGlvbm5hYmxlIChhdmVjIGNoZWNrYm94KVxuICovXG5jbGFzcyBIaVNlbGVjdGFibGVMaXN0SXRlbSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFmZmljaGUgdW5lIGNoZWNrYm94XG4gICAgICAgICAqL1xuICAgICAgICBjaGVja2JveDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJY29uIGFmZmljaMOpIGxvcnNxdWUgbCdpdGVtIGVzdCBzw6lsZWN0aW9ubsOpXG4gICAgICAgICAqL1xuICAgICAgICBjaGVja2VkSWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVc2VmdWwgdG8gZXh0ZW5kIHRoZSBzdHlsZSBhcHBsaWVkIHRvIGNvbXBvbmVudHMuXG4gICAgICAgICAqL1xuICAgICAgICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgICAvKipcbiAgICAgICAgICogQXBwbGlxdWUgbGUgc3R5bGUgZXQgZMOpc2FjdGl2ZSBsZSBjbGlja1xuICAgICAgICAgKi9cbiAgICAgICAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogU2kgXCJ0cnVlXCIsIGxpc3RlIGF2ZWMgaGllcmFyY2hpZVxuICAgICAgICAgKi9cbiAgICAgICAgaGllcmFyY2hpYzogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJY29uIGFmZmljaMOpIGxvcnNxdWUgbCdpdGVtIG4nZXN0IHBhcyBzw6lsZWN0aW9ubsOpIGV0IHF1J29uIGxlIHN1cnZvbGVcbiAgICAgICAgICovXG4gICAgICAgIGhvdmVySWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJY29uIGFmZmljaMOpIGxvcnNxdWUgbCdpdGVtIG4nZXN0IHBhcyBzw6lsZWN0aW9ubsOpXG4gICAgICAgICAqL1xuICAgICAgICBpY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEl0ZW1zIHPDqWxlY3Rpb25uw6kgcGFydGllbGxlbWVudFxuICAgICAgICAgKi9cbiAgICAgICAgaW5kZXRlcm1pbmF0ZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDDiWzDqW1lbnQgZG9udCBsYSBzdHJ1Y3R1cmUgYXR0ZW5kdWUgZMOpcGVuZCBkdSB0eXBlXG4gICAgICAgICAqIHBhcmFtw6h0cmVzIHJlcXVpczpcbiAgICAgICAgICogLSBpZDogc3RyaW5nL251bWJlclxuICAgICAgICAgKiAtIGxhYmVsOiBzdHJpbmdcbiAgICAgICAgICovXG4gICAgICAgIGl0ZW06IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFBhZGRpbmcgcGFyIGTDqWZhdXQgZGVzIMOpbMOpbWVudHNcbiAgICAgICAgICovXG4gICAgICAgIGxlZnRQYWRkaW5nOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgICAvKipcbiAgICAgICAgICogTml2ZWF1IGRlIGwnaXRlbVxuICAgICAgICAgKi9cbiAgICAgICAgbGV2ZWw6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBOb21icmUgZCdpdGVtcyBlbmZhbnRzXG4gICAgICAgICAqL1xuICAgICAgICBuYkNoaWxkcmVuOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgICAvKipcbiAgICAgICAgICogRm9uY3Rpb24gZGUgY2FsbGJhY2sgw6AgbGEgc8OpbGVjdGlvbiBkZSBsJ8OpbMOpbWVudFxuICAgICAgICAgKi9cbiAgICAgICAgb25TZWxlY3Q6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICAvKipcbiAgICAgICAgICogSWNvbiBhZmZpY2jDqSBsb3JzcXUndW4gaXRlbSBwYXJlbnQgbidlc3QgcGFzIHPDqWxlY3Rpb25uw6lcbiAgICAgICAgICovXG4gICAgICAgIHBhcmVudEljb246IFByb3BUeXBlcy5ub2RlLFxuICAgICAgICAvKipcbiAgICAgICAgICogQWZmaWNoZSBsJ2l0ZW0gZW4gdGFudCBxdSdpdGVtIHBhcmVudCBkJ3VuIGdyb3VwZVxuICAgICAgICAgKi9cbiAgICAgICAgcGFyZW50SXRlbTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMZXMgaXRlbXMgcGFyZW50cyBzb250IHPDqWxlY3Rpb25uYWJsZXNcbiAgICAgICAgICovXG4gICAgICAgIHBhcmVudEl0ZW1TZWxlY3RhYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIMOJdGF0IGRlIGwnw6lsw6ltZW50XG4gICAgICAgICAqL1xuICAgICAgICBzZWxlY3RlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUcmFkdWN0aW9ucyAocGFyIGTDqWZhdXQgZW4gYW5nbGFpcylcbiAgICAgICAgICovXG4gICAgICAgIHRyYW5zbGF0aW9uczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFR5cGUgZGUgbCfDqWzDqW1lbnRcbiAgICAgICAgICovXG4gICAgICAgIHR5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgfTtcblxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgY2hlY2tib3g6IGZhbHNlLFxuICAgICAgICBwYXJlbnRJdGVtOiBmYWxzZSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBpbmRldGVybWluYXRlOiBmYWxzZSxcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICBwYXJlbnRJdGVtU2VsZWN0YWJsZTogZmFsc2UsXG4gICAgICAgIG5iQ2hpbGRyZW46IDAsXG4gICAgICAgIGljb246IDxDaGVja2JveEJsYW5rT3V0bGluZSBzdHlsZT17eyB3aWR0aDogMjAsIGhlaWdodDogMjAgfX0gLz4sXG4gICAgICAgIHBhcmVudEljb246IDxDaGVja2JveEJsYW5rT3V0bGluZSBzdHlsZT17eyB3aWR0aDogMjAsIGhlaWdodDogMjAgfX0gLz4sXG4gICAgICAgIGhvdmVySWNvbjogPENoZWNrYm94QmxhbmtPdXRsaW5lIHN0eWxlPXt7IHdpZHRoOiAyMCwgaGVpZ2h0OiAyMCB9fSAvPixcbiAgICAgICAgY2hlY2tlZEljb246IDxDaGVja2JveE1hcmtlZCBzdHlsZT17eyB3aWR0aDogMjAsIGhlaWdodDogMjAgfX0gLz4sXG4gICAgICAgIGhpZXJhcmNoaWM6IGZhbHNlLFxuICAgICAgICB0cmFuc2xhdGlvbnM6IHtcbiAgICAgICAgICAgIG5fY2hpbGRyZW46ICclcyBpdGVtcycsXG4gICAgICAgICAgICBvbmVfY2hpbGQ6ICclcyBpdGVtJyxcbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBob3ZlcjogZmFsc2UsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5idWlsZExpc3RJdGVtID0gdGhpcy5idWlsZExpc3RJdGVtLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMudG9nZ2xlSG92ZXIgPSB0aGlzLnRvZ2dsZUhvdmVyLmJpbmQodGhpcyk7XG4gICAgfVxuXG4gICAgdG9nZ2xlSG92ZXIoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBob3ZlcjogIXRoaXMuc3RhdGUuaG92ZXIgfSk7XG4gICAgfVxuXG4gICAgZ2V0SXRlbUxhYmVsKGl0ZW0pIHtcbiAgICAgICAgY29uc3QgeyBjbGFzc2VzIH0gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAoIWl0ZW0ubGFiZWxIaWdobGlnaHQgJiYgaXRlbS5jb2xvciAmJiB0aGlzLnByb3BzLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gPEhpQ29sb3JlZExhYmVsIGNvbG9yPXtpdGVtLmNvbG9yfSBsYWJlbD17aXRlbS5sYWJlbH0gLz47XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5sYWJlbEhpZ2hsaWdodCkge1xuICAgICAgICAgICAgY29uc3QgbUxhYmVsID0gKFxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17aXRlbS5jb2xvciA/IGNsYXNzZXMubGFiZWxIaWdobGlnaHRDb2xvcmVkIDogY2xhc3Nlcy5sYWJlbEhpZ2hsaWdodH1cbiAgICAgICAgICAgICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIF9faHRtbDogZXNjYXBlSFRNTChpdGVtLmxhYmVsSGlnaGxpZ2h0KSxcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChpdGVtLmNvbG9yICYmIHRoaXMucHJvcHMuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPEhpQ29sb3JlZExhYmVsIGNvbG9yPXtpdGVtLmNvbG9yfSBsYWJlbD17bUxhYmVsfSAvPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBtTGFiZWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW0ubGFiZWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQnVpbGQgbGlzdCBpdGVtIGZyb20gdHlwZVxuICAgICAqL1xuICAgIGJ1aWxkTGlzdEl0ZW0gPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgY2xhc3NlcywgdHlwZSwgaXRlbSwgbmJDaGlsZHJlbiwgdHJhbnNsYXRpb25zLCBjaGVja2JveCB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgZWZmZWN0aXZlVHlwZSA9IHR5cGVvZiBpdGVtLnR5cGUgIT09ICd1bmRlZmluZWQnID8gaXRlbS50eXBlIDogdHlwZTtcblxuICAgICAgICBsZXQgY2hpbGRyZW5JbmRpY2F0b3IgPSAnJztcbiAgICAgICAgaWYgKG5iQ2hpbGRyZW4gPiAwKSB7XG4gICAgICAgICAgICBjaGlsZHJlbkluZGljYXRvciA9IChcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzZXMubmJDaGlsZHJlbkluZGljYXRvcn0+XG4gICAgICAgICAgICAgICAgICAgIHtuYkNoaWxkcmVuIDwgMlxuICAgICAgICAgICAgICAgICAgICAgICAgPyB0cmFuc2xhdGlvbnMub25lX2NoaWxkLnJlcGxhY2UoJyVzJywgbmJDaGlsZHJlbilcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdHJhbnNsYXRpb25zLm5fY2hpbGRyZW4ucmVwbGFjZSgnJXMnLCBuYkNoaWxkcmVuKX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoZWZmZWN0aXZlVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnaWNvbic6XG4gICAgICAgICAgICAgICAgd2FybmluZyhcbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGl0ZW0uaWNvbiAhPT0gJ3VuZGVmaW5lZCcsXG4gICAgICAgICAgICAgICAgICAgICdIaXBheS1NYXRlcmlhbC1VSTogaXRlbSB3aXRoIHR5cGUgaWNvbiBzaG91bGQgaGF2ZSBpY29uIHBhcmFtZXRlcicsXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGVmZmVjdGl2ZUNoZWNrYm94ID1cbiAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGl0ZW0uY2hlY2tib3ggIT09ICd1bmRlZmluZWQnID8gaXRlbS5jaGVja2JveCA6IGNoZWNrYm94O1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmxpc3RJdGVtQ29udGVudH0gZGF0YS1pZD17aXRlbS5pZH0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7IWVmZmVjdGl2ZUNoZWNrYm94ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlJY29uQnVpbGRlciBpY29uPXtpdGVtLmljb259IGNsYXNzTmFtZT17Y2xhc3Nlcy5pY29ufSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLmdldEl0ZW1MYWJlbChpdGVtKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y2xhc3Nlcy5saXN0SXRlbVNlY29uZGFyeVRleHR9PntpdGVtLnNlY29uZGFyeUxhYmVsfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtjaGlsZHJlbkluZGljYXRvcn1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNhc2UgJ2ltYWdlJzpcbiAgICAgICAgICAgICAgICBsZXQgaW1nID0gJyc7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpdGVtLmltZyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaW1nID0gPGltZyBzcmM9e2l0ZW0uaW1nfSBhbHQ9e2l0ZW0uaW1nfSBjbGFzc05hbWU9e2NsYXNzZXMuaW1nTGlzdEl0ZW19IC8+O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmxpc3RJdGVtQ29udGVudH0gZGF0YS1pZD17aXRlbS5pZH0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aW1nfVxuICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMuZ2V0SXRlbUxhYmVsKGl0ZW0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc2VzLmxpc3RJdGVtU2Vjb25kYXJ5VGV4dH0+e2l0ZW0uc2Vjb25kYXJ5TGFiZWx9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAge2NoaWxkcmVuSW5kaWNhdG9yfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgY2FzZSAncHJpbWFyeS1oaWdobGlnaHQnOiAvLyB1c2VkIGluIERhdGVSYW5nZVNlbGVjdG9yIGZvciBDdXN0b20gaXRlbVxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1QcmltYXJ5SGlnaGxpZ2h0Q2xhc3MgPSBjbGFzc05hbWVzKFxuICAgICAgICAgICAgICAgICAgICBjbGFzc2VzLmxpc3RJdGVtQ29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcy5wcmltYXJ5SGlnaGxpZ2h0LFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17aXRlbVByaW1hcnlIaWdobGlnaHRDbGFzc30gZGF0YS1pZD17aXRlbS5pZH0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dGhpcy5nZXRJdGVtTGFiZWwoaXRlbSl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjYXNlICd0ZXh0JzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbVRleHRDbGFzcyA9IGNsYXNzTmFtZXMoY2xhc3Nlcy5saXN0SXRlbUNvbnRlbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzZXMuY2VudGVyZWRdOiBpdGVtLmNlbnRlcmVkLFxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2l0ZW1UZXh0Q2xhc3N9IGRhdGEtaWQ9e2l0ZW0uaWR9PlxuICAgICAgICAgICAgICAgICAgICAgICAge3RoaXMuZ2V0SXRlbUxhYmVsKGl0ZW0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc2VzLmxpc3RJdGVtU2Vjb25kYXJ5VGV4dH0+e2l0ZW0uc2Vjb25kYXJ5TGFiZWx9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAge2NoaWxkcmVuSW5kaWNhdG9yfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2xhc3NlcyxcbiAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgIG9uU2VsZWN0LFxuICAgICAgICAgICAgY2hlY2tib3gsXG4gICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgIGluZGV0ZXJtaW5hdGUsXG4gICAgICAgICAgICBwYXJlbnRJdGVtU2VsZWN0YWJsZSxcbiAgICAgICAgICAgIGljb24sXG4gICAgICAgICAgICBwYXJlbnRJY29uLFxuICAgICAgICAgICAgaG92ZXJJY29uLFxuICAgICAgICAgICAgY2hlY2tlZEljb24sXG4gICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgIGhpZXJhcmNoaWMsXG4gICAgICAgICAgICBsZWZ0UGFkZGluZyxcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEl0ZW0gcGFyYW1zIG92ZXJyaWRlIGluaGVyaXRlZCBwcm9wc1xuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgZWZmZWN0aXZlQ2hlY2tib3ggPSB0eXBlb2YgaXRlbS5jaGVja2JveCAhPT0gJ3VuZGVmaW5lZCcgPyBpdGVtLmNoZWNrYm94IDogY2hlY2tib3g7XG4gICAgICAgIGNvbnN0IGVmZmVjdGl2ZURpc2FibGVkID0gdHlwZW9mIGl0ZW0uZGlzYWJsZWQgIT09ICd1bmRlZmluZWQnID8gaXRlbS5kaXNhYmxlZCA6IGRpc2FibGVkO1xuXG4gICAgICAgIC8vIGJ1aWxkIGNsYXNzXG4gICAgICAgIGxldCBsaXN0SXRlbUNsYXNzID0gY2xhc3NOYW1lcyhjbGFzc2VzLmxpc3RJdGVtLCBjbGFzc2VzLmxpc3RJdGVtSG92ZXIsIHtcbiAgICAgICAgICAgIFtjbGFzc2VzLmRpc2FibGVkXTogZWZmZWN0aXZlRGlzYWJsZWQsXG4gICAgICAgICAgICBbY2xhc3Nlcy5zZWxlY3RlZF06IHNlbGVjdGVkLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGl0ZW0uaGFzQ2hpbGRyZW4gJiYgcGFyZW50SXRlbVNlbGVjdGFibGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBsaXN0SXRlbUNsYXNzID0gY2xhc3NOYW1lcyhjbGFzc2VzLmxpc3RJdGVtVGl0bGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYnVpbGQgcHJvcHNcbiAgICAgICAgbGV0IGxpc3RJdGVtUHJvcHMgPSB7XG4gICAgICAgICAgICBrZXk6IGl0ZW0uaWQsXG4gICAgICAgICAgICBjbGFzc05hbWU6IGxpc3RJdGVtQ2xhc3MsXG4gICAgICAgICAgICBvbk1vdXNlRW50ZXI6IHRoaXMudG9nZ2xlSG92ZXIsXG4gICAgICAgICAgICBvbk1vdXNlTGVhdmU6IHRoaXMudG9nZ2xlSG92ZXIsXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKCFlZmZlY3RpdmVEaXNhYmxlZCkge1xuICAgICAgICAgICAgbGlzdEl0ZW1Qcm9wcyA9IHtcbiAgICAgICAgICAgICAgICAuLi5saXN0SXRlbVByb3BzLFxuICAgICAgICAgICAgICAgIGJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb21wb25lbnQ6ICdsaScsXG4gICAgICAgICAgICAgICAgb25DbGljazogZXZlbnQgPT4gb25TZWxlY3QoZXZlbnQsIGl0ZW0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzZWxlY3RhYmxlID0gdHJ1ZTtcbiAgICAgICAgaWYgKGl0ZW0uaGFzQ2hpbGRyZW4gJiYgcGFyZW50SXRlbVNlbGVjdGFibGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBzZWxlY3RhYmxlID0gZmFsc2U7XG4gICAgICAgICAgICBsaXN0SXRlbVByb3BzLm9uQ2xpY2sgPSAoKSA9PiB7fTtcbiAgICAgICAgICAgIGxpc3RJdGVtUHJvcHMuYnV0dG9uID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjYWxjdWwgZHUgcGFkZGluZyBsZWZ0XG4gICAgICAgIGxldCBwYWRkaW5nTGVmdCA9IDA7XG5cbiAgICAgICAgaWYgKGxlZnRQYWRkaW5nKSB7XG4gICAgICAgICAgICBwYWRkaW5nTGVmdCA9IGxlZnRQYWRkaW5nO1xuICAgICAgICB9IGVsc2UgaWYgKCFoaWVyYXJjaGljKSB7XG4gICAgICAgICAgICAvLyBTaSBwYXMgZGUgaGnDqXJhcmNoaWUgZXQgc2FucyBjaGVja2JveCwgcGFkZGluZyBkZSA4cHhcbiAgICAgICAgICAgIGlmICghZWZmZWN0aXZlQ2hlY2tib3gpIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdCA9IDg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgLy8gU2kgaXRlbSBzZWxlY3Rpb25uYWJsZVxuICAgICAgICAgICAgLy8gU2kgcGFyZW50IHNlbGVjdGlvbm5hYmxlXG4gICAgICAgICAgICBpZiAocGFyZW50SXRlbVNlbGVjdGFibGUpIHtcbiAgICAgICAgICAgICAgICAvLyBTaSBsJ2l0ZW0gY29udGllbnQgdW5lIGNoZWNrYm94XG4gICAgICAgICAgICAgICAgaWYgKGVmZmVjdGl2ZUNoZWNrYm94KSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0ID0gMTYgKiBsZXZlbDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdCA9IDE2ICogKGxldmVsICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChsZXZlbCA+IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoZWZmZWN0aXZlQ2hlY2tib3gpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQgPSAxNiAqIChsZXZlbCAtIDEpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0ID0gMTYgKiBsZXZlbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFlZmZlY3RpdmVDaGVja2JveCkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSAnX2FsbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0xlZnQgPSAxNjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdCA9IDE2ICogbGV2ZWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFkZGluZ0xlZnQgPSAxNjsgLy8gUGFkZGluZyBkZSAxNiBwYXIgZMOpZmF1dFxuICAgICAgICAgICAgaWYgKGxldmVsID4gMCkge1xuICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0ID0gMTYgKiBsZXZlbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxpc3RJdGVtUHJvcHMuc3R5bGUgPSB7IHBhZGRpbmdMZWZ0OiBgJHtwYWRkaW5nTGVmdH1weGAgfTtcblxuICAgICAgICBsZXQgaWNvbkRpc3BsYXkgPSBpY29uO1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5ob3Zlcikge1xuICAgICAgICAgICAgaWNvbkRpc3BsYXkgPSBob3Zlckljb247XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5oYXNDaGlsZHJlbikge1xuICAgICAgICAgICAgaWNvbkRpc3BsYXkgPSBwYXJlbnRJY29uO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gJ2ljb24nICYmIGl0ZW0uaWNvbikge1xuICAgICAgICAgICAgaWNvbkRpc3BsYXkgPSA8SGlJY29uQnVpbGRlciBpY29uPXtpdGVtLmljb259IGNsYXNzTmFtZT17Y2xhc3Nlcy5jaGVja2JveEljb259IC8+O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxMaXN0SXRlbSB7Li4ubGlzdEl0ZW1Qcm9wc30+XG4gICAgICAgICAgICAgICAge2VmZmVjdGl2ZUNoZWNrYm94ICYmXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGFibGUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEhpQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPXtpY29uRGlzcGxheX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkSWNvbj17Y2hlY2tlZEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXRlcm1pbmF0ZT17aW5kZXRlcm1pbmF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzPXt7IGNoZWNrZWQ6IGNsYXNzZXMubGlzdEl0ZW1JY29uQ2hlY2tlZCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5jaGVja2JveH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3RoaXMuYnVpbGRMaXN0SXRlbSgpfVxuICAgICAgICAgICAgICAgIHshIWl0ZW0uaW5mbyAmJiA8c3BhbiBjbGFzc05hbWU9e2NsYXNzZXMubGlzdEl0ZW1JbmZvVGV4dH0+e2l0ZW0uaW5mb308L3NwYW4+fVxuICAgICAgICAgICAgPC9MaXN0SXRlbT5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZXMoc3R5bGVzLCB7IG5hbWU6ICdIbXVpSGlTZWxlY3RhYmxlTGlzdCcgfSkoSGlTZWxlY3RhYmxlTGlzdEl0ZW0pO1xuIl19
|
33086
33069
|
|
33087
33070
|
/***/ }),
|
33088
33071
|
/* 305 */
|
@@ -34479,16 +34462,32 @@ var HiSuggestSelect = function (_React$PureComponent) {
|
|
34479
34462
|
|
34480
34463
|
var _props = this.props,
|
34481
34464
|
classes = _props.classes,
|
34482
|
-
translations = _props.translations,
|
34483
34465
|
id = _props.id,
|
34466
|
+
showMinLength = _props.showMinLength,
|
34467
|
+
showNoResults = _props.showNoResults,
|
34484
34468
|
onSearch = _props.onSearch,
|
34485
|
-
|
34469
|
+
translations = _props.translations,
|
34470
|
+
otherProps = _objectWithoutProperties(_props, ['classes', 'id', 'showMinLength', 'showNoResults', 'onSearch', 'translations']);
|
34486
34471
|
|
34487
34472
|
var _state = this.state,
|
34488
34473
|
focused = _state.focused,
|
34489
34474
|
options = _state.options;
|
34490
34475
|
|
34491
|
-
|
34476
|
+
|
34477
|
+
var optionsShown = options;
|
34478
|
+
|
34479
|
+
// If no results match
|
34480
|
+
if (options.length === 0 && (showNoResults || showMinLength)) {
|
34481
|
+
optionsShown = [{
|
34482
|
+
id: '_no_result',
|
34483
|
+
type: 'text',
|
34484
|
+
disabled: true,
|
34485
|
+
centered: true,
|
34486
|
+
checkbox: false,
|
34487
|
+
label: showNoResults ? translations.no_result_match : translations.min_length
|
34488
|
+
}];
|
34489
|
+
}
|
34490
|
+
var open = !!optionsShown.length && focused;
|
34492
34491
|
|
34493
34492
|
return _react2.default.createElement(
|
34494
34493
|
'div',
|
@@ -34505,6 +34504,7 @@ var HiSuggestSelect = function (_React$PureComponent) {
|
|
34505
34504
|
_reactPopper.Target,
|
34506
34505
|
null,
|
34507
34506
|
_react2.default.createElement(_HiInput2.default, _extends({}, otherProps, {
|
34507
|
+
|
34508
34508
|
inputId: id,
|
34509
34509
|
focused: focused,
|
34510
34510
|
inputRef: function inputRef(input) {
|
@@ -34530,7 +34530,7 @@ var HiSuggestSelect = function (_React$PureComponent) {
|
|
34530
34530
|
_Paper2.default,
|
34531
34531
|
{ className: classes.paper },
|
34532
34532
|
_react2.default.createElement(_HiSelectableList2.default, {
|
34533
|
-
itemList:
|
34533
|
+
itemList: optionsShown,
|
34534
34534
|
selectedIdList: [],
|
34535
34535
|
checkbox: false,
|
34536
34536
|
onSelect: this.handleSelect,
|
@@ -34569,17 +34569,30 @@ HiSuggestSelect.propTypes = {
|
|
34569
34569
|
* Liste de suggestions.
|
34570
34570
|
*/
|
34571
34571
|
options: _propTypes2.default.array,
|
34572
|
+
/**
|
34573
|
+
* Permet d'afficher un message si pas assez de caractères
|
34574
|
+
*/
|
34575
|
+
showMinLength: _propTypes2.default.bool,
|
34576
|
+
/**
|
34577
|
+
* Permet d'afficher un message si aucune options n'est présente
|
34578
|
+
*/
|
34579
|
+
showNoResults: _propTypes2.default.bool,
|
34572
34580
|
/**
|
34573
34581
|
* Traductions (par défaut en anglais)
|
34574
34582
|
*/
|
34575
34583
|
translations: _propTypes2.default.object
|
34576
34584
|
};
|
34577
34585
|
HiSuggestSelect.defaultProps = {
|
34578
|
-
|
34586
|
+
showMinLength: false,
|
34587
|
+
showNoResults: false,
|
34588
|
+
translations: {
|
34589
|
+
no_result_match: 'No result match',
|
34590
|
+
min_length: 'Veuillez saisir 3 caractères minimum'
|
34591
|
+
},
|
34579
34592
|
options: []
|
34580
34593
|
};
|
34581
34594
|
exports.default = (0, _styles.withStyles)(styles, { name: 'HmuiHiSuggestSelect' })(HiSuggestSelect);
|
34582
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9IaVNlbGVjdC9IaVN1Z2dlc3RTZWxlY3QuanMiXSwibmFtZXMiOlsic3R5bGVzIiwicm9vdCIsImJhY2tncm91bmRDb2xvciIsInRoZW1lIiwicGFsZXR0ZSIsImJhY2tncm91bmQyIiwibWF4V2lkdGgiLCJtaW5XaWR0aCIsIndpZHRoIiwicG9wcGVyIiwidHJhbnNmb3JtIiwiekluZGV4IiwidG9wIiwicGFwZXIiLCJib3JkZXJSYWRpdXMiLCJtYXhIZWlnaHQiLCJ0cmFuc2l0aW9uIiwiSGlTdWdnZXN0U2VsZWN0IiwicHJvcHMiLCJoYW5kbGVTZWxlY3QiLCJldmVudCIsInZhbHVlIiwiZG9jdW1lbnQiLCJib2R5Iiwic3R5bGUiLCJvdmVyZmxvdyIsIm9uU2VsZWN0IiwidGV4dElucHV0Iiwic2V0VGltZW91dCIsImZvY3VzIiwiaGFuZGxlS2V5RG93biIsIm5leHRJdGVtIiwia2V5IiwiYWN0aXZlRWxlbWVudCIsInNldFN0YXRlIiwib3BlbiIsImhhbmRsZUtleURvd25TZWFyY2giLCJvdmVybGF5IiwiaXRlbXMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImxlbmd0aCIsIm9wdGlvbnMiLCJzdGF0ZSIsImZvY3VzZWQiLCJiaW5kIiwiaGFuZGxlQmx1ciIsImhhbmRsZUZvY3VzIiwibmV4dFByb3BzIiwicmVsYXRlZFRhcmdldCIsImNvbnRhaW5zIiwiY2xhc3NlcyIsInRyYW5zbGF0aW9ucyIsImlkIiwib25TZWFyY2giLCJvdGhlclByb3BzIiwiZWwiLCJpbnB1dCIsInRyYW5zZm9ybU9yaWdpbiIsIlB1cmVDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJvYmplY3QiLCJzdHJpbmciLCJmdW5jIiwiYXJyYXkiLCJkZWZhdWx0UHJvcHMiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUVBOzs7O0FBQ0E7Ozs7QUFDQTs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOztBQUNBOzs7Ozs7Ozs7Oytl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dFNlbGVjdC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9tZmF6aW8vZGV2L3Byb2plY3RzL2hpcGF5LW1hdGVyaWFsLXVpIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGluaGVyaXRlZENvbXBvbmVudCBIaUlucHV0XG5cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgZmluZERPTU5vZGUgfSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IEdyb3cgZnJvbSAnbWF0ZXJpYWwtdWkvdHJhbnNpdGlvbnMvR3Jvdyc7XG5pbXBvcnQgUGFwZXIgZnJvbSAnbWF0ZXJpYWwtdWkvUGFwZXInO1xuaW1wb3J0IHsgTWFuYWdlciwgVGFyZ2V0LCBQb3BwZXIgfSBmcm9tICdyZWFjdC1wb3BwZXInO1xuaW1wb3J0IEhpU2VsZWN0YWJsZUxpc3QgZnJvbSAnLi4vSGlTZWxlY3RhYmxlTGlzdCc7XG5pbXBvcnQgSGlJbnB1dCBmcm9tICcuLi9IaUZvcm0vSGlJbnB1dCc7XG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnLi4vc3R5bGVzJztcbmltcG9ydCB7IGdldE5leHRJdGVtU2VsZWN0YWJsZSB9IGZyb20gJy4uL3V0aWxzL2hpSGVscGVycyc7XG5cbmV4cG9ydCBjb25zdCBzdHlsZXMgPSB0aGVtZSA9PiAoe1xuICAgIHJvb3Q6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5wYWxldHRlLmJhY2tncm91bmQyLFxuICAgICAgICBtYXhXaWR0aDogNTAwLFxuICAgICAgICBtaW5XaWR0aDogMjAwLFxuICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgIH0sXG4gICAgcG9wcGVyOiB7XG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIHRyYW5zZm9ybTogJ25vbmUnLFxuICAgICAgICB6SW5kZXg6IDksXG4gICAgICAgIHRvcDogJzEwMCUnLFxuICAgIH0sXG4gICAgcGFwZXI6IHtcbiAgICAgICAgYm9yZGVyUmFkaXVzOiAnMHB4IDJweCcsXG4gICAgICAgIG1heEhlaWdodDogNDQwLFxuICAgICAgICB0cmFuc2l0aW9uOiAnbm9uZScsXG4gICAgfSxcbn0pO1xuXG5jbGFzcyBIaVN1Z2dlc3RTZWxlY3QgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogVXNlZnVsIHRvIGV4dGVuZCB0aGUgc3R5bGUgYXBwbGllZCB0byBjb21wb25lbnRzLlxuICAgICAgICAgKi9cbiAgICAgICAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGlkIGRlIGwnw6lsw6ltZW50IGlucHV0XG4gICAgICAgICAqL1xuICAgICAgICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIGFwcGVsw6llIGxvcnNxdSdvbiDDqWNyaXQgZGFucyBsZSBjaGFtcFxuICAgICAgICAgKi9cbiAgICAgICAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICAvKipcbiAgICAgICAgICogRm9uY3Rpb24gZGUgY2FsbGJhY2sgYXBwZWzDqWUgbG9yc3F1J29uIHPDqWxlY3Rpb25uZSB1bmUgc3VnZ2VzdGlvbi5cbiAgICAgICAgICovXG4gICAgICAgIG9uU2VsZWN0OiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3RlIGRlIHN1Z2dlc3Rpb25zLlxuICAgICAgICAgKi9cbiAgICAgICAgb3B0aW9uczogUHJvcFR5cGVzLmFycmF5LFxuICAgICAgICAvKipcbiAgICAgICAgICogVHJhZHVjdGlvbnMgKHBhciBkw6lmYXV0IGVuIGFuZ2xhaXMpXG4gICAgICAgICAqL1xuICAgICAgICB0cmFuc2xhdGlvbnM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgfTtcblxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICAgIHRyYW5zbGF0aW9uczoge30sXG4gICAgICAgIG9wdGlvbnM6IFtdLFxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGZvY3VzZWQ6IGZhbHNlLFxuICAgICAgICAgICAgb3B0aW9uczogcHJvcHMub3B0aW9ucyxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmhhbmRsZVNlbGVjdCA9IHRoaXMuaGFuZGxlU2VsZWN0LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlQmx1ciA9IHRoaXMuaGFuZGxlQmx1ci5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZUZvY3VzID0gdGhpcy5oYW5kbGVGb2N1cy5iaW5kKHRoaXMpO1xuICAgIH1cblxuICAgIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBvcHRpb25zOiBuZXh0UHJvcHMub3B0aW9ucyB9KTtcbiAgICB9XG5cbiAgICBoYW5kbGVTZWxlY3QgPSAoZXZlbnQsIHZhbHVlKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgIHRoaXMucHJvcHMub25TZWxlY3QoZXZlbnQsIHZhbHVlKTtcbiAgICAgICAgY29uc3QgdGV4dElucHV0ID0gdGhpcy50ZXh0SW5wdXQ7XG4gICAgICAgIGlmICh0ZXh0SW5wdXQpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRleHRJbnB1dC5mb2N1cygpO1xuICAgICAgICAgICAgfSwgMSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gS2V5IGRvd24gb24gbGlzdCBpdGVtc1xuICAgIGhhbmRsZUtleURvd24gPSBldmVudCA9PiB7XG4gICAgICAgIGxldCBuZXh0SXRlbTtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgICAgIG5leHRJdGVtID0gZ2V0TmV4dEl0ZW1TZWxlY3RhYmxlKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsICdkb3duJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgICAgICAgIG5leHRJdGVtID0gZ2V0TmV4dEl0ZW1TZWxlY3RhYmxlKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsICd1cCcpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ1RhYicpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgb3BlbjogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5leHRJdGVtKSB7XG4gICAgICAgICAgICBuZXh0SXRlbS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIC8vIEtleSBkb3duIG9uIHNlYXJjaCBpbnB1dFxuICAgIGhhbmRsZUtleURvd25TZWFyY2ggPSBldmVudCA9PiB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICAvLyBPbiByw6ljdXDDqHJlIGxhIGRpdiBwYXJlbnQgXCJvdmVybGF5XCJcbiAgICAgICAgICAgIGNvbnN0IG92ZXJsYXkgPSBmaW5kRE9NTm9kZSh0aGlzLm92ZXJsYXkpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gT24gcmVjdXDDqHJlIHRvdXMgbGVzIGl0ZW1zXG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBvdmVybGF5LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdsaScpO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gT24gZm9jdXMgc3VyIGxlIHByZW1pZXJcbiAgICAgICAgICAgICAgICAgICAgaXRlbXNbMF0uZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgb3B0aW9uczogW10gfSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgaGFuZGxlRm9jdXMoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBmb2N1c2VkOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIGhhbmRsZUJsdXIoZXZlbnQpIHtcbiAgICAgICAgLy8gU2kgb24gY2xpY2sgc3VyIHVuIMOpbMOpbWVudCBkZSBIaUlucHV0LCBvbiBnYXJkZSBsZSBmb2N1c1xuICAgICAgICAvLyBQYXIgZXhlbXBsZSBzdXIgbCdpY29uZSByZXNldFxuICAgICAgICBpZiAoIWV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgIXRoaXMub3ZlcmxheSB8fCAhdGhpcy5vdmVybGF5LmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgb3B0aW9uczogW10sIGZvY3VzZWQ6IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7IGNsYXNzZXMsIHRyYW5zbGF0aW9ucywgaWQsIG9uU2VhcmNoLCAuLi5vdGhlclByb3BzIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGNvbnN0IHsgZm9jdXNlZCwgb3B0aW9ucyB9ID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgY29uc3Qgb3BlbiA9ICEhb3B0aW9ucy5sZW5ndGggJiYgZm9jdXNlZDtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5yb290fVxuICAgICAgICAgICAgICAgIHJlZj17ZWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm92ZXJsYXkgPSBlbDtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxNYW5hZ2VyPlxuICAgICAgICAgICAgICAgICAgICA8VGFyZ2V0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEhpSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4ub3RoZXJQcm9wc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dElkPXtpZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0UmVmPXtpbnB1dCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dElucHV0ID0gaW5wdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25TZWFyY2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXt0aGlzLmhhbmRsZUtleURvd25TZWFyY2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyPXt0aGlzLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17dGhpcy5oYW5kbGVGb2N1c31cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvVGFyZ2V0PlxuICAgICAgICAgICAgICAgICAgICB7b3BlbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8UG9wcGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXN0YXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudHNFbmFibGVkPXtvcGVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wb3BwZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdyb3cgaW49e29wZW59IGlkPVwibWVudS1saXN0XCIgc3R5bGU9e3sgdHJhbnNmb3JtT3JpZ2luOiAnMCAwIDAnIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UGFwZXIgY2xhc3NOYW1lPXtjbGFzc2VzLnBhcGVyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaVNlbGVjdGFibGVMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbUxpc3Q9e29wdGlvbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJZExpc3Q9e1tdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrYm94PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy5oYW5kbGVTZWxlY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25zPXt0cmFuc2xhdGlvbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXt0aGlzLmhhbmRsZUtleURvd259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUGFwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Hcm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Qb3BwZXI+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9NYW5hZ2VyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGVzKHN0eWxlcywgeyBuYW1lOiAnSG11aUhpU3VnZ2VzdFNlbGVjdCcgfSkoSGlTdWdnZXN0U2VsZWN0KTtcbiJdfQ==
|
34595
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9IaVNlbGVjdC9IaVN1Z2dlc3RTZWxlY3QuanMiXSwibmFtZXMiOlsic3R5bGVzIiwicm9vdCIsImJhY2tncm91bmRDb2xvciIsInRoZW1lIiwicGFsZXR0ZSIsImJhY2tncm91bmQyIiwibWF4V2lkdGgiLCJtaW5XaWR0aCIsIndpZHRoIiwicG9wcGVyIiwidHJhbnNmb3JtIiwiekluZGV4IiwidG9wIiwicGFwZXIiLCJib3JkZXJSYWRpdXMiLCJtYXhIZWlnaHQiLCJ0cmFuc2l0aW9uIiwiSGlTdWdnZXN0U2VsZWN0IiwicHJvcHMiLCJoYW5kbGVTZWxlY3QiLCJldmVudCIsInZhbHVlIiwiZG9jdW1lbnQiLCJib2R5Iiwic3R5bGUiLCJvdmVyZmxvdyIsIm9uU2VsZWN0IiwidGV4dElucHV0Iiwic2V0VGltZW91dCIsImZvY3VzIiwiaGFuZGxlS2V5RG93biIsIm5leHRJdGVtIiwia2V5IiwiYWN0aXZlRWxlbWVudCIsInNldFN0YXRlIiwib3BlbiIsImhhbmRsZUtleURvd25TZWFyY2giLCJvdmVybGF5IiwiaXRlbXMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImxlbmd0aCIsIm9wdGlvbnMiLCJzdGF0ZSIsImZvY3VzZWQiLCJiaW5kIiwiaGFuZGxlQmx1ciIsImhhbmRsZUZvY3VzIiwibmV4dFByb3BzIiwicmVsYXRlZFRhcmdldCIsImNvbnRhaW5zIiwiY2xhc3NlcyIsImlkIiwic2hvd01pbkxlbmd0aCIsInNob3dOb1Jlc3VsdHMiLCJvblNlYXJjaCIsInRyYW5zbGF0aW9ucyIsIm90aGVyUHJvcHMiLCJvcHRpb25zU2hvd24iLCJ0eXBlIiwiZGlzYWJsZWQiLCJjZW50ZXJlZCIsImNoZWNrYm94IiwibGFiZWwiLCJub19yZXN1bHRfbWF0Y2giLCJtaW5fbGVuZ3RoIiwiZWwiLCJpbnB1dCIsInRyYW5zZm9ybU9yaWdpbiIsIlB1cmVDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJvYmplY3QiLCJzdHJpbmciLCJmdW5jIiwiYXJyYXkiLCJi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QUFLdEMsWUFKbkI7QUFLSSxrREFBY29DLFlBTGxCO0FBTUksK0NBQVcsS0FBS3pCO0FBTnBCO0FBREo7QUFESjtBQUxKO0FBakJSO0FBTkosYUFESjtBQThDSDs7OztFQTdMeUIsZ0JBQU1zQyxhOztBQUE5Qm5ELGUsQ0FDS29ELFMsR0FBWTtBQUNmOzs7QUFHQW5CLGFBQVMsb0JBQVVvQixNQUpKO0FBS2Y7OztBQUdBbkIsUUFBSSxvQkFBVW9CLE1BUkM7QUFTZjs7O0FBR0FqQixjQUFVLG9CQUFVa0IsSUFaTDtBQWFmOzs7QUFHQTlDLGNBQVUsb0JBQVU4QyxJQWhCTDtBQWlCZjs7O0FBR0EvQixhQUFTLG9CQUFVZ0MsS0FwQko7QUFxQmY7OztBQUdBckIsbUJBQWUsb0JBQVVzQixJQXhCVjtBQXlCZjs7O0FBR0FyQixtQkFBZSxvQkFBVXFCLElBNUJWO0FBNkJmOzs7QUFHQW5CLGtCQUFjLG9CQUFVZTtBQWhDVCxDO0FBRGpCckQsZSxDQW9DSzBELFksR0FBZTtBQUNsQnZCLG1CQUFlLEtBREc7QUFFbEJDLG1CQUFlLEtBRkc7QUFHbEJFLGtCQUFjO0FBQ1ZRLHlCQUFpQixpQkFEUDtBQUVWQyxvQkFBWTtBQUZGLEtBSEk7QUFPbEJ2QixhQUFTO0FBUFMsQztrQkE0Slgsd0JBQVd6QyxNQUFYLEVBQW1CLEVBQUU0RSxNQUFNLHFCQUFSLEVBQW5CLEVBQW9EM0QsZUFBcEQsQyIsImZpbGUiOiJIaVN1Z2dlc3RTZWxlY3QuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvbWZhemlvL2Rldi9wcm9qZWN0cy9oaXBheS1tYXRlcmlhbC11aSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBpbmhlcml0ZWRDb21wb25lbnQgSGlJbnB1dFxuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IGZpbmRET01Ob2RlIH0gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBHcm93IGZyb20gJ21hdGVyaWFsLXVpL3RyYW5zaXRpb25zL0dyb3cnO1xuaW1wb3J0IFBhcGVyIGZyb20gJ21hdGVyaWFsLXVpL1BhcGVyJztcbmltcG9ydCB7IE1hbmFnZXIsIFRhcmdldCwgUG9wcGVyIH0gZnJvbSAncmVhY3QtcG9wcGVyJztcbmltcG9ydCBIaVNlbGVjdGFibGVMaXN0IGZyb20gJy4uL0hpU2VsZWN0YWJsZUxpc3QnO1xuaW1wb3J0IEhpSW5wdXQgZnJvbSAnLi4vSGlGb3JtL0hpSW5wdXQnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcyB9IGZyb20gJy4uL3N0eWxlcyc7XG5pbXBvcnQgeyBnZXROZXh0SXRlbVNlbGVjdGFibGUgfSBmcm9tICcuLi91dGlscy9oaUhlbHBlcnMnO1xuXG5leHBvcnQgY29uc3Qgc3R5bGVzID0gdGhlbWUgPT4gKHtcbiAgICByb290OiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUucGFsZXR0ZS5iYWNrZ3JvdW5kMixcbiAgICAgICAgbWF4V2lkdGg6IDUwMCxcbiAgICAgICAgbWluV2lkdGg6IDIwMCxcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICB9LFxuICAgIHBvcHBlcjoge1xuICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICB0cmFuc2Zvcm06ICdub25lJyxcbiAgICAgICAgekluZGV4OiA5LFxuICAgICAgICB0b3A6ICcxMDAlJyxcbiAgICB9LFxuICAgIHBhcGVyOiB7XG4gICAgICAgIGJvcmRlclJhZGl1czogJzBweCAycHgnLFxuICAgICAgICBtYXhIZWlnaHQ6IDQ0MCxcbiAgICAgICAgdHJhbnNpdGlvbjogJ25vbmUnLFxuICAgIH0sXG59KTtcblxuY2xhc3MgSGlTdWdnZXN0U2VsZWN0IGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudCB7XG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVzZWZ1bCB0byBleHRlbmQgdGhlIHN0eWxlIGFwcGxpZWQgdG8gY29tcG9uZW50cy5cbiAgICAgICAgICovXG4gICAgICAgIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBpZCBkZSBsJ8OpbMOpbWVudCBpbnB1dFxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayBhcHBlbMOpZSBsb3JzcXUnb24gw6ljcml0IGRhbnMgbGUgY2hhbXBcbiAgICAgICAgICovXG4gICAgICAgIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIGFwcGVsw6llIGxvcnNxdSdvbiBzw6lsZWN0aW9ubmUgdW5lIHN1Z2dlc3Rpb24uXG4gICAgICAgICAqL1xuICAgICAgICBvblNlbGVjdDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMaXN0ZSBkZSBzdWdnZXN0aW9ucy5cbiAgICAgICAgICovXG4gICAgICAgIG9wdGlvbnM6IFByb3BUeXBlcy5hcnJheSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFBlcm1ldCBkJ2FmZmljaGVyIHVuIG1lc3NhZ2Ugc2kgcGFzIGFzc2V6IGRlIGNhcmFjdMOocmVzXG4gICAgICAgICAqL1xuICAgICAgICBzaG93TWluTGVuZ3RoOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFBlcm1ldCBkJ2FmZmljaGVyIHVuIG1lc3NhZ2Ugc2kgYXVjdW5lIG9wdGlvbnMgbidlc3QgcHLDqXNlbnRlXG4gICAgICAgICAqL1xuICAgICAgICBzaG93Tm9SZXN1bHRzOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRyYWR1Y3Rpb25zIChwYXIgZMOpZmF1dCBlbiBhbmdsYWlzKVxuICAgICAgICAgKi9cbiAgICAgICAgdHJhbnNsYXRpb25zOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIH07XG5cbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgICBzaG93TWluTGVuZ3RoOiBmYWxzZSxcbiAgICAgICAgc2hvd05vUmVzdWx0czogZmFsc2UsXG4gICAgICAgIHRyYW5zbGF0aW9uczoge1xuICAgICAgICAgICAgbm9fcmVzdWx0X21hdGNoOiAnTm8gcmVzdWx0IG1hdGNoJyxcbiAgICAgICAgICAgIG1pbl9sZW5ndGg6ICdWZXVpbGxleiBzYWlzaXIgMyBjYXJhY3TDqHJlcyBtaW5pbXVtJyxcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9uczogW10sXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcblxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgZm9jdXNlZDogZmFsc2UsXG4gICAgICAgICAgICBvcHRpb25zOiBwcm9wcy5vcHRpb25zLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuaGFuZGxlU2VsZWN0ID0gdGhpcy5oYW5kbGVTZWxlY3QuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVCbHVyID0gdGhpcy5oYW5kbGVCbHVyLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlRm9jdXMgPSB0aGlzLmhhbmRsZUZvY3VzLmJpbmQodGhpcyk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IG9wdGlvbnM6IG5leHRQcm9wcy5vcHRpb25zIH0pO1xuICAgIH1cblxuICAgIGhhbmRsZVNlbGVjdCA9IChldmVudCwgdmFsdWUpID0+IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgdGhpcy5wcm9wcy5vblNlbGVjdChldmVudCwgdmFsdWUpO1xuICAgICAgICBjb25zdCB0ZXh0SW5wdXQgPSB0aGlzLnRleHRJbnB1dDtcbiAgICAgICAgaWYgKHRleHRJbnB1dCkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGV4dElucHV0LmZvY3VzKCk7XG4gICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBLZXkgZG93biBvbiBsaXN0IGl0ZW1zXG4gICAgaGFuZGxlS2V5RG93biA9IGV2ZW50ID0+IHtcbiAgICAgICAgbGV0IG5leHRJdGVtO1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgICAgbmV4dEl0ZW0gPSBnZXROZXh0SXRlbVNlbGVjdGFibGUoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCwgJ2Rvd24nKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgICAgICAgbmV4dEl0ZW0gPSBnZXROZXh0SXRlbVNlbGVjdGFibGUoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCwgJ3VwJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnVGFiJykge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBvcGVuOiBmYWxzZSB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV4dEl0ZW0pIHtcbiAgICAgICAgICAgIG5leHRJdGVtLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gS2V5IGRvd24gb24gc2VhcmNoIGlucHV0XG4gICAgaGFuZGxlS2V5RG93blNlYXJjaCA9IGV2ZW50ID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIC8vIE9uIHLDqWN1cMOocmUgbGEgZGl2IHBhcmVudCBcIm92ZXJsYXlcIlxuICAgICAgICAgICAgY29uc3Qgb3ZlcmxheSA9IGZpbmRET01Ob2RlKHRoaXMub3ZlcmxheSk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBPbiByZWN1cMOocmUgdG91cyBsZXMgaXRlbXNcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IG92ZXJsYXkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2xpJyk7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBPbiBmb2N1cyBzdXIgbGUgcHJlbWllclxuICAgICAgICAgICAgICAgICAgICBpdGVtc1swXS5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIDEpO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBvcHRpb25zOiBbXSB9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBoYW5kbGVGb2N1cygpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGZvY3VzZWQ6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgaGFuZGxlQmx1cihldmVudCkge1xuICAgICAgICAvLyBTaSBvbiBjbGljayBzdXIgdW4gw6lsw6ltZW50IGRlIEhpSW5wdXQsIG9uIGdhcmRlIGxlIGZvY3VzXG4gICAgICAgIC8vIFBhciBleGVtcGxlIHN1ciBsJ2ljb25lIHJlc2V0XG4gICAgICAgIGlmICghZXZlbnQucmVsYXRlZFRhcmdldCB8fCAhdGhpcy5vdmVybGF5IHx8ICF0aGlzLm92ZXJsYXkuY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBvcHRpb25zOiBbXSwgZm9jdXNlZDogZmFsc2UgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHsgY2xhc3NlcywgaWQsIHNob3dNaW5MZW5ndGgsIHNob3dOb1Jlc3VsdHMsIG9uU2VhcmNoLCB0cmFuc2xhdGlvbnMsIC4uLm90aGVyUHJvcHMgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3QgeyBmb2N1c2VkLCBvcHRpb25zIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgICAgIGxldCBvcHRpb25zU2hvd24gPSBvcHRpb25zO1xuXG4gICAgICAgIC8vIElmIG5vIHJlc3VsdHMgbWF0Y2hcbiAgICAgICAgaWYgKG9wdGlvbnMubGVuZ3RoID09PSAwICYmIChzaG93Tm9SZXN1bHRzIHx8IHNob3dNaW5MZW5ndGgpKSB7XG4gICAgICAgICAgICBvcHRpb25zU2hvd24gPSBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBpZDogJ19ub19yZXN1bHQnLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjZW50ZXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tib3g6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogc2hvd05vUmVzdWx0cyA/IHRyYW5zbGF0aW9ucy5ub19yZXN1bHRfbWF0Y2ggOiB0cmFuc2xhdGlvbnMubWluX2xlbmd0aCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcGVuID0gISFvcHRpb25zU2hvd24ubGVuZ3RoICYmIGZvY3VzZWQ7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucm9vdH1cbiAgICAgICAgICAgICAgICByZWY9e2VsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5ID0gZWw7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8TWFuYWdlcj5cbiAgICAgICAgICAgICAgICAgICAgPFRhcmdldD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxIaUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgey4uLm90aGVyUHJvcHN9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dElkPXtpZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0UmVmPXtpbnB1dCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dElucHV0ID0gaW5wdXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25TZWFyY2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXt0aGlzLmhhbmRsZUtleURvd25TZWFyY2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyPXt0aGlzLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17dGhpcy5oYW5kbGVGb2N1c31cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvVGFyZ2V0PlxuICAgICAgICAgICAgICAgICAgICB7b3BlbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8UG9wcGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXN0YXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudHNFbmFibGVkPXtvcGVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wb3BwZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdyb3cgaW49e29wZW59IGlkPVwibWVudS1saXN0XCIgc3R5bGU9e3sgdHJhbnNmb3JtT3JpZ2luOiAnMCAwIDAnIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UGFwZXIgY2xhc3NOYW1lPXtjbGFzc2VzLnBhcGVyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaVNlbGVjdGFibGVMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbUxpc3Q9e29wdGlvbnNTaG93bn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZElkTGlzdD17W119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tib3g9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLmhhbmRsZVNlbGVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbnM9e3RyYW5zbGF0aW9uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249e3RoaXMuaGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUGFwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Hcm93PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Qb3BwZXI+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9NYW5hZ2VyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGVzKHN0eWxlcywgeyBuYW1lOiAnSG11aUhpU3VnZ2VzdFNlbGVjdCcgfSkoSGlTdWdnZXN0U2VsZWN0KTtcbiJdfQ==
|
34583
34596
|
|
34584
34597
|
/***/ }),
|
34585
34598
|
/* 320 */
|
@@ -37733,6 +37746,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
37733
37746
|
|
37734
37747
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
37735
37748
|
|
37749
|
+
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
|
37750
|
+
|
37736
37751
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
37737
37752
|
|
37738
37753
|
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
@@ -37749,7 +37764,7 @@ var styles = exports.styles = function styles(theme) {
|
|
37749
37764
|
},
|
37750
37765
|
popper: {
|
37751
37766
|
width: '100%',
|
37752
|
-
zIndex:
|
37767
|
+
zIndex: 1200
|
37753
37768
|
},
|
37754
37769
|
paper: {
|
37755
37770
|
borderRadius: '0px 2px',
|
@@ -37820,6 +37835,11 @@ var HiSelect = function (_React$PureComponent) {
|
|
37820
37835
|
valueInOptions = true;
|
37821
37836
|
}
|
37822
37837
|
});
|
37838
|
+
if (!valueInOptions && props.pinnedItem) {
|
37839
|
+
if (props.value.indexOf(props.pinnedItem.id) >= 0) {
|
37840
|
+
valueInOptions = true;
|
37841
|
+
}
|
37842
|
+
}
|
37823
37843
|
}
|
37824
37844
|
|
37825
37845
|
if (!valueInOptions) {
|
@@ -37949,7 +37969,8 @@ var HiSelect = function (_React$PureComponent) {
|
|
37949
37969
|
hierarchic = _props.hierarchic,
|
37950
37970
|
id = _props.id,
|
37951
37971
|
placeholder = _props.placeholder,
|
37952
|
-
staticPosition = _props.staticPosition
|
37972
|
+
staticPosition = _props.staticPosition,
|
37973
|
+
pinnedItem = _props.pinnedItem;
|
37953
37974
|
var _state = this.state,
|
37954
37975
|
open = _state.open,
|
37955
37976
|
suggestions = _state.suggestions,
|
@@ -37959,6 +37980,11 @@ var HiSelect = function (_React$PureComponent) {
|
|
37959
37980
|
var display = '';
|
37960
37981
|
var selectedIdList = Array.isArray(value) ? value : value ? [value] : [];
|
37961
37982
|
|
37983
|
+
var _suggestions = [].concat(_toConsumableArray(suggestions));
|
37984
|
+
if (pinnedItem) {
|
37985
|
+
_suggestions = [pinnedItem].concat(_toConsumableArray(suggestions));
|
37986
|
+
}
|
37987
|
+
|
37962
37988
|
if (this.state.dynamic && selectedIdList.length === 1) {
|
37963
37989
|
display = translations.one_item_selected.replace('%s', selectedIdList.length);
|
37964
37990
|
} else if (this.state.nbOptions !== selectedIdList.length && selectedIdList.length > 1) {
|
@@ -37967,9 +37993,13 @@ var HiSelect = function (_React$PureComponent) {
|
|
37967
37993
|
display = translations.all;
|
37968
37994
|
} else if (selectedIdList.length === 1) {
|
37969
37995
|
if (type !== 'icon') {
|
37970
|
-
|
37996
|
+
var item = options.find(function (o) {
|
37971
37997
|
return o.id === selectedIdList[0];
|
37972
|
-
})
|
37998
|
+
});
|
37999
|
+
if (!item && pinnedItem) {
|
38000
|
+
item = pinnedItem;
|
38001
|
+
}
|
38002
|
+
display = item.label;
|
37973
38003
|
} else {
|
37974
38004
|
var optionSelected = options.find(function (o) {
|
37975
38005
|
return o.id === selectedIdList[0];
|
@@ -38026,7 +38056,7 @@ var HiSelect = function (_React$PureComponent) {
|
|
38026
38056
|
_react2.default.createElement(_HiSelectableList2.default, {
|
38027
38057
|
type: type,
|
38028
38058
|
parentItemSelectable: parentItemSelectable,
|
38029
|
-
itemList:
|
38059
|
+
itemList: _suggestions,
|
38030
38060
|
onSelect: this.handleSelect,
|
38031
38061
|
selectedIdList: selectedIdList,
|
38032
38062
|
checkbox: checkbox,
|
@@ -38197,6 +38227,10 @@ HiSelect.propTypes = {
|
|
38197
38227
|
* Les items parents sont sélectionnables
|
38198
38228
|
*/
|
38199
38229
|
parentItemSelectable: _propTypes2.default.bool,
|
38230
|
+
/**
|
38231
|
+
* Item épinglé en début de liste
|
38232
|
+
*/
|
38233
|
+
pinnedItem: _propTypes2.default.object,
|
38200
38234
|
/**
|
38201
38235
|
* Placeholder affiché lorsque le select est fermé
|
38202
38236
|
* Surcharge le placeholder par défaut
|
@@ -38259,7 +38293,7 @@ var _initialiseProps = function _initialiseProps() {
|
|
38259
38293
|
_this3.handleClose();
|
38260
38294
|
} else {
|
38261
38295
|
if (!_this3.props.staticPosition) {
|
38262
|
-
document.body.style.overflow = 'hidden';
|
38296
|
+
//document.body.style.overflow = 'hidden';
|
38263
38297
|
}
|
38264
38298
|
_this3.setState({ open: true });
|
38265
38299
|
var options = _this3.props.options.slice();
|
@@ -38323,7 +38357,7 @@ var _initialiseProps = function _initialiseProps() {
|
|
38323
38357
|
nextItem = (0, _hiHelpers.getNextItemSelectable)(document.activeElement, 'up');
|
38324
38358
|
} else if (event.key === 'Tab') {
|
38325
38359
|
if (!_this3.props.staticPosition) {
|
38326
|
-
document.body.style.overflow = 'auto';
|
38360
|
+
//document.body.style.overflow = 'auto';
|
38327
38361
|
}
|
38328
38362
|
_this3.setState({ open: false });
|
38329
38363
|
}
|
@@ -38348,7 +38382,7 @@ var _initialiseProps = function _initialiseProps() {
|
|
38348
38382
|
|
38349
38383
|
this.handleClose = function () {
|
38350
38384
|
if (!_this3.props.staticPosition) {
|
38351
|
-
document.body.style.overflow = 'auto';
|
38385
|
+
//document.body.style.overflow = 'auto';
|
38352
38386
|
}
|
38353
38387
|
_this3.setState({
|
38354
38388
|
open: false
|
@@ -38373,10 +38407,10 @@ var _initialiseProps = function _initialiseProps() {
|
|
38373
38407
|
var _props2 = _this3.props,
|
38374
38408
|
multiple = _props2.multiple,
|
38375
38409
|
value = _props2.value,
|
38376
|
-
name = _props2.name,
|
38377
38410
|
onChange = _props2.onChange,
|
38378
38411
|
options = _props2.options,
|
38379
|
-
hierarchic = _props2.hierarchic
|
38412
|
+
hierarchic = _props2.hierarchic,
|
38413
|
+
pinnedItem = _props2.pinnedItem;
|
38380
38414
|
var _state2 = _this3.state,
|
38381
38415
|
hierarchySelected = _state2.hierarchySelected,
|
38382
38416
|
hierarchy = _state2.hierarchy,
|
@@ -38425,8 +38459,20 @@ var _initialiseProps = function _initialiseProps() {
|
|
38425
38459
|
hiSelected[item.parentId].splice(hiSelected[item.parentId].indexOf(item.id), 1);
|
38426
38460
|
}
|
38427
38461
|
} else {
|
38428
|
-
|
38429
|
-
|
38462
|
+
if (pinnedItem && item.id === pinnedItem.id) {
|
38463
|
+
Object.keys(hiSelected).map(function (parentItemId) {
|
38464
|
+
hiSelected[parentItemId] = [];
|
38465
|
+
return true;
|
38466
|
+
});
|
38467
|
+
valueList = [item.id];
|
38468
|
+
} else {
|
38469
|
+
// item non sélectionné => on le sélectionne
|
38470
|
+
if (item.hasChildren !== true) valueList.push(item.id);
|
38471
|
+
|
38472
|
+
if (pinnedItem && valueList.includes(pinnedItem.id)) {
|
38473
|
+
valueList.splice(valueList.indexOf(pinnedItem.id), 1);
|
38474
|
+
}
|
38475
|
+
}
|
38430
38476
|
|
38431
38477
|
if (item.hasChildren === true) {
|
38432
38478
|
// Si item parent => on ajoute tous les enfants
|
@@ -38522,7 +38568,7 @@ var _initialiseProps = function _initialiseProps() {
|
|
38522
38568
|
};
|
38523
38569
|
|
38524
38570
|
exports.default = (0, _styles.withStyles)(styles, { name: 'HmuiHiSelect' })(HiSelect);
|
38525
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9IaVNlbGVjdC9IaVNlbGVjdC5qcyJdLCJuYW1lcyI6WyJzdHlsZXMiLCJyb290IiwiYmFja2dyb3VuZENvbG9yIiwidGhlbWUiLCJwYWxldHRlIiwiYmFja2dyb3VuZDIiLCJtYXhXaWR0aCIsIndpZHRoIiwicG9zaXRpb24iLCJwb3BwZXIiLCJ6SW5kZXgiLCJwYXBlciIsImJvcmRlclJhZGl1cyIsIm1heEhlaWdodCIsInRyYW5zaXRpb24iLCJsYWJlbEljb24iLCJtYXJnaW5SaWdodCIsInNlbGVjdEljb25MYWJlbCIsIndoaXRlU3BhY2UiLCJvdmVyZmxvdyIsInRleHRPdmVyZmxvdyIsInBhZGRpbmdSaWdodCIsInR5cG9ncmFwaHkiLCJib2R5MSIsImRpc3BsYXkiLCJIaVNlbGVjdCIsInByb3BzIiwic3RhdGUiLCJvcGVuIiwiZm9jdXNlZCIsInN1Z2dlc3Rpb25zIiwiaGllcmFyY2h5U2VsZWN0ZWQiLCJoaWVyYXJjaHkiLCJuYk9wdGlvbnMiLCJkeW5hbWljIiwidmFsdWVJbk9wdGlvbnMiLCJ2YWwiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiaW5kZXhPZiIsIml0ZW0iLCJpZCIsIkVycm9yIiwiaGllcmFyY2hpYyIsImhpZXJhcmNoeVRyZWVzIiwiYnVpbGRIaWVyYXJjaHlUcmVlcyIsIm9wdGlvbnNMZW5ndGgiLCJvcHRpb24iLCJoYXNDaGlsZHJlbiIsImhhbmRsZVNlbGVjdCIsImJpbmQiLCJoYW5kbGVDbGljayIsImhhbmRsZUNsb3NlIiwiaGFuZGxlQ2xpY2tBd2F5IiwiaGFuZGxlUmVxdWVzdERlbGV0ZSIsImhhbmRsZVN1Z2dlc3Rpb25zIiwiaGFuZGxlRm9jdXMiLCJoYW5kbGVCbHVyIiwibmV4dFByb3BzIiwib25TZWFyY2giLCJzZXRTdGF0ZSIsIkFycmF5IiwiaXNBcnJheSIsImhhc093blByb3BlcnR5IiwicGFyZW50SWQiLCJwdXNoIiwiaW5jbHVkZXMiLCJjbGFzc2VzIiwiZGlzYWJsZWQiLCJlcnJvciIsImNoZWNrYm94Iiwic2VhcmNoYWJsZSIsImRpc3BsYXlBc0NoaXAiLCJ0eXBlIiwidHJhbnNsYXRpb25zIiwicGFyZW50SXRlbVNlbGVjdGFibGUiLCJpY29uIiwicGFyZW50SWNvbiIsImhvdmVySWNvbiIsImNoZWNrZWRJY29uIiwicGxhY2Vob2xkZXIiLCJzdGF0aWNQb3NpdGlvbiIsInNlbGVjdGVkSWRMaXN0Iiwib25lX2l0ZW1fc2VsZWN0ZWQiLCJyZXBsYWNlIiwibl9pdGVtc19zZWxlY3RlZCIsImFsbCIsImZpbmQiLCJvIiwibGFiZWwiLCJvcHRpb25TZWxlY3RlZCIsImNoaXBGaWx0ZXIiLCJwb3BwZXJDbGFzcyIsInBvcHBlckNsb3NlIiwiYWxsU2VsZWN0ZWQiLCJwb3BwZXJTdHlsZSIsImNvbnRhaW5lcldpZHRoIiwiY29udGVudCIsInRyYW5zZm9ybU9yaWdpbiIsInNlYXJjaCIsInNlYXJjaEZpZWxkIiwiZWwiLCJoYW5kbGVLZXlEb3duU2VhcmNoIiwiaGFuZGxlS2V5RG93biIsIm92ZXJsYXkiLCJvbk1vdXNlRW50ZXIiLCJvbk1vdXNlTGVhdmUiLCJzZWxlY3RJbnB1dEVsZW1lbnQiLCJQdXJlQ29tcG9uZW50IiwicHJvcFR5cGVzIiwiYm9vbCIsIm5vZGUiLCJvYmplY3QiLCJoYXNBbGwiLCJpY29uQWxsIiwib25lT2ZUeXBlIiwic3RyaW5nIiwibXVsdGlwbGUiLCJuYW1lIiwiaXNSZXF1aXJlZCIsIm9uQ2hhbmdlIiwiZnVuYyIsIm9uQ2xvc2UiLCJhcnJheSIsIm9uZU9mIiwibnVtYmVyIiwiZGVmYXVsdFByb3BzIiwiaGVpZ2h0Iiwibm9fcmVzdWx0X21hdGNoIiwibl9jaGlsZHJlbiIsIm9uZV9jaGlsZCIsImRvY3VtZW50IiwiYm9keSIsInN0eWxlIiwic2xpY2UiLCJvbkNsaWNrIiwic2V0VGltZW91dCIsImZvY3VzIiwiZm9jdXNPblNlbGVjdGVkSXRlbSIsIml0ZW1TZWxlY3RlZCIsInF1ZXJ5U2VsZWN0b3IiLCJwYXJlbnRFbGVtZW50IiwidGFnTmFtZSIsIml0ZW1zIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJpdGVtVG9Gb2N1cyIsIm5leHRJdGVtIiwiZXZlbnQiLCJrZXkiLCJhY3RpdmVFbGVtZW50IiwiY29udGFpbnMiLCJ0YXJnZXQiLCJoaVNlbGVjdGVkIiwidmFsdWVMaXN0IiwiT2JqZWN0Iiwia2V5cyIsImZpbHRlciIsInNwbGljZSIsImlkc0luU3VnZ2VzdGlvbnMiLCJzdWdnZXN0aW9uIiwiYWxsQ2hpbGRyZW5TdWdnZXN0aW9uc1NlbGVjdGVkIiwiY29uY2F0IiwiY2VudGVyZWQiLCJhbGxJdGVtIiwidW5zaGlmdCIsImV2dCIsInN0b3BQcm9wYWdhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O2tRQUFBOztBQUVBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOztBQUNBOztBQUNBOzs7O0FBQ0E7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7OztBQUVPLElBQU1BLDBCQUFTLFNBQVRBLE1BQVM7QUFBQSxXQUFVO0FBQzVCQyxjQUFNO0FBQ0ZDLDZCQUFpQkMsTUFBTUMsT0FBTixDQUFjQyxXQUQ3QjtBQUVGQyxzQkFBVSxHQUZSO0FBR0ZDLG1CQUFPLE1BSEw7QUFJRkMsc0JBQVU7QUFKUixTQURzQjtBQU81QkMsZ0JBQVE7QUFDSkYsbUJBQU8sTUFESDtBQUVKRyxvQkFBUTtBQUZKLFNBUG9CO0FBVzVCQyxlQUFPO0FBQ0hDLDBCQUFjLFNBRFg7QUFFSEMsdUJBQVcsR0FGUjtBQUdIQyx3QkFBWTtBQUhULFNBWHFCO0FBZ0I1QkMsbUJBQVc7QUFDUEMseUJBQWE7QUFETixTQWhCaUI7QUFtQjVCQztBQUNJQyx3QkFBWSxRQURoQjtBQUVJQyxzQkFBVSxRQUZkO0FBR0lDLDBCQUFjLFVBSGxCO0FBSUlDLDBCQUFjO0FBSmxCLFdBS09sQixNQUFNbUIsVUFBTixDQUFpQkMsS0FMeEI7QUFNSUMscUJBQVMsYUFOYjtBQU9JakIsbUJBQU87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QUFPZixhQUFhWTtBQUhSLGlCQUFoQjtBQUtBLG9CQUFJNEIsWUFBWSxLQUFoQixFQUF1QjtBQUNuQmlELDRCQUFRMUYsSUFBUixHQUFlLE1BQWY7QUFDSDtBQUNEN0MsNEJBQVl3SSxPQUFaLENBQW9CRCxPQUFwQjtBQUNIO0FBQ0o7O0FBRUQsZUFBS3ZHLFFBQUwsQ0FBYztBQUNWaEM7QUFEVSxTQUFkO0FBR0gsSzs7U0FFRDBCLG1CLEdBQXNCLGVBQU87QUFDekIrRyxZQUFJQyxlQUFKO0FBQ0EsZUFBSzlJLEtBQUwsQ0FBV2dHLFFBQVgsQ0FBb0IsT0FBS2hHLEtBQUwsQ0FBVzhGLElBQS9CLEVBQXFDLEVBQXJDO0FBQ0gsSzs7O2tCQWdLVSx3QkFBV3hILE1BQVgsRUFBbUIsRUFBRXdILE1BQU0sY0FBUixFQUFuQixFQUE2Qy9GLFFBQTdDLEMiLCJmaWxlIjoiSGlTZWxlY3QuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvbWZhemlvL2Rldi9wcm9qZWN0cy9oaXBheS1tYXRlcmlhbC11aSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBpbmhlcml0ZWRDb21wb25lbnQgSW5wdXRcblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBHcm93IGZyb20gJ21hdGVyaWFsLXVpL3RyYW5zaXRpb25zL0dyb3cnO1xuaW1wb3J0IHsgZmluZERPTU5vZGUgfSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IFBhcGVyIGZyb20gJ21hdGVyaWFsLXVpL1BhcGVyJztcbmltcG9ydCBDbGlja0F3YXlMaXN0ZW5lciBmcm9tICdtYXRlcmlhbC11aS91dGlscy9DbGlja0F3YXlMaXN0ZW5lcic7XG5pbXBvcnQgeyBNYW5hZ2VyLCBUYXJnZXQsIFBvcHBlciB9IGZyb20gJ3JlYWN0LXBvcHBlcic7XG5pbXBvcnQgeyBDaGVja2JveEJsYW5rT3V0bGluZSwgQ2hlY2tib3hNYXJrZWQgfSBmcm9tICdtZGktbWF0ZXJpYWwtdWknO1xuaW1wb3J0IEhpU2VsZWN0YWJsZUxpc3QgZnJvbSAnLi4vSGlTZWxlY3RhYmxlTGlzdCc7XG5pbXBvcnQgeyBIaVNlYXJjaEZpZWxkIH0gZnJvbSAnLi4vSGlGb3JtJztcbmltcG9ydCBTZWxlY3RJbnB1dCBmcm9tICcuL1NlbGVjdElucHV0JztcbmltcG9ydCBIaUNoaXAgZnJvbSAnLi4vSGlDaGlwL0hpQ2hpcCc7XG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnLi4vc3R5bGVzJztcbmltcG9ydCB7IGFycmF5VW5pcXVlLCBnZXROZXh0SXRlbVNlbGVjdGFibGUgfSBmcm9tICcuLi91dGlscy9oaUhlbHBlcnMnO1xuaW1wb3J0IEhpSWNvbkJ1aWxkZXIgZnJvbSAnLi4vdXRpbHMvSGlJY29uQnVpbGRlcic7XG5cbmV4cG9ydCBjb25zdCBzdHlsZXMgPSB0aGVtZSA9PiAoe1xuICAgIHJvb3Q6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5wYWxldHRlLmJhY2tncm91bmQyLFxuICAgICAgICBtYXhXaWR0aDogNTAwLFxuICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB9LFxuICAgIHBvcHBlcjoge1xuICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICB6SW5kZXg6IDExLFxuICAgIH0sXG4gICAgcGFwZXI6IHtcbiAgICAgICAgYm9yZGVyUmFkaXVzOiAnMHB4IDJweCcsXG4gICAgICAgIG1heEhlaWdodDogNDQwLFxuICAgICAgICB0cmFuc2l0aW9uOiAnbm9uZSAhaW1wb3J0YW50JyxcbiAgICB9LFxuICAgIGxhYmVsSWNvbjoge1xuICAgICAgICBtYXJnaW5SaWdodDogMTAsXG4gICAgfSxcbiAgICBzZWxlY3RJY29uTGFiZWw6IHtcbiAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICAgICAgICBwYWRkaW5nUmlnaHQ6IDE2LFxuICAgICAgICAuLi50aGVtZS50eXBvZ3JhcGh5LmJvZHkxLFxuICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgIH0sXG59KTtcblxuLyoqXG4gKlxuICogVXRpbGlzw6kgcG91ciB0b3VzIHR5cGVzIGRlIHNlbGVjdHMgZGFucyBsZXMgZm9ybXVsYWlyZXMuXG4gKiAtIHNpbmdsZSAvIG11bHRpcGxlICggbXVsdGktc2VsZWN0IClcbiAqIC0gYXZlYyAvIHNhbnMgY2hlY2tib3hlc1xuICogLSBhdmVjIC8gc2FucyBiYXJyZSBkZSByZWNoZXJjaGVcbiAqIC0gYXZlYyAvIHNhbnMgb3B0aW9uIFwiQWxsXCJcbiAqIC0gcHJpc2UgZW4gY29tcHRlIGR1IHR5cGUgZGVzIMOpbMOpbWVudHMgKHRleHQsIGltYWdlLCBpY29uLCAuLi4pXG4gKlxuICogQ2UgY29tcG9zYW50IHLDqXVuaSBsZXMgc291cy1jb21wb3NhbnRzXG4gKiAtIFNlbGVjdElucHV0IDogYWZmaWNoZSBsJ8OpbMOpbWVudCBkYW5zIGxlIGZvcm11bGFpcmVcbiAqIC0gSGlTZWFyY2hGaWVsZCA6IGludMOoZ3JlIHVuZSBiYXJyZSBkZSByZWNoZXJjaGUgZGFucyBsZSBQb3BwZXIsXG4gKiBpbCBmaWx0cmUgbGEgbGlzdGUgZGVzIHN1Z2dlc3Rpb25zXG4gKiAtIEhpU2VsZWN0YWJsZUxpc3QgOiBhZmZpY2hlIGxhIGxpc3RlIGRlcyBzdWdnZXN0aW9ucyBzZWxvbiBsZSB0eXBlIGRlcyDDqWzDqW1lbnRzXG4gKi9cbmNsYXNzIEhpU2VsZWN0IGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudCB7XG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFmZmljaGUgdW5lIGNoZWNrYm94IHBvdXIgY2hhcXVlIMOpbMOpbWVudHMsIHBhciBkw6lmYXV0IHNpIG9wdGlvbnMgZXN0IG5lc3RlZFxuICAgICAgICAgKi9cbiAgICAgICAgY2hlY2tib3g6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogSWNvbiBhZmZpY2jDqSBsb3JzcXVlIGwnaXRlbSBlc3Qgc8OpbGVjdGlvbm7DqVxuICAgICAgICAgKi9cbiAgICAgICAgY2hlY2tlZEljb246IFByb3BUeXBlcy5ub2RlLFxuICAgICAgICAvKipcbiAgICAgICAgICogVXNlZnVsIHRvIGV4dGVuZCB0aGUgc3R5bGUgYXBwbGllZCB0byBjb21wb25lbnRzLlxuICAgICAgICAgKi9cbiAgICAgICAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEluYWN0aWZcbiAgICAgICAgICovXG4gICAgICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE9wdGlvbiBwZXJtZXR0YW50IGQnYWZmaWNoZXIgbGVzIHPDqWxlY3Rpb24gc291cyBmb3JtZSBkZSBDaGlwLlxuICAgICAgICAgKi9cbiAgICAgICAgZGlzcGxheUFzQ2hpcDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBcHBsaXF1ZSBsZSBzdHlsZSBlcnJvclxuICAgICAgICAgKi9cbiAgICAgICAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogQWZmaWNoZSBsJ8OpbMOpbWVudCAnQWxsJ1xuICAgICAgICAgKi9cbiAgICAgICAgaGFzQWxsOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExlcyBpdGVtcyBzb250IGhpw6lyYXJjaGlzw6lzXG4gICAgICAgICAqL1xuICAgICAgICBoaWVyYXJjaGljOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEljb24gYWZmaWNow6kgbG9yc3F1ZSBsJ2l0ZW0gbidlc3QgcGFzIHPDqWxlY3Rpb25uw6kgZXQgcXUnb24gbGUgc3Vydm9sZVxuICAgICAgICAgKi9cbiAgICAgICAgaG92ZXJJY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEljb24gYWZmaWNow6kgbG9yc3F1ZSBsJ2l0ZW0gbidlc3QgcGFzIHPDqWxlY3Rpb25uw6lcbiAgICAgICAgICovXG4gICAgICAgIGljb246IFByb3BUeXBlcy5ub2RlLFxuICAgICAgICAvKipcbiAgICAgICAgICogTm9tIGRlIGwnaWPDtG5lXG4gICAgICAgICAqL1xuICAgICAgICBpY29uQWxsOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuYm9vbF0pLFxuICAgICAgICAvKipcbiAgICAgICAgICogaWQgZHUgc2VsZWN0XG4gICAgICAgICAqL1xuICAgICAgICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEF1dG9yaXNlIGxhIHPDqWxlY3Rpb24gZGUgcGx1c2lldXJzIHZhbGV1cnNcbiAgICAgICAgICovXG4gICAgICAgIG11bHRpcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE5vbSBkdSBjaGFtcCBkZSBmb3JtdWxhaXJlXG4gICAgICAgICAqL1xuICAgICAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayBxdWkgcmVudm9pdCBsYS9sZXMgdmFsZXVycyBzw6lsZWN0aW9ubsOpZXNcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHtvYmplY3R9IGV2ZW50XG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nIHx8IGFycmF5fSB2YWx1ZVxuICAgICAgICAgKi9cbiAgICAgICAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayBhcHBlbMOpZSBsb3JzcXUnb24gZmVybWUgbGUgc2VsZWN0XG4gICAgICAgICAqL1xuICAgICAgICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIGFwcGVsw6llIGxvcnNxdSdvbiBzdXJ2b2xlIGxlIGNoYW1wc1xuICAgICAgICAgKi9cbiAgICAgICAgb25Nb3VzZUVudGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIGFwcGVsw6llIGxvcnNxdWUgbGUgY3Vyc2V1ciBxdWl0dGUgbGUgY2hhbXBzXG4gICAgICAgICAqL1xuICAgICAgICBvbk1vdXNlTGVhdmU6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICAvKipcbiAgICAgICAgICogRm9uY3Rpb24gZGUgY2FsbGJhY2sgYXBwZWzDqWUgbG9yc3F1J29uIMOpY3JpdCBkYW5zIGxhIGJhcnJlIGRlIHJlY2hlcmNoZVxuICAgICAgICAgKiBBIHV0aWxpc2VyIHBvdXIgbGVzIHNlbGVjdHMgYXZlYyBkZXMgZG9ubsOpZXMgZHluYW1pcXVlc1xuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0ge29iamVjdH0gZXZlbnRcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gICAgICAgICAqL1xuICAgICAgICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMaXN0ZXMgZGVzIG9wdGlvbnMgZHUgc2VsZWN0XG4gICAgICAgICAqL1xuICAgICAgICBvcHRpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEljb24gYWZmaWNow6kgbG9yc3F1J3VuIGl0ZW0gcGFyZW50IG4nZXN0IHBhcyBzw6lsZWN0aW9ubsOpXG4gICAgICAgICAqL1xuICAgICAgICBwYXJlbnRJY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExlcyBpdGVtcyBwYXJlbnRzIHNvbnQgc8OpbGVjdGlvbm5hYmxlc1xuICAgICAgICAgKi9cbiAgICAgICAgcGFyZW50SXRlbVNlbGVjdGFibGU6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogUGxhY2Vob2xkZXIgYWZmaWNow6kgbG9yc3F1ZSBsZSBzZWxlY3QgZXN0IGZlcm3DqVxuICAgICAgICAgKiBTdXJjaGFyZ2UgbGUgcGxhY2Vob2xkZXIgcGFyIGTDqWZhdXRcbiAgICAgICAgICovXG4gICAgICAgIHBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICAvKipcbiAgICAgICAgICogQWZmaWNoZSB1biBpbnB1dCBkZSByZWNoZXJjaGUgcGVybWV0dGFudCBkZSBmaWx0cmVyIGxlcyBvcHRpb25zXG4gICAgICAgICAqL1xuICAgICAgICBzZWFyY2hhYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNpIHRydWUsIGxlIGNvbnRlbnUgZHUgc2VsZWN0IHNlcmEgZGFucyB1bmUgZGl2IHN0YXRpYyBwbHV0b3QgcXVlIGRhbnMgdW5lIHBvcHBlciBhYnNvbHV0ZVxuICAgICAgICAgKi9cbiAgICAgICAgc3RhdGljUG9zaXRpb246IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogVHJhZHVjdGlvbnMgKHBhciBkw6lmYXV0IGVuIGFuZ2xhaXMpXG4gICAgICAgICAqL1xuICAgICAgICB0cmFuc2xhdGlvbnM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUeXBlIGRlcyDDqWzDqW1lbnRzIGR1IHNlbGVjdCwgZMOpZmluaXQgbGUgcmVuZHUgZCd1biDDqWzDqW1lbnRcbiAgICAgICAgICovXG4gICAgICAgIHR5cGU6IFByb3BUeXBlcy5vbmVPZihbJ2ljb24nLCAndGV4dCcsICdpbWFnZScsICdwcmltYXJ5LWhpZ2hsaWdodCddKSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFZhbHVlKHMpIGR1IHNlbGVjdFxuICAgICAgICAgKi9cbiAgICAgICAgdmFsdWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5hcnJheV0pLFxuICAgIH07XG5cbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICAgIGVycm9yOiBmYWxzZSxcbiAgICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgIGNoZWNrYm94OiBmYWxzZSxcbiAgICAgICAgc2VhcmNoYWJsZTogZmFsc2UsXG4gICAgICAgIGhhc0FsbDogZmFsc2UsXG4gICAgICAgIGljb25BbGw6IGZhbHNlLFxuICAgICAgICBoaWVyYXJjaGljOiBmYWxzZSxcbiAgICAgICAgcGFyZW50SXRlbVNlbGVjdGFibGU6IGZhbHNlLFxuICAgICAgICBkaXNwbGF5QXNDaGlwOiBmYWxzZSxcbiAgICAgICAgaWNvbjogPENoZWNrYm94QmxhbmtPdXRsaW5lIHN0eWxlPXt7IHdpZHRoOiAyMCwgaGVpZ2h0OiAyMCB9fSAvPixcbiAgICAgICAgcGFyZW50SWNvbjogPENoZWNrYm94QmxhbmtPdXRsaW5lIHN0eWxlPXt7IHdpZHRoOiAyMCwgaGVpZ2h0OiAyMCB9fSAvPixcbiAgICAgICAgaG92ZXJJY29uOiA8Q2hlY2tib3hCbGFua091dGxpbmUgc3R5bGU9e3sgd2lkdGg6IDIwLCBoZWlnaHQ6IDIwIH19IC8+LFxuICAgICAgICBjaGVja2VkSWNvbjogPENoZWNrYm94TWFya2VkIHN0eWxlPXt7IHdpZHRoOiAyMCwgaGVpZ2h0OiAyMCB9fSAvPixcbiAgICAgICAgdHJhbnNsYXRpb25zOiB7XG4gICAgICAgICAgICBhbGw6ICdBbGwnLFxuICAgICAgICAgICAgbm9fcmVzdWx0X21hdGNoOiAnTm8gcmVzdWx0IG1hdGNoJyxcbiAgICAgICAgICAgIHNlYXJjaDogJ1NlYXJjaCcsXG4gICAgICAgICAgICBuX2l0ZW1zX3NlbGVjdGVkOiAnJXMgaXRlbXMgc2VsZWN0ZWQnLFxuICAgICAgICAgICAgb25lX2l0ZW1fc2VsZWN0ZWQ6ICclcyBpdGVtIHNlbGVjdGVkJyxcbiAgICAgICAgICAgIG5fY2hpbGRyZW46ICclcyBpdGVtcycsXG4gICAgICAgICAgICBvbmVfY2hpbGQ6ICclcyBpdGVtJyxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdGljUG9zaXRpb246IGZhbHNlLFxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIG9wZW46IGZhbHNlLFxuICAgICAgICAgICAgZm9jdXNlZDogZmFsc2UsXG4gICAgICAgICAgICBzdWdnZXN0aW9uczogW10sXG4gICAgICAgICAgICBoaWVyYXJjaHlTZWxlY3RlZDoge30sXG4gICAgICAgICAgICBoaWVyYXJjaHk6IHt9LFxuICAgICAgICAgICAgbmJPcHRpb25zOiAwLFxuICAgICAgICAgICAgZHluYW1pYzogZmFsc2UsXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgdmFsdWUgaXMgaW4gb3B0aW9uc1xuICAgICAgICBsZXQgdmFsdWVJbk9wdGlvbnMgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgdmFsID0gcHJvcHMudmFsdWU7XG4gICAgICAgIC8vIE5vIG9wdGlvbnMgcHJvdmlkZWQuXG4gICAgICAgIGlmICghcHJvcHMub3B0aW9ucy5sZW5ndGggfHwgIXZhbCB8fCAhdmFsLmxlbmd0aCkge1xuICAgICAgICAgICAgdmFsdWVJbk9wdGlvbnMgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgYW4gb3B0aW9uIG1hdGNoIHZhbHVlIHByb3AuXG4gICAgICAgICAgICBwcm9wcy5vcHRpb25zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZUluT3B0aW9ucyAmJiB2YWwuaW5kZXhPZihpdGVtLmlkKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVJbk9wdGlvbnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF2YWx1ZUluT3B0aW9ucykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdwcm9wIHZhbHVlIHByb3ZpZGVkIGRvZXMgbm90IG1hdGNoIGFueSBvcHRpb24uJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcHMuaGllcmFyY2hpYyA9PT0gdHJ1ZSAmJiBwcm9wcy5vcHRpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGhpZXJhcmNoeVRyZWVzID0gdGhpcy5idWlsZEhpZXJhcmNoeVRyZWVzKHByb3BzKTtcblxuICAgICAgICAgICAgdGhpcy5zdGF0ZS5oaWVyYXJjaHkgPSBoaWVyYXJjaHlUcmVlcy5oaWVyYXJjaHk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlLmhpZXJhcmNoeVNlbGVjdGVkID0gaGllcmFyY2h5VHJlZXMuaGllcmFyY2h5U2VsZWN0ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcHMub3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAvLyBHZXQgcmVhbCBvcHRpb25zIG51bWJlciAocGFyZW50ICYgX2FsbCBhcmUgbm90IHJlYWwgb3B0aW9ucylcbiAgICAgICAgICAgIGxldCBvcHRpb25zTGVuZ3RoID0gMDtcbiAgICAgICAgICAgIHByb3BzLm9wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb24uaGFzQ2hpbGRyZW4gIT09IHRydWUgJiYgb3B0aW9uLmlkICE9PSAnX2FsbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uc0xlbmd0aCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5uYk9wdGlvbnMgPSBvcHRpb25zTGVuZ3RoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5keW5hbWljID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGFuZGxlU2VsZWN0ID0gdGhpcy5oYW5kbGVTZWxlY3QuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVDbGljayA9IHRoaXMuaGFuZGxlQ2xpY2suYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVDbG9zZSA9IHRoaXMuaGFuZGxlQ2xvc2UuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVDbGlja0F3YXkgPSB0aGlzLmhhbmRsZUNsaWNrQXdheS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZVJlcXVlc3REZWxldGUgPSB0aGlzLmhhbmRsZVJlcXVlc3REZWxldGUuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVTdWdnZXN0aW9ucyA9IHRoaXMuaGFuZGxlU3VnZ2VzdGlvbnMuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVGb2N1cyA9IHRoaXMuaGFuZGxlRm9jdXMuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVCbHVyID0gdGhpcy5oYW5kbGVCbHVyLmJpbmQodGhpcyk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdHlwZW9mIHRoaXMucHJvcHMub25TZWFyY2ggIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgICAgICB0aGlzLnByb3BzLm9wdGlvbnMgJiZcbiAgICAgICAgICAgIHRoaXMucHJvcHMub3B0aW9ucy5sZW5ndGggPiAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVTdWdnZXN0aW9ucyhuZXh0UHJvcHMub3B0aW9ucyk7XG4gICAgICAgICAgICBsZXQgb3B0aW9uc0xlbmd0aCA9IDA7XG4gICAgICAgICAgICBuZXh0UHJvcHMub3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbi5oYXNDaGlsZHJlbiAhPT0gdHJ1ZSAmJiBvcHRpb24uaWQgIT09ICdfYWxsJykge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zTGVuZ3RoKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbmJPcHRpb25zOiBvcHRpb25zTGVuZ3RoIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5leHRQcm9wcy5oaWVyYXJjaGljID09PSB0cnVlICYmIG5leHRQcm9wcy5vcHRpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGhpZXJhcmNoeVRyZWVzID0gdGhpcy5idWlsZEhpZXJhcmNoeVRyZWVzKG5leHRQcm9wcyk7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgaGllcmFyY2h5OiBoaWVyYXJjaHlUcmVlcy5oaWVyYXJjaHksIGhpZXJhcmNoeVNlbGVjdGVkOiBoaWVyYXJjaHlUcmVlcy5oaWVyYXJjaHlTZWxlY3RlZCB9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYnVpbGRIaWVyYXJjaHlUcmVlcyhwcm9wcykge1xuICAgICAgICAvLyBDb25zdHJ1Y3QgdHdvIGFzc29jaWF0aXZlIGFycmF5c1xuICAgICAgICAvLyBoaWVyYXJjaHlbcGFyZW50SWRdID0+IGNoaWxkcmVuXG4gICAgICAgIC8vIGhpZXJhcmNoeVNlbGVjdGVkW3BhcmVudElkXSA9PiBzZWxlY3RlZCBjaGlsZHJlblxuICAgICAgICBjb25zdCBoaWVyYXJjaHkgPSB7fTtcbiAgICAgICAgY29uc3QgaGllcmFyY2h5U2VsZWN0ZWQgPSB7fTtcbiAgICAgICAgbGV0IHZhbHVlID0gcHJvcHMudmFsdWUgfHwgW107XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHZhbHVlID0gW3Byb3BzLnZhbHVlXTtcbiAgICAgICAgcHJvcHMub3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICBpZiAob3B0aW9uLmhhc0NoaWxkcmVuID09PSB0cnVlICYmICFoaWVyYXJjaHkuaGFzT3duUHJvcGVydHkob3B0aW9uLmlkKSkge1xuICAgICAgICAgICAgICAgIGhpZXJhcmNoeVtvcHRpb24uaWRdID0gW107XG4gICAgICAgICAgICAgICAgaGllcmFyY2h5U2VsZWN0ZWRbb3B0aW9uLmlkXSA9IFtdO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChvcHRpb24uaGFzT3duUHJvcGVydHkoJ3BhcmVudElkJykpIHtcbiAgICAgICAgICAgICAgICBoaWVyYXJjaHlbb3B0aW9uLnBhcmVudElkXS5wdXNoKG9wdGlvbi5pZCk7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlLmluY2x1ZGVzKG9wdGlvbi5pZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaGllcmFyY2h5U2VsZWN0ZWRbb3B0aW9uLnBhcmVudElkXS5wdXNoKG9wdGlvbi5pZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsgaGllcmFyY2h5LCBoaWVyYXJjaHlTZWxlY3RlZCB9O1xuICAgIH1cblxuICAgIGhhbmRsZUNsaWNrID0gKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5vcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNsb3NlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMucHJvcHMuc3RhdGljUG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtvcGVuOiB0cnVlfSk7XG4gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5wcm9wcy5vcHRpb25zLnNsaWNlKCk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVN1Z2dlc3Rpb25zKG9wdGlvbnMpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNsaWNrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNsaWNrKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEdlc3Rpb24gZHUgZm9jdXNcbiAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaEZpZWxkKSB7XG4gICAgICAgICAgICAgICAgLy8gc2kgc2VhcmNoYWJsZSwgZm9jdXMgc3VyIGxlIGNoYW1wcyBkZSByZWNoZXJjaGVcbiAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2hGaWVsZCA9IHRoaXMuc2VhcmNoRmllbGQ7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEZpZWxkLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfSwgMSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3ZlcmxheSkge1xuICAgICAgICAgICAgICAgIC8vIHNpbm9uIGZvY3VzIHN1ciBsZSBkZXJuaWVyIMOpbMOpbWVudCBzZWxlY3Rpb25uw6lcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzT25TZWxlY3RlZEl0ZW0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBmb2N1c09uU2VsZWN0ZWRJdGVtID0gKCkgPT4ge1xuICAgICAgICAvLyBPbiByw6ljdXDDqHJlIGxhIGRpdiBwYXJlbnQgXCJvdmVybGF5XCJcbiAgICAgICAgY29uc3Qgb3ZlcmxheSA9IGZpbmRET01Ob2RlKHRoaXMub3ZlcmxheSk7XG4gICAgICAgIGNvbnN0IG11bHRpcGxlID0gdGhpcy5wcm9wcy5tdWx0aXBsZTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnByb3BzLnZhbHVlO1xuICAgICAgICBjb25zdCBzZWxlY3RlZElkTGlzdCA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGxldCBmb2N1c2VkID0gZmFsc2U7XG4gICAgICAgICAgICAvLyBTaSB1biBvdSBwbHVzaWV1cnMgaXRlbXMgc29udCBzZWxlY3Rpb25uw6lzLCBvbiBmb2N1cyBzdXIgbGUgZGVybmllclxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSWRMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtU2VsZWN0ZWQgPSBvdmVybGF5LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAgICAgICAgIGBbZGF0YS1pZD1cIiR7c2VsZWN0ZWRJZExpc3Rbc2VsZWN0ZWRJZExpc3QubGVuZ3RoIC0gMV19XCJdYCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtU2VsZWN0ZWQgJiYgaXRlbVNlbGVjdGVkLnBhcmVudEVsZW1lbnQudGFnTmFtZSA9PT0gJ0xJJykge1xuICAgICAgICAgICAgICAgICAgICBpdGVtU2VsZWN0ZWQucGFyZW50RWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICBmb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBTaSBwYXMgZCdpdGVtIHNlbGVjdGlvbm7DqSwgb3UgcGFzIHZpc2libGUgKGVuIGNhcyBkZSByZWNoZXJjaGUpLCBmb2N1cyBzdXIgbGUgcHJlbWllclxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSWRMaXN0Lmxlbmd0aCA9PT0gMCB8fCAhZm9jdXNlZCkge1xuICAgICAgICAgICAgICAgIC8vIE9uIHJlY3Vww6hyZSB0b3VzIGxlcyBpdGVtc1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gb3ZlcmxheS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbGknKTtcbiAgICAgICAgICAgICAgICBsZXQgaXRlbVRvRm9jdXMgPSBpdGVtc1swXTtcbiAgICAgICAgICAgICAgICAvLyBTaSBzZWxlY3QgbXVsdGlwbGUsIGV0IHF1J2F1IG1vaW5zIHVuIHNlbGVjdGlvbm7DqSwgZm9jdXMgc3VyIGxlIDJlIGl0ZW1cbiAgICAgICAgICAgICAgICBpZiAobXVsdGlwbGUgJiYgc2VsZWN0ZWRJZExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtVG9Gb2N1cyA9IGl0ZW1zWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXRlbVRvRm9jdXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbVRvRm9jdXMuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDEpO1xuICAgIH07XG5cbiAgICAvLyBLZXkgZG93biBvbiBsaXN0IGl0ZW1zXG4gICAgaGFuZGxlS2V5RG93biA9IGV2ZW50ID0+IHtcbiAgICAgICAgbGV0IG5leHRJdGVtO1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgICAgbmV4dEl0ZW0gPSBnZXROZXh0SXRlbVNlbGVjdGFibGUoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCwgJ2Rvd24nKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgICAgICAgbmV4dEl0ZW0gPSBnZXROZXh0SXRlbVNlbGVjdGFibGUoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCwgJ3VwJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnVGFiJykge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnByb3BzLnN0YXRpY1Bvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBvcGVuOiBmYWxzZSB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmV4dEl0ZW0pIHtcbiAgICAgICAgICAgIG5leHRJdGVtLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gS2V5IGRvd24gb24gc2VhcmNoIGlucHV0XG4gICAgaGFuZGxlS2V5RG93blNlYXJjaCA9IGV2ZW50ID0+IHtcbiAgICAgICAgaWYgKHRoaXMub3ZlcmxheSAmJiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJyB8fCBldmVudC5rZXkgPT09ICdBcnJvd1VwJykpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNPblNlbGVjdGVkSXRlbSgpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGhhbmRsZUZvY3VzID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgZm9jdXNlZDogdHJ1ZSB9KTtcbiAgICB9O1xuXG4gICAgaGFuZGxlQmx1ciA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGZvY3VzZWQ6IGZhbHNlIH0pO1xuICAgIH07XG5cbiAgICBoYW5kbGVDbG9zZSA9ICgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLnN0YXRpY1Bvc2l0aW9uKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgb3BlbjogZmFsc2UsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9uQ2xvc2UpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25DbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdElucHV0RWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RJbnB1dEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBoYW5kbGVDbGlja0F3YXkgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgLy8gQXUgY2xpYyBzdXIgbGUgYm91dG9uLCBvbiBsYWlzc2UgbGUgaGFuZGxlQ2xpY2sgZmVybWVyIGxlIHNlbGVjdFxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0SW5wdXRFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2xvc2UoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENhbGwgb25DaGFuZ2Ugd2l0aCB0aGUgdXBkYXRlZCB2YWx1ZVxuICAgICAqXG4gICAgICogLSBoYW5kbGUgc2luZ2xlIHZhbHVlXG4gICAgICogLSBoYW5kbGUgbXVsdGlwbGUgdmFsdWVcbiAgICAgKiAtIGhhbmRsZSAnX2FsbCcgaWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudFxuICAgICAqIEBwYXJhbSBpdGVtXG4gICAgICovXG4gICAgaGFuZGxlU2VsZWN0ID0gKGV2ZW50LCBpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgbXVsdGlwbGUsIHZhbHVlLCBuYW1lLCBvbkNoYW5nZSwgb3B0aW9ucywgaGllcmFyY2hpYyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3QgeyBoaWVyYXJjaHlTZWxlY3RlZCwgaGllcmFyY2h5LCBuYk9wdGlvbnMgfSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGNvbnN0IGhpU2VsZWN0ZWQgPSB7IC4uLmhpZXJhcmNoeVNlbGVjdGVkIH07XG5cbiAgICAgICAgaWYgKG11bHRpcGxlKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWVMaXN0ID0gdmFsdWU7XG4gICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gJ19hbGwnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlTGlzdC5sZW5ndGggPT09IG5iT3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZUxpc3QgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhpZXJhcmNoaWMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIGhpZXJhcmNoaWMgc2VsZWN0ID0+IGVtcHR5IGFzc29jaWF0aXZlIGFycmF5IG9mIHNlbGVjdGVkIGNoaWxkcmVuXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhoaVNlbGVjdGVkKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlTZWxlY3RlZFtrZXldID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi5oYXNDaGlsZHJlbiAhPT0gdHJ1ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICF2YWx1ZUxpc3QuaW5jbHVkZXMob3B0aW9uLmlkKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi5pZCAhPT0gJ19hbGwnXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUxpc3QucHVzaChvcHRpb24uaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvcHRpb24uaGFzQ2hpbGRyZW4gPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBoaWVyYXJjaGljIHNlbGVjdCA9PiBmaWxsIGFzc29jaWF0aXZlIGFycmF5IG9mIHNlbGVjdGVkIGNoaWxkcmVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlTZWxlY3RlZFtvcHRpb24uaWRdID0gaGllcmFyY2h5W29wdGlvbi5pZF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgdmFsdWVMaXN0LmluY2x1ZGVzKGl0ZW0uaWQpIHx8XG4gICAgICAgICAgICAgICAgKGl0ZW0uaGFzQ2hpbGRyZW4gPT09IHRydWUgJiZcbiAgICAgICAgICAgICAgICAgICAgaGllcmFyY2h5U2VsZWN0ZWRbaXRlbS5pZF0ubGVuZ3RoID09PSBoaWVyYXJjaHlbaXRlbS5pZF0ubGVuZ3RoKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgLy8gaXRlbSBkw6lqw6Agc8OpbGVjdGlvbm7DqSA9PiBvbiBsZSBkw6lzZWxlY3Rpb25uZVxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmhhc0NoaWxkcmVuICE9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlTGlzdCA9IHZhbHVlTGlzdC5maWx0ZXIodmFsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWwgIT09IGl0ZW0uaWQ7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmhhc0NoaWxkcmVuID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBhbGwgY2hpbGRyZW5cbiAgICAgICAgICAgICAgICAgICAgdmFsdWVMaXN0ID0gdmFsdWVMaXN0LmZpbHRlcih2YWwgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLnN0YXRlLmhpZXJhcmNoeVtpdGVtLmlkXS5pbmNsdWRlcyh2YWwpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaGlTZWxlY3RlZFtpdGVtLmlkXSA9IFtdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS5oYXNPd25Qcm9wZXJ0eSgncGFyZW50SWQnKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBTaSBpdGVtIGVzdCB1biBlbmZhbnQgb24gbCdlbmzDqHZlIGR1IHRhYmxlYXUgYXNzb2NpYXRpZiBkZXNcbiAgICAgICAgICAgICAgICAgICAgLy8gZWxtdHMgc8OpbGVjdGlvbm7DqXNcbiAgICAgICAgICAgICAgICAgICAgaGlTZWxlY3RlZFtpdGVtLnBhcmVudElkXS5zcGxpY2UoaGlTZWxlY3RlZFtpdGVtLnBhcmVudElkXS5pbmRleE9mKGl0ZW0uaWQpLCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGl0ZW0gbm9uIHPDqWxlY3Rpb25uw6kgPT4gb24gbGUgc8OpbGVjdGlvbm5lXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaGFzQ2hpbGRyZW4gIT09IHRydWUpIHZhbHVlTGlzdC5wdXNoKGl0ZW0uaWQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaGFzQ2hpbGRyZW4gPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2kgaXRlbSBwYXJlbnQgPT4gb24gYWpvdXRlIHRvdXMgbGVzIGVuZmFudHNcbiAgICAgICAgICAgICAgICAgICAgLy8gT3Ugb24gbGVzIHN1cHByaW1lIHMnaWxzIHNvbnQgZMOpasOgIHRvdXMgc8OpbGVjdGlvbm7DqXMgKGRhbnMgdW5lIGxpc3RlIGZpbHRyw6llKVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpZHNJblN1Z2dlc3Rpb25zID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuc3VnZ2VzdGlvbnMuZm9yRWFjaChzdWdnZXN0aW9uID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLmhpZXJhcmNoeVtpdGVtLmlkXS5pbmNsdWRlcyhzdWdnZXN0aW9uLmlkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkc0luU3VnZ2VzdGlvbnMucHVzaChzdWdnZXN0aW9uLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmKGhpZXJhcmNoeVNlbGVjdGVkW2l0ZW0uaWRdLmxlbmd0aCA+IDApIHt9XG4gICAgICAgICAgICAgICAgICAgIGxldCBhbGxDaGlsZHJlblN1Z2dlc3Rpb25zU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpZHNJblN1Z2dlc3Rpb25zLmZvckVhY2goaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoaWVyYXJjaHlTZWxlY3RlZFtpdGVtLmlkXS5pbmNsdWRlcyhpZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxDaGlsZHJlblN1Z2dlc3Rpb25zU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGFsbENoaWxkcmVuU3VnZ2VzdGlvbnNTZWxlY3RlZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gT24gc3VwcHJpbWUgbGVzIGVuZmFudHMgY2FyIGTDqWrDoCB0b3VzIHPDqWxlY3Rpb25uw6lzXG4gICAgICAgICAgICAgICAgICAgICAgICBpZHNJblN1Z2dlc3Rpb25zLmZvckVhY2goaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlTGlzdC5zcGxpY2UodmFsdWVMaXN0LmluZGV4T2YoaWQpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaVNlbGVjdGVkW2l0ZW0uaWRdLnNwbGljZShoaVNlbGVjdGVkW2l0ZW0uaWRdLmluZGV4T2YoaWQpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gT24gYWpvdXRlIHRvdXMgbGVzIGVuZmFudHMgZmlsdHLDqXMgYXUgw6lsw6ltZW50cyBzw6lsZWN0aW9ubsOpc1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVMaXN0ID0gYXJyYXlVbmlxdWUodmFsdWVMaXN0LmNvbmNhdChpZHNJblN1Z2dlc3Rpb25zKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoaVNlbGVjdGVkW2l0ZW0uaWRdID0gYXJyYXlVbmlxdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlTZWxlY3RlZFtpdGVtLmlkXS5jb25jYXQoaWRzSW5TdWdnZXN0aW9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGhpZXJhcmNoeVNlbGVjdGVkOiBoaVNlbGVjdGVkIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS5oYXNPd25Qcm9wZXJ0eSgncGFyZW50SWQnKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBTaSBpdGVtIGVzdCB1biBlbmZhbnQgb24gbCdham91dGUgZHUgdGFibGVhdSBhc3NvY2lhdGlmIGRlc1xuICAgICAgICAgICAgICAgICAgICAvLyBlbG10cyBzw6lsZWN0aW9ubsOpc1xuICAgICAgICAgICAgICAgICAgICBoaVNlbGVjdGVkW2l0ZW0ucGFyZW50SWRdLnB1c2goaXRlbS5pZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGhpZXJhcmNoeVNlbGVjdGVkOiBoaVNlbGVjdGVkIH0pO1xuICAgICAgICAgICAgb25DaGFuZ2UoZXZlbnQsIHZhbHVlTGlzdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvbkNoYW5nZShldmVudCwgaXRlbS5pZCk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIHN1Z2dlc3Rpb25zIGxpc3RcbiAgICAgKiAtIGFkZCAnX25vX3Jlc3VsdCcgaXRlbSBpZiBzdWdnZXN0aW9uIGxpc3QgaXMgZW1wdHlcbiAgICAgKiAtIGFkZCAnX2FsbCcgaXRlbSBpZiBzdWdnZXN0aW9uIGxpc3QgaXMgY29tcGxldGVcbiAgICAgKiBAcGFyYW0gc3VnZ2VzdGlvbnNcbiAgICAgKi9cbiAgICBoYW5kbGVTdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zID0+IHtcbiAgICAgICAgY29uc3QgeyBvcHRpb25zLCBoYXNBbGwsIGljb25BbGwsIHRyYW5zbGF0aW9ucywgbXVsdGlwbGUgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgaWYgKHN1Z2dlc3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gSGFuZGxlIE5vIFJlc3VsdFxuICAgICAgICAgICAgLy8gRklYIHRvIHJlbW92ZSBhbGwgaXRlbVxuICAgICAgICAgICAgc3VnZ2VzdGlvbnMgPSBbXTtcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiAnX25vX3Jlc3VsdCcsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNoZWNrYm94OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRpb25zLm5vX3Jlc3VsdF9tYXRjaCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaGFzQWxsICYmXG4gICAgICAgICAgICBzdWdnZXN0aW9ucy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICBzdWdnZXN0aW9ucy5sZW5ndGggPT09IG9wdGlvbnMubGVuZ3RoICYmXG4gICAgICAgICAgICBtdWx0aXBsZSA9PT0gdHJ1ZVxuICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSAnQWxsJ1xuICAgICAgICAgICAgaWYgKHN1Z2dlc3Rpb25zLmZpbHRlcihzdWdnZXN0aW9uID0+IHN1Z2dlc3Rpb24uaWQgPT09ICdfYWxsJykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWxsSXRlbSA9IHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdfYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogaWNvbkFsbCxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0aW9ucy5hbGwsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAoaWNvbkFsbCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgYWxsSXRlbS50eXBlID0gJ2ljb24nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucy51bnNoaWZ0KGFsbEl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBzdWdnZXN0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGhhbmRsZVJlcXVlc3REZWxldGUgPSBldnQgPT4ge1xuICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UodGhpcy5wcm9wcy5uYW1lLCBbXSk7XG4gICAgfTtcblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2xhc3NlcyxcbiAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgY2hlY2tib3gsXG4gICAgICAgICAgICBzZWFyY2hhYmxlLFxuICAgICAgICAgICAgZGlzcGxheUFzQ2hpcCxcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIHRyYW5zbGF0aW9ucyxcbiAgICAgICAgICAgIHBhcmVudEl0ZW1TZWxlY3RhYmxlLFxuICAgICAgICAgICAgaWNvbixcbiAgICAgICAgICAgIHBhcmVudEljb24sXG4gICAgICAgICAgICBob3Zlckljb24sXG4gICAgICAgICAgICBjaGVja2VkSWNvbixcbiAgICAgICAgICAgIGhpZXJhcmNoaWMsXG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgc3RhdGljUG9zaXRpb24sXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGNvbnN0IHsgb3Blbiwgc3VnZ2VzdGlvbnMsIGZvY3VzZWQgfSA9IHRoaXMuc3RhdGU7XG5cbiAgICAgICAgbGV0IGRpc3BsYXkgPSAnJztcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJZExpc3QgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogdmFsdWUgPyBbdmFsdWVdIDogW107XG5cbiAgICAgICAgaWYgKHRoaXMuc3RhdGUuZHluYW1pYyAmJiBzZWxlY3RlZElkTGlzdC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGRpc3BsYXkgPSB0cmFuc2xhdGlvbnMub25lX2l0ZW1fc2VsZWN0ZWQucmVwbGFjZSgnJXMnLCBzZWxlY3RlZElkTGlzdC5sZW5ndGgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhdGUubmJPcHRpb25zICE9PSBzZWxlY3RlZElkTGlzdC5sZW5ndGggJiYgc2VsZWN0ZWRJZExpc3QubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgZGlzcGxheSA9IHRyYW5zbGF0aW9ucy5uX2l0ZW1zX3NlbGVjdGVkLnJlcGxhY2UoJyVzJywgc2VsZWN0ZWRJZExpc3QubGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlLm5iT3B0aW9ucyA9PT0gc2VsZWN0ZWRJZExpc3QubGVuZ3RoICYmIHRoaXMuc3RhdGUubmJPcHRpb25zID49IDEpIHtcbiAgICAgICAgICAgIGRpc3BsYXkgPSB0cmFuc2xhdGlvbnMuYWxsO1xuICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkSWRMaXN0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgaWYgKHR5cGUgIT09ICdpY29uJykge1xuICAgICAgICAgICAgICAgIGRpc3BsYXkgPSBvcHRpb25zLmZpbmQobyA9PiBvLmlkID09PSBzZWxlY3RlZElkTGlzdFswXSkubGFiZWw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvblNlbGVjdGVkID0gb3B0aW9ucy5maW5kKG8gPT4gby5pZCA9PT0gc2VsZWN0ZWRJZExpc3RbMF0pO1xuICAgICAgICAgICAgICAgIGRpc3BsYXkgPSAoXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y2xhc3Nlcy5zZWxlY3RJY29uTGFiZWx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEhpSWNvbkJ1aWxkZXIgaWNvbj17b3B0aW9uU2VsZWN0ZWQuaWNvbn0gY2xhc3NOYW1lPXtjbGFzc2VzLmxhYmVsSWNvbn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtvcHRpb25TZWxlY3RlZC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGlzcGxheUFzQ2hpcCkge1xuICAgICAgICAgICAgY29uc3QgY2hpcEZpbHRlciA9IDxIaUNoaXAgbGFiZWw9e3BsYWNlaG9sZGVyIHx8IGRpc3BsYXl9IG9uRGVsZXRlPXt0aGlzLmhhbmRsZVJlcXVlc3REZWxldGV9IC8+O1xuICAgICAgICAgICAgaWYgKGRpc3BsYXkpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5ID0gY2hpcEZpbHRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBvcHBlckNsYXNzID0gY2xhc3NOYW1lcyhjbGFzc2VzLnBvcHBlciwge1xuICAgICAgICAgICAgW2NsYXNzZXMucG9wcGVyQ2xvc2VdOiAhb3BlbixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IGFsbFNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIGlmIChzZWxlY3RlZElkTGlzdC5sZW5ndGggPT09IHRoaXMuc3RhdGUubmJPcHRpb25zKSB7XG4gICAgICAgICAgICBhbGxTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcG9wcGVyU3R5bGUgPSB7fTtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuY29udGFpbmVyV2lkdGggPiAwKSB7XG4gICAgICAgICAgICBwb3BwZXJTdHlsZSA9IHsgd2lkdGg6IHRoaXMucHJvcHMuY29udGFpbmVyV2lkdGggfTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgY29uc3QgY29udGVudCA9IDxDbGlja0F3YXlMaXN0ZW5lciBvbkNsaWNrQXdheT17dGhpcy5oYW5kbGVDbGlja0F3YXl9PlxuICAgICAgICAgICAgPEdyb3cgaW49e29wZW59IGlkPVwibWVudS1saXN0XCIgc3R5bGU9e3sgdHJhbnNmb3JtT3JpZ2luOiAnMCAwIDAnIH19PlxuICAgICAgICAgICAgICAgIDxQYXBlciBjbGFzc05hbWU9e2NsYXNzZXMucGFwZXJ9PlxuICAgICAgICAgICAgICAgICAgICB7ISFzZWFyY2hhYmxlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxIaVNlYXJjaEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbUxpc3Q9e29wdGlvbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tGaWx0ZXJlZExpc3Q9e3RoaXMuaGFuZGxlU3VnZ2VzdGlvbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUHJvcGVydHlMaXN0PXtbJ2xhYmVsJ119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3RyYW5zbGF0aW9ucy5zZWFyY2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWFyY2g9e3RoaXMucHJvcHMub25TZWFyY2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRSZWY9e2VsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaEZpZWxkID0gZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17dGhpcy5oYW5kbGVLZXlEb3duU2VhcmNofVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICA8SGlTZWxlY3RhYmxlTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT17dHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEl0ZW1TZWxlY3RhYmxlPXtwYXJlbnRJdGVtU2VsZWN0YWJsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1MaXN0PXtzdWdnZXN0aW9uc31cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLmhhbmRsZVNlbGVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSWRMaXN0PXtzZWxlY3RlZElkTGlzdH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrYm94PXtjaGVja2JveH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZXJhcmNoeT17dGhpcy5zdGF0ZS5oaWVyYXJjaHl9XG4gICAgICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaGljPXtoaWVyYXJjaGljfVxuICAgICAgICAgICAgICAgICAgICAgICAgaGllcmFyY2h5U2VsZWN0ZWQ9e3RoaXMuc3RhdGUuaGllcmFyY2h5U2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbnM9e3RyYW5zbGF0aW9uc31cbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249e2ljb259XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJY29uPXtwYXJlbnRJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgaG92ZXJJY29uPXtob3Zlckljb259XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkSWNvbj17Y2hlY2tlZEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICBhbGxTZWxlY3RlZD17YWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249e3RoaXMuaGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1BhcGVyPlxuICAgICAgICAgICAgPC9Hcm93PlxuICAgICAgICA8L0NsaWNrQXdheUxpc3RlbmVyPlxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnJvb3R9XG4gICAgICAgICAgICAgICAgcmVmPXtlbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheSA9IGVsO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPE1hbmFnZXI+XG4gICAgICAgICAgICAgICAgICAgIDxUYXJnZXQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17aWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3BsYWNlaG9sZGVyIHx8IGRpc3BsYXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9e3R5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vQnV0dG9uPXtkaXNwbGF5QXNDaGlwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLmhhbmRsZUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm9jdXM9e3RoaXMuaGFuZGxlRm9jdXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyPXt0aGlzLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXt0aGlzLnByb3BzLm9uTW91c2VFbnRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlTGVhdmU9e3RoaXMucHJvcHMub25Nb3VzZUxlYXZlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZkVsZW1lbnQ9eyhlbCkgPT4geyB0aGlzLnNlbGVjdElucHV0RWxlbWVudCA9IGVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L1RhcmdldD5cbiAgICAgICAgICAgICAgICAgICAge29wZW4gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljUG9zaXRpb24gPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXtwb3BwZXJTdHlsZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbnRlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcHBlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tc3RhcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudHNFbmFibGVkPXtvcGVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3BvcHBlckNsYXNzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17cG9wcGVyU3R5bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29udGVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1BvcHBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L01hbmFnZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZXMoc3R5bGVzLCB7IG5hbWU6ICdIbXVpSGlTZWxlY3QnIH0pKEhpU2VsZWN0KTtcbiJdfQ==
|
38571
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9IaVNlbGVjdC9IaVNlbGVjdC5qcyJdLCJuYW1lcyI6WyJzdHlsZXMiLCJyb290IiwiYmFja2dyb3VuZENvbG9yIiwidGhlbWUiLCJwYWxldHRlIiwiYmFja2dyb3VuZDIiLCJtYXhXaWR0aCIsIndpZHRoIiwicG9zaXRpb24iLCJwb3BwZXIiLCJ6SW5kZXgiLCJwYXBlciIsImJvcmRlclJhZGl1cyIsIm1heEhlaWdodCIsInRyYW5zaXRpb24iLCJsYWJlbEljb24iLCJtYXJnaW5SaWdodCIsInNlbGVjdEljb25MYWJlbCIsIndoaXRlU3BhY2UiLCJvdmVyZmxvdyIsInRleHRPdmVyZmxvdyIsInBhZGRpbmdSaWdodCIsInR5cG9ncmFwaHkiLCJib2R5MSIsImRpc3BsYXkiLCJIaVNlbGVjdCIsInByb3BzIiwic3RhdGUiLCJvcGVuIiwiZm9jdXNlZCIsInN1Z2dlc3Rpb25zIiwiaGllcmFyY2h5U2VsZWN0ZWQiLCJoaWVyYXJjaHkiLCJuYk9wdGlvbnMiLCJkeW5hbWljIiwidmFsdWVJbk9wdGlvbnMiLCJ2YWwiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiaW5kZXhPZiIsIml0ZW0iLCJpZCIsInBpbm5lZEl0ZW0iLCJFcnJvciIsImhpZXJhcmNoaWMiLCJoaWVyYXJjaHlUcmVlcyIsImJ1aWxkSGllcmFyY2h5VHJlZXMiLCJvcHRpb25zTGVuZ3RoIiwib3B0aW9uIiwiaGFzQ2hpbGRyZW4iLCJoYW5kbGVTZWxlY3QiLCJiaW5kIiwiaGFuZGxlQ2xpY2siLCJoYW5kbGVDbG9zZSIsImhhbmRsZUNsaWNrQXdheSIsImhhbmRsZVJlcXVlc3REZWxldGUiLCJoYW5kbGVTdWdnZXN0aW9ucyIsImhhbmRsZUZvY3VzIiwiaGFuZGxlQmx1ciIsIm5leHRQcm9wcyIsIm9uU2VhcmNoIiwic2V0U3RhdGUiLCJBcnJheSIsImlzQXJyYXkiLCJoYXNPd25Qcm9wZXJ0eSIsInBhcmVudElkIiwicHVzaCIsImluY2x1ZGVzIiwiY2xhc3NlcyIsImRpc2FibGVkIiwiZXJyb3IiLCJjaGVja2JveCIsInNlYXJjaGFibGUiLCJkaXNwbGF5QXNDaGlwIiwidHlwZSIsInRyYW5zbGF0aW9ucyIsInBhcmVudEl0ZW1TZWxlY3RhYmxlIiwiaWNvbiIsInBhcmVudEljb24iLCJob3Zlckljb24iLCJjaGVja2VkSWNvbiIsInBsYWNlaG9sZGVyIiwic3RhdGljUG9zaXRpb24iLCJzZWxlY3RlZElkTGlzdCIsIl9zdWdnZXN0aW9ucyIsIm9uZV9pdGVtX3NlbGVjdGVkIiwicmVwbGFjZSIsIm5faXRlbXNfc2VsZWN0ZWQiLCJhbGwiLCJmaW5kIiwibyIsImxhYmVsIiwib3B0aW9uU2VsZWN0ZWQiLCJjaGlwRmlsdGVyIiwicG9wcGVyQ2xhc3MiLCJwb3BwZXJDbG9zZSIsImFsbFNlbGVjdGVkIiwicG9wcGVyU3R5bGUiLCJjb250YWluZXJXaWR0aCIsImNvbnRlbnQiLCJ0cmFuc2Zvcm1PcmlnaW4iLCJzZWFyY2giLCJzZWFyY2hGaWVsZCIsImVsIiwiaGFuZGxlS2V5RG93blNlYXJjaCIsImhhbmRsZUtleURvd24iLCJvdmVybGF5Iiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwic2VsZWN0SW5wdXRFbGVtZW50IiwiUHVyZUNvbXBvbmVudCIsInByb3BUeXBlcyIsImJvb2wiLCJub2RlIiwib2JqZWN0IiwiaGFzQWxsIiwiaWNvbkFsbCIsIm9uZU9mVHlwZSIsInN0cmluZyIsIm11bHRpcGxlIiwibmFtZSIsImlzUmVxdWlyZWQiLCJvbkNoYW5nZSIsImZ1bmMiLCJvbkNsb3NlIiwiYXJyYXkiLCJvbmVPZiIsIm51bWJlciIsImRlZmF1bHRQcm9wcyIsImhlaWdodCIsIm5vX3Jlc3VsdF9tYXRjaCIsIm5fY2hpbGRyZW4iLCJvbmVfY2hpbGQiLCJzbGljZSIsIm9uQ2xpY2siLCJzZXRUaW1lb3V0IiwiZm9jdXMiLCJmb2N1c09uU2VsZWN0ZWRJdGVtIiwiaXRlbVNlbGVjdGVkIiwicXVlcnlTZWxlY3RvciIsInBhcmVudEVsZW1lbnQiLCJ0YWdOYW1lIiwiaXRlbXMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsIml0ZW1Ub0ZvY3VzIiwibmV4dEl0ZW0iLCJldmVudCIsImtleSIsImRvY3VtZW50IiwiYWN0aXZlRWxlbWVudCIsImNvbnRhaW5zIiwidGFyZ2V0IiwiaGlTZWxlY3RlZCIsInZhbHVlTGlzdCIsIk9iamVjdCIsImtleXMiLCJmaWx0ZXIiLCJzcGxpY2UiLCJtYXAiLCJwYXJlbnRJdGVtSWQiLCJpZHNJblN1Z2dlc3Rpb25zIiwic3VnZ2VzdGlvbiIsImFsbENoaWxkcmVuU3VnZ2VzdGlvbnNTZWxlY3RlZCIsImNvbmNhdCIsImNlbnRlcmVkIiwiYWxsSXRlbSIsInVuc2hpZnQiLCJldnQiLCJzdG9wUHJvcGFnYXRpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztrUUFBQTs7QUFFQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUNBOztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7OztBQUVPLElBQU1BLDBCQUFTLFNBQVRBLE1BQVM7QUFBQSxXQUFVO0FBQzVCQyxjQUFNO0FBQ0ZDLDZCQUFpQkMsTUFBTUMsT0FBTixDQUFjQyxXQUQ3QjtBQUVGQyxzQkFBVSxHQUZSO0FBR0ZDLG1CQUFPLE1BSEw7QUFJRkMsc0JBQVU7QUFKUixTQURzQjtBQU81QkMsZ0JBQVE7QUFDSkYsbUJBQU8sTUFESDtBQUVKRyxvQkFBUTtBQUZKLFNBUG9CO0FBVzVCQyxlQUFPO0FBQ0hDLDBCQUFjLFNBRFg7QUFFSEMsdUJBQVcsR0FGUjtBQUdIQyx3QkFBWTtBQUhULFNBWHFCO0FBZ0I1QkMsbUJBQVc7QUFDUEMseUJBQWE7QUFETixTQWhCaUI7QUFtQjVCQztBQUNJQyx3QkFBWSxRQURoQjtBQUVJQyxzQkFBVSxRQUZkO0FBR0lDLDBCQUFjLFVBSGxCO0FBSUlDLDBCQUFjO0FBSmxCLFdBS09sQixNQUFNbUIsVUFBTixDQUFpQkMs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QUFDQSxlQUFLaEosS0FBTCxDQUFXa0csUUFBWCxDQUFvQixPQUFLbEcsS0FBTCxDQUFXZ0csSUFBL0IsRUFBcUMsRUFBckM7QUFDSCxLOzs7a0JBMEtVLHdCQUFXMUgsTUFBWCxFQUFtQixFQUFFMEgsTUFBTSxjQUFSLEVBQW5CLEVBQTZDakcsUUFBN0MsQyIsImZpbGUiOiJIaVNlbGVjdC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9tZmF6aW8vZGV2L3Byb2plY3RzL2hpcGF5LW1hdGVyaWFsLXVpIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGluaGVyaXRlZENvbXBvbmVudCBJbnB1dFxuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IEdyb3cgZnJvbSAnbWF0ZXJpYWwtdWkvdHJhbnNpdGlvbnMvR3Jvdyc7XG5pbXBvcnQgeyBmaW5kRE9NTm9kZSB9IGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgUGFwZXIgZnJvbSAnbWF0ZXJpYWwtdWkvUGFwZXInO1xuaW1wb3J0IENsaWNrQXdheUxpc3RlbmVyIGZyb20gJ21hdGVyaWFsLXVpL3V0aWxzL0NsaWNrQXdheUxpc3RlbmVyJztcbmltcG9ydCB7IE1hbmFnZXIsIFRhcmdldCwgUG9wcGVyIH0gZnJvbSAncmVhY3QtcG9wcGVyJztcbmltcG9ydCB7IENoZWNrYm94QmxhbmtPdXRsaW5lLCBDaGVja2JveE1hcmtlZCB9IGZyb20gJ21kaS1tYXRlcmlhbC11aSc7XG5pbXBvcnQgSGlTZWxlY3RhYmxlTGlzdCBmcm9tICcuLi9IaVNlbGVjdGFibGVMaXN0JztcbmltcG9ydCB7IEhpU2VhcmNoRmllbGQgfSBmcm9tICcuLi9IaUZvcm0nO1xuaW1wb3J0IFNlbGVjdElucHV0IGZyb20gJy4vU2VsZWN0SW5wdXQnO1xuaW1wb3J0IEhpQ2hpcCBmcm9tICcuLi9IaUNoaXAvSGlDaGlwJztcbmltcG9ydCB7IHdpdGhTdHlsZXMgfSBmcm9tICcuLi9zdHlsZXMnO1xuaW1wb3J0IHsgYXJyYXlVbmlxdWUsIGdldE5leHRJdGVtU2VsZWN0YWJsZSB9IGZyb20gJy4uL3V0aWxzL2hpSGVscGVycyc7XG5pbXBvcnQgSGlJY29uQnVpbGRlciBmcm9tICcuLi91dGlscy9IaUljb25CdWlsZGVyJztcblxuZXhwb3J0IGNvbnN0IHN0eWxlcyA9IHRoZW1lID0+ICh7XG4gICAgcm9vdDoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnBhbGV0dGUuYmFja2dyb3VuZDIsXG4gICAgICAgIG1heFdpZHRoOiA1MDAsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIH0sXG4gICAgcG9wcGVyOiB7XG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIHpJbmRleDogMTIwMCxcbiAgICB9LFxuICAgIHBhcGVyOiB7XG4gICAgICAgIGJvcmRlclJhZGl1czogJzBweCAycHgnLFxuICAgICAgICBtYXhIZWlnaHQ6IDQ0MCxcbiAgICAgICAgdHJhbnNpdGlvbjogJ25vbmUgIWltcG9ydGFudCcsXG4gICAgfSxcbiAgICBsYWJlbEljb246IHtcbiAgICAgICAgbWFyZ2luUmlnaHQ6IDEwLFxuICAgIH0sXG4gICAgc2VsZWN0SWNvbkxhYmVsOiB7XG4gICAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgICAgICAgcGFkZGluZ1JpZ2h0OiAxNixcbiAgICAgICAgLi4udGhlbWUudHlwb2dyYXBoeS5ib2R5MSxcbiAgICAgICAgZGlzcGxheTogJ2lubGluZS1mbGV4JyxcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICB9LFxufSk7XG5cbi8qKlxuICpcbiAqIFV0aWxpc8OpIHBvdXIgdG91cyB0eXBlcyBkZSBzZWxlY3RzIGRhbnMgbGVzIGZvcm11bGFpcmVzLlxuICogLSBzaW5nbGUgLyBtdWx0aXBsZSAoIG11bHRpLXNlbGVjdCApXG4gKiAtIGF2ZWMgLyBzYW5zIGNoZWNrYm94ZXNcbiAqIC0gYXZlYyAvIHNhbnMgYmFycmUgZGUgcmVjaGVyY2hlXG4gKiAtIGF2ZWMgLyBzYW5zIG9wdGlvbiBcIkFsbFwiXG4gKiAtIHByaXNlIGVuIGNvbXB0ZSBkdSB0eXBlIGRlcyDDqWzDqW1lbnRzICh0ZXh0LCBpbWFnZSwgaWNvbiwgLi4uKVxuICpcbiAqIENlIGNvbXBvc2FudCByw6l1bmkgbGVzIHNvdXMtY29tcG9zYW50c1xuICogLSBTZWxlY3RJbnB1dCA6IGFmZmljaGUgbCfDqWzDqW1lbnQgZGFucyBsZSBmb3JtdWxhaXJlXG4gKiAtIEhpU2VhcmNoRmllbGQgOiBpbnTDqGdyZSB1bmUgYmFycmUgZGUgcmVjaGVyY2hlIGRhbnMgbGUgUG9wcGVyLFxuICogaWwgZmlsdHJlIGxhIGxpc3RlIGRlcyBzdWdnZXN0aW9uc1xuICogLSBIaVNlbGVjdGFibGVMaXN0IDogYWZmaWNoZSBsYSBsaXN0ZSBkZXMgc3VnZ2VzdGlvbnMgc2Vsb24gbGUgdHlwZSBkZXMgw6lsw6ltZW50c1xuICovXG5jbGFzcyBIaVNlbGVjdCBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQge1xuICAgIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBZmZpY2hlIHVuZSBjaGVja2JveCBwb3VyIGNoYXF1ZSDDqWzDqW1lbnRzLCBwYXIgZMOpZmF1dCBzaSBvcHRpb25zIGVzdCBuZXN0ZWRcbiAgICAgICAgICovXG4gICAgICAgIGNoZWNrYm94OiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEljb24gYWZmaWNow6kgbG9yc3F1ZSBsJ2l0ZW0gZXN0IHPDqWxlY3Rpb25uw6lcbiAgICAgICAgICovXG4gICAgICAgIGNoZWNrZWRJY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVzZWZ1bCB0byBleHRlbmQgdGhlIHN0eWxlIGFwcGxpZWQgdG8gY29tcG9uZW50cy5cbiAgICAgICAgICovXG4gICAgICAgIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbmFjdGlmXG4gICAgICAgICAqL1xuICAgICAgICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBPcHRpb24gcGVybWV0dGFudCBkJ2FmZmljaGVyIGxlcyBzw6lsZWN0aW9uIHNvdXMgZm9ybWUgZGUgQ2hpcC5cbiAgICAgICAgICovXG4gICAgICAgIGRpc3BsYXlBc0NoaXA6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogQXBwbGlxdWUgbGUgc3R5bGUgZXJyb3JcbiAgICAgICAgICovXG4gICAgICAgIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFmZmljaGUgbCfDqWzDqW1lbnQgJ0FsbCdcbiAgICAgICAgICovXG4gICAgICAgIGhhc0FsbDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMZXMgaXRlbXMgc29udCBoacOpcmFyY2hpc8Opc1xuICAgICAgICAgKi9cbiAgICAgICAgaGllcmFyY2hpYzogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJY29uIGFmZmljaMOpIGxvcnNxdWUgbCdpdGVtIG4nZXN0IHBhcyBzw6lsZWN0aW9ubsOpIGV0IHF1J29uIGxlIHN1cnZvbGVcbiAgICAgICAgICovXG4gICAgICAgIGhvdmVySWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJY29uIGFmZmljaMOpIGxvcnNxdWUgbCdpdGVtIG4nZXN0IHBhcyBzw6lsZWN0aW9ubsOpXG4gICAgICAgICAqL1xuICAgICAgICBpY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE5vbSBkZSBsJ2ljw7RuZVxuICAgICAgICAgKi9cbiAgICAgICAgaWNvbkFsbDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmJvb2xdKSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIGlkIGR1IHNlbGVjdFxuICAgICAgICAgKi9cbiAgICAgICAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBdXRvcmlzZSBsYSBzw6lsZWN0aW9uIGRlIHBsdXNpZXVycyB2YWxldXJzXG4gICAgICAgICAqL1xuICAgICAgICBtdWx0aXBsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBOb20gZHUgY2hhbXAgZGUgZm9ybXVsYWlyZVxuICAgICAgICAgKi9cbiAgICAgICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgICAvKipcbiAgICAgICAgICogRm9uY3Rpb24gZGUgY2FsbGJhY2sgcXVpIHJlbnZvaXQgbGEvbGVzIHZhbGV1cnMgc8OpbGVjdGlvbm7DqWVzXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBldmVudFxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZyB8fCBhcnJheX0gdmFsdWVcbiAgICAgICAgICovXG4gICAgICAgIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgICAvKipcbiAgICAgICAgICogRm9uY3Rpb24gZGUgY2FsbGJhY2sgYXBwZWzDqWUgbG9yc3F1J29uIGZlcm1lIGxlIHNlbGVjdFxuICAgICAgICAgKi9cbiAgICAgICAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayBhcHBlbMOpZSBsb3JzcXUnb24gc3Vydm9sZSBsZSBjaGFtcHNcbiAgICAgICAgICovXG4gICAgICAgIG9uTW91c2VFbnRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayBhcHBlbMOpZSBsb3JzcXVlIGxlIGN1cnNldXIgcXVpdHRlIGxlIGNoYW1wc1xuICAgICAgICAgKi9cbiAgICAgICAgb25Nb3VzZUxlYXZlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIGFwcGVsw6llIGxvcnNxdSdvbiDDqWNyaXQgZGFucyBsYSBiYXJyZSBkZSByZWNoZXJjaGVcbiAgICAgICAgICogQSB1dGlsaXNlciBwb3VyIGxlcyBzZWxlY3RzIGF2ZWMgZGVzIGRvbm7DqWVzIGR5bmFtaXF1ZXNcbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHtvYmplY3R9IGV2ZW50XG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICAgICAgICAgKi9cbiAgICAgICAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICAvKipcbiAgICAgICAgICogTGlzdGVzIGRlcyBvcHRpb25zIGR1IHNlbGVjdFxuICAgICAgICAgKi9cbiAgICAgICAgb3B0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJY29uIGFmZmljaMOpIGxvcnNxdSd1biBpdGVtIHBhcmVudCBuJ2VzdCBwYXMgc8OpbGVjdGlvbm7DqVxuICAgICAgICAgKi9cbiAgICAgICAgcGFyZW50SWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMZXMgaXRlbXMgcGFyZW50cyBzb250IHPDqWxlY3Rpb25uYWJsZXNcbiAgICAgICAgICovXG4gICAgICAgIHBhcmVudEl0ZW1TZWxlY3RhYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEl0ZW0gw6lwaW5nbMOpIGVuIGTDqWJ1dCBkZSBsaXN0ZVxuICAgICAgICAgKi9cbiAgICAgICAgcGlubmVkSXRlbTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFBsYWNlaG9sZGVyIGFmZmljaMOpIGxvcnNxdWUgbGUgc2VsZWN0IGVzdCBmZXJtw6lcbiAgICAgICAgICogU3VyY2hhcmdlIGxlIHBsYWNlaG9sZGVyIHBhciBkw6lmYXV0XG4gICAgICAgICAqL1xuICAgICAgICBwbGFjZWhvbGRlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFmZmljaGUgdW4gaW5wdXQgZGUgcmVjaGVyY2hlIHBlcm1ldHRhbnQgZGUgZmlsdHJlciBsZXMgb3B0aW9uc1xuICAgICAgICAgKi9cbiAgICAgICAgc2VhcmNoYWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTaSB0cnVlLCBsZSBjb250ZW51IGR1IHNlbGVjdCBzZXJhIGRhbnMgdW5lIGRpdiBzdGF0aWMgcGx1dG90IHF1ZSBkYW5zIHVuZSBwb3BwZXIgYWJzb2x1dGVcbiAgICAgICAgICovXG4gICAgICAgIHN0YXRpY1Bvc2l0aW9uOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRyYWR1Y3Rpb25zIChwYXIgZMOpZmF1dCBlbiBhbmdsYWlzKVxuICAgICAgICAgKi9cbiAgICAgICAgdHJhbnNsYXRpb25zOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgICAvKipcbiAgICAgICAgICogVHlwZSBkZXMgw6lsw6ltZW50cyBkdSBzZWxlY3QsIGTDqWZpbml0IGxlIHJlbmR1IGQndW4gw6lsw6ltZW50XG4gICAgICAgICAqL1xuICAgICAgICB0eXBlOiBQcm9wVHlwZXMub25lT2YoWydpY29uJywgJ3RleHQnLCAnaW1hZ2UnLCAncHJpbWFyeS1oaWdobGlnaHQnXSksXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBWYWx1ZShzKSBkdSBzZWxlY3RcbiAgICAgICAgICovXG4gICAgICAgIHZhbHVlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuYXJyYXldKSxcbiAgICB9O1xuXG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICBlcnJvcjogZmFsc2UsXG4gICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICBjaGVja2JveDogZmFsc2UsXG4gICAgICAgIHNlYXJjaGFibGU6IGZhbHNlLFxuICAgICAgICBoYXNBbGw6IGZhbHNlLFxuICAgICAgICBpY29uQWxsOiBmYWxzZSxcbiAgICAgICAgaGllcmFyY2hpYzogZmFsc2UsXG4gICAgICAgIHBhcmVudEl0ZW1TZWxlY3RhYmxlOiBmYWxzZSxcbiAgICAgICAgZGlzcGxheUFzQ2hpcDogZmFsc2UsXG4gICAgICAgIGljb246IDxDaGVja2JveEJsYW5rT3V0bGluZSBzdHlsZT17eyB3aWR0aDogMjAsIGhlaWdodDogMjAgfX0gLz4sXG4gICAgICAgIHBhcmVudEljb246IDxDaGVja2JveEJsYW5rT3V0bGluZSBzdHlsZT17eyB3aWR0aDogMjAsIGhlaWdodDogMjAgfX0gLz4sXG4gICAgICAgIGhvdmVySWNvbjogPENoZWNrYm94QmxhbmtPdXRsaW5lIHN0eWxlPXt7IHdpZHRoOiAyMCwgaGVpZ2h0OiAyMCB9fSAvPixcbiAgICAgICAgY2hlY2tlZEljb246IDxDaGVja2JveE1hcmtlZCBzdHlsZT17eyB3aWR0aDogMjAsIGhlaWdodDogMjAgfX0gLz4sXG4gICAgICAgIHRyYW5zbGF0aW9uczoge1xuICAgICAgICAgICAgYWxsOiAnQWxsJyxcbiAgICAgICAgICAgIG5vX3Jlc3VsdF9tYXRjaDogJ05vIHJlc3VsdCBtYXRjaCcsXG4gICAgICAgICAgICBzZWFyY2g6ICdTZWFyY2gnLFxuICAgICAgICAgICAgbl9pdGVtc19zZWxlY3RlZDogJyVzIGl0ZW1zIHNlbGVjdGVkJyxcbiAgICAgICAgICAgIG9uZV9pdGVtX3NlbGVjdGVkOiAnJXMgaXRlbSBzZWxlY3RlZCcsXG4gICAgICAgICAgICBuX2NoaWxkcmVuOiAnJXMgaXRlbXMnLFxuICAgICAgICAgICAgb25lX2NoaWxkOiAnJXMgaXRlbScsXG4gICAgICAgIH0sXG4gICAgICAgIHN0YXRpY1Bvc2l0aW9uOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBvcGVuOiBmYWxzZSxcbiAgICAgICAgICAgIGZvY3VzZWQ6IGZhbHNlLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6IFtdLFxuICAgICAgICAgICAgaGllcmFyY2h5U2VsZWN0ZWQ6IHt9LFxuICAgICAgICAgICAgaGllcmFyY2h5OiB7fSxcbiAgICAgICAgICAgIG5iT3B0aW9uczogMCxcbiAgICAgICAgICAgIGR5bmFtaWM6IGZhbHNlLFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIENoZWNrIGlmIHZhbHVlIGlzIGluIG9wdGlvbnNcbiAgICAgICAgbGV0IHZhbHVlSW5PcHRpb25zID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHZhbCA9IHByb3BzLnZhbHVlO1xuICAgICAgICAvLyBObyBvcHRpb25zIHByb3ZpZGVkLlxuICAgICAgICBpZiAoIXByb3BzLm9wdGlvbnMubGVuZ3RoIHx8ICF2YWwgfHwgIXZhbC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHZhbHVlSW5PcHRpb25zID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIGFuIG9wdGlvbiBtYXRjaCB2YWx1ZSBwcm9wLlxuICAgICAgICAgICAgcHJvcHMub3B0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdmFsdWVJbk9wdGlvbnMgJiYgdmFsLmluZGV4T2YoaXRlbS5pZCkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlSW5PcHRpb25zID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICghdmFsdWVJbk9wdGlvbnMgJiYgcHJvcHMucGlubmVkSXRlbSl7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLnZhbHVlLmluZGV4T2YocHJvcHMucGlubmVkSXRlbS5pZCk+PTApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVJbk9wdGlvbnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdmFsdWVJbk9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncHJvcCB2YWx1ZSBwcm92aWRlZCBkb2VzIG5vdCBtYXRjaCBhbnkgb3B0aW9uLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3BzLmhpZXJhcmNoaWMgPT09IHRydWUgJiYgcHJvcHMub3B0aW9ucy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBjb25zdCBoaWVyYXJjaHlUcmVlcyA9IHRoaXMuYnVpbGRIaWVyYXJjaHlUcmVlcyhwcm9wcyk7XG5cbiAgICAgICAgICAgIHRoaXMuc3RhdGUuaGllcmFyY2h5ID0gaGllcmFyY2h5VHJlZXMuaGllcmFyY2h5O1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5oaWVyYXJjaHlTZWxlY3RlZCA9IGhpZXJhcmNoeVRyZWVzLmhpZXJhcmNoeVNlbGVjdGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHByb3BzLm9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLy8gR2V0IHJlYWwgb3B0aW9ucyBudW1iZXIgKHBhcmVudCAmIF9hbGwgYXJlIG5vdCByZWFsIG9wdGlvbnMpXG4gICAgICAgICAgICBsZXQgb3B0aW9uc0xlbmd0aCA9IDA7XG4gICAgICAgICAgICBwcm9wcy5vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9uLmhhc0NoaWxkcmVuICE9PSB0cnVlICYmIG9wdGlvbi5pZCAhPT0gJ19hbGwnKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnNMZW5ndGgrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUubmJPcHRpb25zID0gb3B0aW9uc0xlbmd0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUuZHluYW1pYyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhhbmRsZVNlbGVjdCA9IHRoaXMuaGFuZGxlU2VsZWN0LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2xpY2sgPSB0aGlzLmhhbmRsZUNsaWNrLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2xvc2UgPSB0aGlzLmhhbmRsZUNsb3NlLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2xpY2tBd2F5ID0gdGhpcy5oYW5kbGVDbGlja0F3YXkuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVSZXF1ZXN0RGVsZXRlID0gdGhpcy5oYW5kbGVSZXF1ZXN0RGVsZXRlLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlU3VnZ2VzdGlvbnMgPSB0aGlzLmhhbmRsZVN1Z2dlc3Rpb25zLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlRm9jdXMgPSB0aGlzLmhhbmRsZUZvY3VzLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlQmx1ciA9IHRoaXMuaGFuZGxlQmx1ci5iaW5kKHRoaXMpO1xuICAgIH1cblxuICAgIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHR5cGVvZiB0aGlzLnByb3BzLm9uU2VhcmNoICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgICAgdGhpcy5wcm9wcy5vcHRpb25zICYmXG4gICAgICAgICAgICB0aGlzLnByb3BzLm9wdGlvbnMubGVuZ3RoID4gMFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlU3VnZ2VzdGlvbnMobmV4dFByb3BzLm9wdGlvbnMpO1xuICAgICAgICAgICAgbGV0IG9wdGlvbnNMZW5ndGggPSAwO1xuICAgICAgICAgICAgbmV4dFByb3BzLm9wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb24uaGFzQ2hpbGRyZW4gIT09IHRydWUgJiYgb3B0aW9uLmlkICE9PSAnX2FsbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uc0xlbmd0aCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IG5iT3B0aW9uczogb3B0aW9uc0xlbmd0aCB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXh0UHJvcHMuaGllcmFyY2hpYyA9PT0gdHJ1ZSAmJiBuZXh0UHJvcHMub3B0aW9ucy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICBjb25zdCBoaWVyYXJjaHlUcmVlcyA9IHRoaXMuYnVpbGRIaWVyYXJjaHlUcmVlcyhuZXh0UHJvcHMpO1xuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGhpZXJhcmNoeTogaGllcmFyY2h5VHJlZXMuaGllcmFyY2h5LCBoaWVyYXJjaHlTZWxlY3RlZDogaGllcmFyY2h5VHJlZXMuaGllcmFyY2h5U2VsZWN0ZWQgfSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJ1aWxkSGllcmFyY2h5VHJlZXMocHJvcHMpIHtcbiAgICAgICAgLy8gQ29uc3RydWN0IHR3byBhc3NvY2lhdGl2ZSBhcnJheXNcbiAgICAgICAgLy8gaGllcmFyY2h5W3BhcmVudElkXSA9PiBjaGlsZHJlblxuICAgICAgICAvLyBoaWVyYXJjaHlTZWxlY3RlZFtwYXJlbnRJZF0gPT4gc2VsZWN0ZWQgY2hpbGRyZW5cbiAgICAgICAgY29uc3QgaGllcmFyY2h5ID0ge307XG4gICAgICAgIGNvbnN0IGhpZXJhcmNoeVNlbGVjdGVkID0ge307XG4gICAgICAgIGxldCB2YWx1ZSA9IHByb3BzLnZhbHVlIHx8IFtdO1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSB2YWx1ZSA9IFtwcm9wcy52YWx1ZV07XG4gICAgICAgIHByb3BzLm9wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgICAgICAgaWYgKG9wdGlvbi5oYXNDaGlsZHJlbiA9PT0gdHJ1ZSAmJiAhaGllcmFyY2h5Lmhhc093blByb3BlcnR5KG9wdGlvbi5pZCkpIHtcbiAgICAgICAgICAgICAgICBoaWVyYXJjaHlbb3B0aW9uLmlkXSA9IFtdO1xuICAgICAgICAgICAgICAgIGhpZXJhcmNoeVNlbGVjdGVkW29wdGlvbi5pZF0gPSBbXTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9uLmhhc093blByb3BlcnR5KCdwYXJlbnRJZCcpKSB7XG4gICAgICAgICAgICAgICAgaGllcmFyY2h5W29wdGlvbi5wYXJlbnRJZF0ucHVzaChvcHRpb24uaWQpO1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pbmNsdWRlcyhvcHRpb24uaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGhpZXJhcmNoeVNlbGVjdGVkW29wdGlvbi5wYXJlbnRJZF0ucHVzaChvcHRpb24uaWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7IGhpZXJhcmNoeSwgaGllcmFyY2h5U2VsZWN0ZWQgfTtcbiAgICB9XG5cbiAgICBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGUub3Blbikge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVDbG9zZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnByb3BzLnN0YXRpY1Bvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgLy9kb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtvcGVuOiB0cnVlfSk7XG4gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5wcm9wcy5vcHRpb25zLnNsaWNlKCk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVN1Z2dlc3Rpb25zKG9wdGlvbnMpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNsaWNrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNsaWNrKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEdlc3Rpb24gZHUgZm9jdXNcbiAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaEZpZWxkKSB7XG4gICAgICAgICAgICAgICAgLy8gc2kgc2VhcmNoYWJsZSwgZm9jdXMgc3VyIGxlIGNoYW1wcyBkZSByZWNoZXJjaGVcbiAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2hGaWVsZCA9IHRoaXMuc2VhcmNoRmllbGQ7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEZpZWxkLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfSwgMSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3ZlcmxheSkge1xuICAgICAgICAgICAgICAgIC8vIHNpbm9uIGZvY3VzIHN1ciBsZSBkZXJuaWVyIMOpbMOpbWVudCBzZWxlY3Rpb25uw6lcbiAgICAgICAgICAgICAgICB0aGlzLmZvY3VzT25TZWxlY3RlZEl0ZW0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBmb2N1c09uU2VsZWN0ZWRJdGVtID0gKCkgPT4ge1xuICAgICAgICAvLyBPbiByw6ljdXDDqHJlIGxhIGRpdiBwYXJlbnQgXCJvdmVybGF5XCJcbiAgICAgICAgY29uc3Qgb3ZlcmxheSA9IGZpbmRET01Ob2RlKHRoaXMub3ZlcmxheSk7XG4gICAgICAgIGNvbnN0IG11bHRpcGxlID0gdGhpcy5wcm9wcy5tdWx0aXBsZTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnByb3BzLnZhbHVlO1xuICAgICAgICBjb25zdCBzZWxlY3RlZElkTGlzdCA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGxldCBmb2N1c2VkID0gZmFsc2U7XG4gICAgICAgICAgICAvLyBTaSB1biBvdSBwbHVzaWV1cnMgaXRlbXMgc29udCBzZWxlY3Rpb25uw6lzLCBvbiBmb2N1cyBzdXIgbGUgZGVybmllclxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSWRMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtU2VsZWN0ZWQgPSBvdmVybGF5LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAgICAgICAgIGBbZGF0YS1pZD1cIiR7c2VsZWN0ZWRJZExpc3Rbc2VsZWN0ZWRJZExpc3QubGVuZ3RoIC0gMV19XCJdYCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtU2VsZWN0ZWQgJiYgaXRlbVNlbGVjdGVkLnBhcmVudEVsZW1lbnQudGFnTmFtZSA9PT0gJ0xJJykge1xuICAgICAgICAgICAgICAgICAgICBpdGVtU2VsZWN0ZWQucGFyZW50RWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICBmb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBTaSBwYXMgZCdpdGVtIHNlbGVjdGlvbm7DqSwgb3UgcGFzIHZpc2libGUgKGVuIGNhcyBkZSByZWNoZXJjaGUpLCBmb2N1cyBzdXIgbGUgcHJlbWllclxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSWRMaXN0Lmxlbmd0aCA9PT0gMCB8fCAhZm9jdXNlZCkge1xuICAgICAgICAgICAgICAgIC8vIE9uIHJlY3Vww6hyZSB0b3VzIGxlcyBpdGVtc1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gb3ZlcmxheS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbGknKTtcbiAgICAgICAgICAgICAgICBsZXQgaXRlbVRvRm9jdXMgPSBpdGVtc1swXTtcbiAgICAgICAgICAgICAgICAvLyBTaSBzZWxlY3QgbXVsdGlwbGUsIGV0IHF1J2F1IG1vaW5zIHVuIHNlbGVjdGlvbm7DqSwgZm9jdXMgc3VyIGxlIDJlIGl0ZW1cbiAgICAgICAgICAgICAgICBpZiAobXVsdGlwbGUgJiYgc2VsZWN0ZWRJZExpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtVG9Gb2N1cyA9IGl0ZW1zWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXRlbVRvRm9jdXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbVRvRm9jdXMuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDEpO1xuICAgIH07XG5cbiAgICAvLyBLZXkgZG93biBvbiBsaXN0IGl0ZW1zXG4gICAgaGFuZGxlS2V5RG93biA9IGV2ZW50ID0+IHtcbiAgICAgICAgbGV0IG5leHRJdGVtO1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgICAgbmV4dEl0ZW0gPSBnZXROZXh0SXRlbVNlbGVjdGFibGUoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCwgJ2Rvd24nKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgICAgICAgbmV4dEl0ZW0gPSBnZXROZXh0SXRlbVNlbGVjdGFibGUoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCwgJ3VwJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnVGFiJykge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnByb3BzLnN0YXRpY1Bvc2l0aW9uKSB7XG4gICAgICAgICAgICAgICAgLy9kb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IG9wZW46IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXh0SXRlbSkge1xuICAgICAgICAgICAgbmV4dEl0ZW0uZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBLZXkgZG93biBvbiBzZWFyY2ggaW5wdXRcbiAgICBoYW5kbGVLZXlEb3duU2VhcmNoID0gZXZlbnQgPT4ge1xuICAgICAgICBpZiAodGhpcy5vdmVybGF5ICYmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c09uU2VsZWN0ZWRJdGVtKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgaGFuZGxlRm9jdXMgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBmb2N1c2VkOiB0cnVlIH0pO1xuICAgIH07XG5cbiAgICBoYW5kbGVCbHVyID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgZm9jdXNlZDogZmFsc2UgfSk7XG4gICAgfTtcblxuICAgIGhhbmRsZUNsb3NlID0gKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMucHJvcHMuc3RhdGljUG9zaXRpb24pIHtcbiAgICAgICAgICAgIC8vZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIG9wZW46IGZhbHNlLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNsb3NlKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zZWxlY3RJbnB1dEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SW5wdXRFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgaGFuZGxlQ2xpY2tBd2F5ID0gKGV2ZW50KSA9PiB7XG4gICAgICAgIC8vIEF1IGNsaWMgc3VyIGxlIGJvdXRvbiwgb24gbGFpc3NlIGxlIGhhbmRsZUNsaWNrIGZlcm1lciBsZSBzZWxlY3RcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdElucHV0RWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNsb3NlKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDYWxsIG9uQ2hhbmdlIHdpdGggdGhlIHVwZGF0ZWQgdmFsdWVcbiAgICAgKlxuICAgICAqIC0gaGFuZGxlIHNpbmdsZSB2YWx1ZVxuICAgICAqIC0gaGFuZGxlIG11bHRpcGxlIHZhbHVlXG4gICAgICogLSBoYW5kbGUgJ19hbGwnIGlkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXZlbnRcbiAgICAgKiBAcGFyYW0gaXRlbVxuICAgICAqL1xuICAgIGhhbmRsZVNlbGVjdCA9IChldmVudCwgaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCB7IG11bHRpcGxlLCB2YWx1ZSwgb25DaGFuZ2UsIG9wdGlvbnMsIGhpZXJhcmNoaWMsIHBpbm5lZEl0ZW0gfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGNvbnN0IHsgaGllcmFyY2h5U2VsZWN0ZWQsIGhpZXJhcmNoeSwgbmJPcHRpb25zIH0gPSB0aGlzLnN0YXRlO1xuICAgICAgICBjb25zdCBoaVNlbGVjdGVkID0geyAuLi5oaWVyYXJjaHlTZWxlY3RlZCB9O1xuXG4gICAgICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgICAgICAgbGV0IHZhbHVlTGlzdCA9IHZhbHVlO1xuICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09ICdfYWxsJykge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZUxpc3QubGVuZ3RoID09PSBuYk9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVMaXN0ID0gW107XG4gICAgICAgICAgICAgICAgICAgIGlmIChoaWVyYXJjaGljKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBoaWVyYXJjaGljIHNlbGVjdCA9PiBlbXB0eSBhc3NvY2lhdGl2ZSBhcnJheSBvZiBzZWxlY3RlZCBjaGlsZHJlblxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoaGlTZWxlY3RlZCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpU2VsZWN0ZWRba2V5XSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uaGFzQ2hpbGRyZW4gIT09IHRydWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhdmFsdWVMaXN0LmluY2x1ZGVzKG9wdGlvbi5pZCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uaWQgIT09ICdfYWxsJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVMaXN0LnB1c2gob3B0aW9uLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9uLmhhc0NoaWxkcmVuID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgaGllcmFyY2hpYyBzZWxlY3QgPT4gZmlsbCBhc3NvY2lhdGl2ZSBhcnJheSBvZiBzZWxlY3RlZCBjaGlsZHJlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpU2VsZWN0ZWRbb3B0aW9uLmlkXSA9IGhpZXJhcmNoeVtvcHRpb24uaWRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgIHZhbHVlTGlzdC5pbmNsdWRlcyhpdGVtLmlkKSB8fFxuICAgICAgICAgICAgICAgIChpdGVtLmhhc0NoaWxkcmVuID09PSB0cnVlICYmXG4gICAgICAgICAgICAgICAgICAgIGhpZXJhcmNoeVNlbGVjdGVkW2l0ZW0uaWRdLmxlbmd0aCA9PT0gaGllcmFyY2h5W2l0ZW0uaWRdLmxlbmd0aClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIC8vIGl0ZW0gZMOpasOgIHPDqWxlY3Rpb25uw6kgPT4gb24gbGUgZMOpc2VsZWN0aW9ubmVcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5oYXNDaGlsZHJlbiAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZUxpc3QgPSB2YWx1ZUxpc3QuZmlsdGVyKHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsICE9PSBpdGVtLmlkO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5oYXNDaGlsZHJlbiA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgYWxsIGNoaWxkcmVuXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlTGlzdCA9IHZhbHVlTGlzdC5maWx0ZXIodmFsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5zdGF0ZS5oaWVyYXJjaHlbaXRlbS5pZF0uaW5jbHVkZXModmFsKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGhpU2VsZWN0ZWRbaXRlbS5pZF0gPSBbXTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0uaGFzT3duUHJvcGVydHkoJ3BhcmVudElkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2kgaXRlbSBlc3QgdW4gZW5mYW50IG9uIGwnZW5sw6h2ZSBkdSB0YWJsZWF1IGFzc29jaWF0aWYgZGVzXG4gICAgICAgICAgICAgICAgICAgIC8vIGVsbXRzIHPDqWxlY3Rpb25uw6lzXG4gICAgICAgICAgICAgICAgICAgIGhpU2VsZWN0ZWRbaXRlbS5wYXJlbnRJZF0uc3BsaWNlKGhpU2VsZWN0ZWRbaXRlbS5wYXJlbnRJZF0uaW5kZXhPZihpdGVtLmlkKSwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAocGlubmVkSXRlbSAmJiBpdGVtLmlkID09PSBwaW5uZWRJdGVtLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGhpU2VsZWN0ZWQpLm1hcChwYXJlbnRJdGVtSWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGlTZWxlY3RlZFtwYXJlbnRJdGVtSWRdID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlTGlzdCA9IFtpdGVtLmlkXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBpdGVtIG5vbiBzw6lsZWN0aW9ubsOpID0+IG9uIGxlIHPDqWxlY3Rpb25uZVxuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5oYXNDaGlsZHJlbiAhPT0gdHJ1ZSkgdmFsdWVMaXN0LnB1c2goaXRlbS5pZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBpbm5lZEl0ZW0gJiYgdmFsdWVMaXN0LmluY2x1ZGVzKHBpbm5lZEl0ZW0uaWQpKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlTGlzdC5zcGxpY2UodmFsdWVMaXN0LmluZGV4T2YocGlubmVkSXRlbS5pZCksIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uaGFzQ2hpbGRyZW4gPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2kgaXRlbSBwYXJlbnQgPT4gb24gYWpvdXRlIHRvdXMgbGVzIGVuZmFudHNcbiAgICAgICAgICAgICAgICAgICAgLy8gT3Ugb24gbGVzIHN1cHByaW1lIHMnaWxzIHNvbnQgZMOpasOgIHRvdXMgc8OpbGVjdGlvbm7DqXMgKGRhbnMgdW5lIGxpc3RlIGZpbHRyw6llKVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBpZHNJblN1Z2dlc3Rpb25zID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuc3VnZ2VzdGlvbnMuZm9yRWFjaChzdWdnZXN0aW9uID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLmhpZXJhcmNoeVtpdGVtLmlkXS5pbmNsdWRlcyhzdWdnZXN0aW9uLmlkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkc0luU3VnZ2VzdGlvbnMucHVzaChzdWdnZXN0aW9uLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmKGhpZXJhcmNoeVNlbGVjdGVkW2l0ZW0uaWRdLmxlbmd0aCA+IDApIHt9XG4gICAgICAgICAgICAgICAgICAgIGxldCBhbGxDaGlsZHJlblN1Z2dlc3Rpb25zU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpZHNJblN1Z2dlc3Rpb25zLmZvckVhY2goaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoaWVyYXJjaHlTZWxlY3RlZFtpdGVtLmlkXS5pbmNsdWRlcyhpZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxDaGlsZHJlblN1Z2dlc3Rpb25zU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGFsbENoaWxkcmVuU3VnZ2VzdGlvbnNTZWxlY3RlZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gT24gc3VwcHJpbWUgbGVzIGVuZmFudHMgY2FyIGTDqWrDoCB0b3VzIHPDqWxlY3Rpb25uw6lzXG4gICAgICAgICAgICAgICAgICAgICAgICBpZHNJblN1Z2dlc3Rpb25zLmZvckVhY2goaWQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlTGlzdC5zcGxpY2UodmFsdWVMaXN0LmluZGV4T2YoaWQpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaVNlbGVjdGVkW2l0ZW0uaWRdLnNwbGljZShoaVNlbGVjdGVkW2l0ZW0uaWRdLmluZGV4T2YoaWQpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gT24gYWpvdXRlIHRvdXMgbGVzIGVuZmFudHMgZmlsdHLDqXMgYXUgw6lsw6ltZW50cyBzw6lsZWN0aW9ubsOpc1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVMaXN0ID0gYXJyYXlVbmlxdWUodmFsdWVMaXN0LmNvbmNhdChpZHNJblN1Z2dlc3Rpb25zKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoaVNlbGVjdGVkW2l0ZW0uaWRdID0gYXJyYXlVbmlxdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlTZWxlY3RlZFtpdGVtLmlkXS5jb25jYXQoaWRzSW5TdWdnZXN0aW9ucyksXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGhpZXJhcmNoeVNlbGVjdGVkOiBoaVNlbGVjdGVkIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS5oYXNPd25Qcm9wZXJ0eSgncGFyZW50SWQnKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBTaSBpdGVtIGVzdCB1biBlbmZhbnQgb24gbCdham91dGUgZHUgdGFibGVhdSBhc3NvY2lhdGlmIGRlc1xuICAgICAgICAgICAgICAgICAgICAvLyBlbG10cyBzw6lsZWN0aW9ubsOpc1xuICAgICAgICAgICAgICAgICAgICBoaVNlbGVjdGVkW2l0ZW0ucGFyZW50SWRdLnB1c2goaXRlbS5pZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGhpZXJhcmNoeVNlbGVjdGVkOiBoaVNlbGVjdGVkIH0pO1xuICAgICAgICAgICAgb25DaGFuZ2UoZXZlbnQsIHZhbHVlTGlzdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvbkNoYW5nZShldmVudCwgaXRlbS5pZCk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIHN1Z2dlc3Rpb25zIGxpc3RcbiAgICAgKiAtIGFkZCAnX25vX3Jlc3VsdCcgaXRlbSBpZiBzdWdnZXN0aW9uIGxpc3QgaXMgZW1wdHlcbiAgICAgKiAtIGFkZCAnX2FsbCcgaXRlbSBpZiBzdWdnZXN0aW9uIGxpc3QgaXMgY29tcGxldGVcbiAgICAgKiBAcGFyYW0gc3VnZ2VzdGlvbnNcbiAgICAgKi9cbiAgICBoYW5kbGVTdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zID0+IHtcbiAgICAgICAgY29uc3QgeyBvcHRpb25zLCBoYXNBbGwsIGljb25BbGwsIHRyYW5zbGF0aW9ucywgbXVsdGlwbGUgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgaWYgKHN1Z2dlc3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gSGFuZGxlIE5vIFJlc3VsdFxuICAgICAgICAgICAgLy8gRklYIHRvIHJlbW92ZSBhbGwgaXRlbVxuICAgICAgICAgICAgc3VnZ2VzdGlvbnMgPSBbXTtcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIGlkOiAnX25vX3Jlc3VsdCcsXG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNlbnRlcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNoZWNrYm94OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBsYWJlbDogdHJhbnNsYXRpb25zLm5vX3Jlc3VsdF9tYXRjaCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgaGFzQWxsICYmXG4gICAgICAgICAgICBzdWdnZXN0aW9ucy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICBzdWdnZXN0aW9ucy5sZW5ndGggPT09IG9wdGlvbnMubGVuZ3RoICYmXG4gICAgICAgICAgICBtdWx0aXBsZSA9PT0gdHJ1ZVxuICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSAnQWxsJ1xuICAgICAgICAgICAgaWYgKHN1Z2dlc3Rpb25zLmZpbHRlcihzdWdnZXN0aW9uID0+IHN1Z2dlc3Rpb24uaWQgPT09ICdfYWxsJykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWxsSXRlbSA9IHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdfYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogaWNvbkFsbCxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRyYW5zbGF0aW9ucy5hbGwsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAoaWNvbkFsbCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgYWxsSXRlbS50eXBlID0gJ2ljb24nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucy51bnNoaWZ0KGFsbEl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBzdWdnZXN0aW9ucyxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGhhbmRsZVJlcXVlc3REZWxldGUgPSBldnQgPT4ge1xuICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMucHJvcHMub25DaGFuZ2UodGhpcy5wcm9wcy5uYW1lLCBbXSk7XG4gICAgfTtcblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2xhc3NlcyxcbiAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgY2hlY2tib3gsXG4gICAgICAgICAgICBzZWFyY2hhYmxlLFxuICAgICAgICAgICAgZGlzcGxheUFzQ2hpcCxcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIHRyYW5zbGF0aW9ucyxcbiAgICAgICAgICAgIHBhcmVudEl0ZW1TZWxlY3RhYmxlLFxuICAgICAgICAgICAgaWNvbixcbiAgICAgICAgICAgIHBhcmVudEljb24sXG4gICAgICAgICAgICBob3Zlckljb24sXG4gICAgICAgICAgICBjaGVja2VkSWNvbixcbiAgICAgICAgICAgIGhpZXJhcmNoaWMsXG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyLFxuICAgICAgICAgICAgc3RhdGljUG9zaXRpb24sXG4gICAgICAgICAgICBwaW5uZWRJdGVtLFxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCB7IG9wZW4sIHN1Z2dlc3Rpb25zLCBmb2N1c2VkIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgICAgIGxldCBkaXNwbGF5ID0gJyc7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSWRMaXN0ID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IHZhbHVlID8gW3ZhbHVlXSA6IFtdO1xuXG4gICAgICAgIGxldCBfc3VnZ2VzdGlvbnMgPSBbLi4uc3VnZ2VzdGlvbnNdO1xuICAgICAgICBpZiAocGlubmVkSXRlbSkge1xuICAgICAgICAgICAgX3N1Z2dlc3Rpb25zID0gW3Bpbm5lZEl0ZW0sIC4uLnN1Z2dlc3Rpb25zXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmR5bmFtaWMgJiYgc2VsZWN0ZWRJZExpc3QubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBkaXNwbGF5ID0gdHJhbnNsYXRpb25zLm9uZV9pdGVtX3NlbGVjdGVkLnJlcGxhY2UoJyVzJywgc2VsZWN0ZWRJZExpc3QubGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlLm5iT3B0aW9ucyAhPT0gc2VsZWN0ZWRJZExpc3QubGVuZ3RoICYmIHNlbGVjdGVkSWRMaXN0Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGRpc3BsYXkgPSB0cmFuc2xhdGlvbnMubl9pdGVtc19zZWxlY3RlZC5yZXBsYWNlKCclcycsIHNlbGVjdGVkSWRMaXN0Lmxlbmd0aCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZS5uYk9wdGlvbnMgPT09IHNlbGVjdGVkSWRMaXN0Lmxlbmd0aCAmJiB0aGlzLnN0YXRlLm5iT3B0aW9ucyA+PSAxKSB7XG4gICAgICAgICAgICBkaXNwbGF5ID0gdHJhbnNsYXRpb25zLmFsbDtcbiAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZElkTGlzdC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGlmICh0eXBlICE9PSAnaWNvbicpIHtcbiAgICAgICAgICAgICAgICBsZXQgaXRlbSA9IG9wdGlvbnMuZmluZChvID0+IG8uaWQgPT09IHNlbGVjdGVkSWRMaXN0WzBdKTtcbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW0gJiYgcGlubmVkSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtID0gcGlubmVkSXRlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGlzcGxheSA9IGl0ZW0ubGFiZWw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvblNlbGVjdGVkID0gb3B0aW9ucy5maW5kKG8gPT4gby5pZCA9PT0gc2VsZWN0ZWRJZExpc3RbMF0pO1xuICAgICAgICAgICAgICAgIGRpc3BsYXkgPSAoXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y2xhc3Nlcy5zZWxlY3RJY29uTGFiZWx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEhpSWNvbkJ1aWxkZXIgaWNvbj17b3B0aW9uU2VsZWN0ZWQuaWNvbn0gY2xhc3NOYW1lPXtjbGFzc2VzLmxhYmVsSWNvbn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtvcHRpb25TZWxlY3RlZC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGlzcGxheUFzQ2hpcCkge1xuICAgICAgICAgICAgY29uc3QgY2hpcEZpbHRlciA9IDxIaUNoaXAgbGFiZWw9e3BsYWNlaG9sZGVyIHx8IGRpc3BsYXl9IG9uRGVsZXRlPXt0aGlzLmhhbmRsZVJlcXVlc3REZWxldGV9IC8+O1xuICAgICAgICAgICAgaWYgKGRpc3BsYXkpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5ID0gY2hpcEZpbHRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBvcHBlckNsYXNzID0gY2xhc3NOYW1lcyhjbGFzc2VzLnBvcHBlciwge1xuICAgICAgICAgICAgW2NsYXNzZXMucG9wcGVyQ2xvc2VdOiAhb3BlbixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IGFsbFNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIGlmIChzZWxlY3RlZElkTGlzdC5sZW5ndGggPT09IHRoaXMuc3RhdGUubmJPcHRpb25zKSB7XG4gICAgICAgICAgICBhbGxTZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcG9wcGVyU3R5bGUgPSB7fTtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuY29udGFpbmVyV2lkdGggPiAwKSB7XG4gICAgICAgICAgICBwb3BwZXJTdHlsZSA9IHsgd2lkdGg6IHRoaXMucHJvcHMuY29udGFpbmVyV2lkdGggfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSA8Q2xpY2tBd2F5TGlzdGVuZXIgb25DbGlja0F3YXk9e3RoaXMuaGFuZGxlQ2xpY2tBd2F5fT5cbiAgICAgICAgICAgIDxHcm93IGluPXtvcGVufSBpZD1cIm1lbnUtbGlzdFwiIHN0eWxlPXt7IHRyYW5zZm9ybU9yaWdpbjogJzAgMCAwJyB9fT5cbiAgICAgICAgICAgICAgICA8UGFwZXIgY2xhc3NOYW1lPXtjbGFzc2VzLnBhcGVyfT5cbiAgICAgICAgICAgICAgICAgICAgeyEhc2VhcmNoYWJsZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8SGlTZWFyY2hGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1MaXN0PXtvcHRpb25zfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrRmlsdGVyZWRMaXN0PXt0aGlzLmhhbmRsZVN1Z2dlc3Rpb25zfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclByb3BlcnR5TGlzdD17WydsYWJlbCddfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0cmFuc2xhdGlvbnMuc2VhcmNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLnByb3BzLm9uU2VhcmNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0UmVmPXtlbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hGaWVsZCA9IGVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249e3RoaXMuaGFuZGxlS2V5RG93blNlYXJjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAgPEhpU2VsZWN0YWJsZUxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9e3R5cGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRJdGVtU2VsZWN0YWJsZT17cGFyZW50SXRlbVNlbGVjdGFibGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtTGlzdD17X3N1Z2dlc3Rpb25zfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMuaGFuZGxlU2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJZExpc3Q9e3NlbGVjdGVkSWRMaXN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tib3g9e2NoZWNrYm94fVxuICAgICAgICAgICAgICAgICAgICAgICAgaGllcmFyY2h5PXt0aGlzLnN0YXRlLmhpZXJhcmNoeX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZXJhcmNoaWM9e2hpZXJhcmNoaWN9XG4gICAgICAgICAgICAgICAgICAgICAgICBoaWVyYXJjaHlTZWxlY3RlZD17dGhpcy5zdGF0ZS5oaWVyYXJjaHlTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9ucz17dHJhbnNsYXRpb25zfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj17aWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEljb249e3BhcmVudEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICBob3Zlckljb249e2hvdmVySWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWRJY29uPXtjaGVja2VkSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbFNlbGVjdGVkPXthbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17dGhpcy5oYW5kbGVLZXlEb3dufVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUGFwZXI+XG4gICAgICAgICAgICA8L0dyb3c+XG4gICAgICAgIDwvQ2xpY2tBd2F5TGlzdGVuZXI+XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucm9vdH1cbiAgICAgICAgICAgICAgICByZWY9e2VsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVybGF5ID0gZWw7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8TWFuYWdlcj5cbiAgICAgICAgICAgICAgICAgICAgPFRhcmdldD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTZWxlY3RJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtpZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17cGxhY2Vob2xkZXIgfHwgZGlzcGxheX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT17dHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9CdXR0b249e2Rpc3BsYXlBc0NoaXB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cz17dGhpcy5oYW5kbGVGb2N1c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXI9e3RoaXMuaGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9e3RoaXMucHJvcHMub25Nb3VzZUVudGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VMZWF2ZT17dGhpcy5wcm9wcy5vbk1vdXNlTGVhdmV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmRWxlbWVudD17KGVsKSA9PiB7IHRoaXMuc2VsZWN0SW5wdXRFbGVtZW50ID0gZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvVGFyZ2V0PlxuICAgICAgICAgICAgICAgICAgICB7b3BlbiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNQb3NpdGlvbiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3BvcHBlclN0eWxlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y29udGVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UG9wcGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1zdGFydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50c0VuYWJsZWQ9e29wZW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17cG9wcGVyQ2xhc3N9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXtwb3BwZXJTdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjb250ZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUG9wcGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvTWFuYWdlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgd2l0aFN0eWxlcyhzdHlsZXMsIHsgbmFtZTogJ0htdWlIaVNlbGVjdCcgfSkoSGlTZWxlY3QpO1xuIl19
|
38526
38572
|
|
38527
38573
|
/***/ }),
|
38528
38574
|
/* 350 */
|
@@ -133813,7 +133859,8 @@ var HiTableHead = function (_React$Component) {
|
|
133813
133859
|
align: column['align'],
|
133814
133860
|
sticky: firstColumn && sticky,
|
133815
133861
|
lookedUp: lookupColumns.includes(column.colId),
|
133816
|
-
fixedColumnWidth: fixedColumnWidth
|
133862
|
+
fixedColumnWidth: fixedColumnWidth,
|
133863
|
+
translations: translations.headerCell
|
133817
133864
|
});
|
133818
133865
|
}
|
133819
133866
|
}),
|
@@ -133847,7 +133894,7 @@ var HiTableHead = function (_React$Component) {
|
|
133847
133894
|
columns: columns,
|
133848
133895
|
orderedColumns: orderedColumns,
|
133849
133896
|
mandatoryColumnId: mandatoryColumnId,
|
133850
|
-
translations: translations
|
133897
|
+
translations: translations.orderColumns
|
133851
133898
|
})
|
133852
133899
|
)
|
133853
133900
|
),
|
@@ -133997,10 +134044,7 @@ HiTableHead.defaultProps = {
|
|
133997
134044
|
dense: false,
|
133998
134045
|
sticky: true,
|
133999
134046
|
translations: {
|
134000
|
-
get_the_n_new_items: 'Get the %s new items'
|
134001
|
-
choose_and_organize_columns: 'Choose & organize columns',
|
134002
|
-
search: 'Search',
|
134003
|
-
time: 'Time'
|
134047
|
+
get_the_n_new_items: 'Get the %s new items'
|
134004
134048
|
},
|
134005
134049
|
view: 'l'
|
134006
134050
|
};
|
@@ -134010,7 +134054,7 @@ var _initialiseProps = function _initialiseProps() {
|
|
134010
134054
|
};
|
134011
134055
|
|
134012
134056
|
exports.default = (0, _styles.withStyles)(styles, { withTheme: true, name: 'HmuiHiTableHead' })(HiTableHead);
|
134013
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9IaVRhYmxlL0hpVGFibGVIZWFkLmpzIl0sIm5hbWVzIjpbImNzdCIsInN0eWxlcyIsInRoZWFkIiwicG9zaXRpb24iLCJ3aWR0aCIsIm92ZXJmbG93IiwiekluZGV4IiwidGhlYWRGaXhlZFdpZHRoIiwiZGlzcGxheSIsInRoZWFkUm93IiwiYmFja2dyb3VuZENvbG9yIiwidGhlbWUiLCJwYWxldHRlIiwiYmFja2dyb3VuZDMiLCJyaWdodFNoYWRvdyIsImJvcmRlcldpZHRoIiwiYm9yZGVyU3R5bGUiLCJ3ZWJraXRCb3JkZXJJbWFnZSIsIm1vekJvcmRlckltYWdlIiwib0JvcmRlckltYWdlIiwiYm9yZGVySW1hZ2UiLCJib3R0b21TaGFkb3ciLCJvcmRlckNvbHVtbnNJY29uIiwiY3Vyc29yIiwiY29sb3IiLCJuZXV0cmFsIiwibm9ybWFsIiwiYnVzaW5lc3MiLCJwcmltYXJ5IiwibGl2ZURhdGFSb3ciLCJsaXZlRGF0YUNvbnRlbnQiLCJmb250U2l6ZSIsImZvbnRGYW1pbHkiLCJmb250V2VpZ2h0IiwicGF0Y2hEaXYiLCJib3JkZXIiLCJwYWRkaW5nUmlnaHQiLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSIsImhlaWdodCIsIlNPUlRFRF9DT0xVTU5fRVJST1JfTUVTU0FHRSIsIkhpVGFibGVIZWFkIiwicHJvcHMiLCJzdGF0ZSIsImhvdmVyZWQiLCJvcGVuZWRPcmRlckNvbHVtbnMiLCJvcmRlckNvbHVtbnNBbmNob3JFbCIsImhhbmRsZUV2ZW50IiwiYmluZCIsImhhbmRsZU9wZW5PcmRlckNvbHVtbnMiLCJoYW5kbGVDbG9zZU9yZGVyQ29sdW1ucyIsInR5cGUiLCJzZXRTdGF0ZSIsImNvbnNvbGUiLCJ3YXJuIiwib3JkZXJDb2x1bW5zQnV0dG9uIiwiY2xhc3NlcyIsImNvbHVtbnMiLCJvcmRlcmVkQ29sdW1ucyIsImRhdGFTb3VyY2UiLCJmaWx0ZXJhYmxlIiwib25GaWx0ZXJDaGFuZ2UiLCJvcmRlcmFibGUiLCJvbkNvbHVtbnNPcmRlclVwZGF0ZSIsIm1hbmRhdG9yeUNvbHVtbklkIiwic2VsZWN0YWJsZSIsIm9uU2VsZWN0Iiwic2VsZWN0ZWRJZExpc3QiLCJzb3J0YWJsZSIsIm9uU29ydCIsInNvcnRlZENvbHVtbklkIiwic29ydERpcmVjdGlvbiIsImNvdW50TGl2ZURhdGFzIiwib25SZXF1ZXN0TGl2ZURhdGFzIiwiZGVuc2UiLCJzdGlja3kiLCJ0cmFuc2xhdGlvbnMiLCJ2aWV3IiwibG9va3VwQ29sdW1ucyIsImZpeGVkQ29sdW1uV2lkdGgiLCJoZWFkZXJQcm9wcyIsImNsYXNzTmFtZSIsIm9uTW91c2VFbnRlciIsIm9uTW91c2VMZWF2ZSIsInVuZml4ZWRDb2x1bW5Jc1NldCIsImZpcnN0SW5kZXhEaXNwbGF5Iiwic29tZSIsImNvbFJlZiIsImhhc093blByb3BlcnR5IiwiZGlzcGxheWVkIiwiY29sSWQiLCJDRUxMX0hFQURFUl9IRUlHSFRfREVOU0UiLCJDRUxMX0hFQURFUl9IRUlHSFQiLCJwYWRkaW5nTGVmdCIsIkRFRkFVTFRfUEFERElORyIsIm1hcCIsImNvbHVtbiIsImZpeGVkIiwiZml4ZWRXaWR0aCIsImZpcnN0Q29sdW1uIiwiZWZmZWN0aXZlVmlldyIsImxlbmd0aCIsImluY2x1ZGVzIiwicmlnaHQiLCJ0b3AiLCJub2RlIiwiQ0VMTF9IRUlHSFRfREVOU0UiLCJDRUxMX0hFSUdIVCIsImdldF90aGVfbl9uZXdfaXRlbXMiLCJyZXBsYWNlIiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwib2JqZWN0IiwiaXNSZXF1aXJlZCIsIm51bWJlciIsImFycmF5IiwiYm9vbCIsInN0cmluZyIsImZ1bmMiLCJvbmVPZiIsImRlZmF1bHRQcm9wcyIsImNob29zZV9hbmRfb3JnYW5pemVfY29sdW1ucyIsInNlYXJjaCIsInRpbWUiLCJ3aXRoVGhlbWUiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOzs7O0FBQ0E7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBRUE7O0FBQ0E7Ozs7QUFDQTs7OztB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QXpCLEVBQW5CLEVBQWlFcEYsV0FBakUsQyIsImZpbGUiOiJIaVRhYmxlSGVhZC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9tZmF6aW8vZGV2L3Byb2plY3RzL2hpcGF5LW1hdGVyaWFsLXVpIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGZpbmRET01Ob2RlIH0gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgaXNSZXF1aXJlZElmIGZyb20gJ3JlYWN0LXByb3B0eXBlLWNvbmRpdGlvbmFsLXJlcXVpcmUnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5cbmltcG9ydCB7IFRhYmxlSGVhZCwgVGFibGVSb3csIFRhYmxlQ2VsbCB9IGZyb20gJ21hdGVyaWFsLXVpL1RhYmxlJztcbmltcG9ydCBQbHVzQ2lyY2xlSWNvbiBmcm9tICdtZGktbWF0ZXJpYWwtdWkvUGx1c0NpcmNsZSc7XG5pbXBvcnQgSWNvbkJ1dHRvbiBmcm9tICdtYXRlcmlhbC11aS9JY29uQnV0dG9uJztcbmltcG9ydCB7IGZhZGUgfSBmcm9tICdtYXRlcmlhbC11aS9zdHlsZXMvY29sb3JNYW5pcHVsYXRvcic7XG5cbmltcG9ydCB7IHdpdGhTdHlsZXMsIHdpdGhUaGVtZSB9IGZyb20gJy4uL3N0eWxlcyc7XG5pbXBvcnQgSGVhZGVyQ2VsbCBmcm9tICcuL0hlYWRlckNlbGwnO1xuaW1wb3J0ICogYXMgY3N0IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCBPcmRlckNvbHVtbnMgZnJvbSAnLi9PcmRlckNvbHVtbnMnO1xuaW1wb3J0IHsgTUFOREFUT1JZX0NPTFVNTl9FUlJPUl9NRVNTQUdFIH0gZnJvbSAnLi9IaVRhYmxlJztcblxuZXhwb3J0IGNvbnN0IHN0eWxlcyA9IHRoZW1lID0+ICh7XG4gICAgdGhlYWQ6IHtcbiAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIG92ZXJmbG93OiAndmlzaWJsZScsXG4gICAgICAgIHpJbmRleDogMTIsXG4gICAgfSxcbiAgICB0aGVhZEZpeGVkV2lkdGg6IHtcbiAgICAgICAgZGlzcGxheTogJ2Jsb2NrJyAvKnNlcGVyYXRlcyB0aGUgaGVhZGVyIGZyb20gdGhlIGJvZHkgYWxsb3dpbmcgaXQgdG8gYmUgcG9zaXRpb25lZCovLFxuICAgIH0sXG4gICAgdGhlYWRSb3c6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5wYWxldHRlLmJhY2tncm91bmQzLFxuICAgICAgICB6SW5kZXg6IDEyLFxuICAgIH0sXG4gICAgcmlnaHRTaGFkb3c6IHtcbiAgICAgICAgYm9yZGVyV2lkdGg6ICc0cHggNHB4IDRweCAwJyxcbiAgICAgICAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gICAgICAgIHdlYmtpdEJvcmRlckltYWdlOlxuICAgICAgICAgICAgJy13ZWJraXQtbGluZWFyLWdyYWRpZW50KHJpZ2h0LCByZ2JhKDQyLCA0MiwgNDIsIDAuMSksIHJnYmEoMCwgMCwgMCwgMCkpIDEgMTAwJScsXG4gICAgICAgIG1vekJvcmRlckltYWdlOlxuICAgICAgICAgICAgJy1tb3otbGluZWFyLWdyYWRpZW50KHJpZ2h0LCByZ2JhKDQyLCA0MiwgNDIsIDAuMSksIHJnYmEoMCwgMCwgMCwgMCkpIDEgMTAwJScsXG4gICAgICAgIG9Cb3JkZXJJbWFnZTogJy1vLWxpbmVhci1ncmFkaWVudChyaWdodCwgcmdiYSg0MiwgNDIsIDQyLCAwLjEpLCByZ2JhKDAsIDAsIDAsIDApKSAxIDEwMCUnLFxuICAgICAgICBib3JkZXJJbWFnZTogJ2xpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSg0MiwgNDIsIDQyLCAwLjEpLCByZ2JhKDAsIDAsIDAsIDApKSAxIDEwMCUnLFxuICAgIH0sXG4gICAgYm90dG9tU2hhZG93OiB7XG4gICAgICAgIGJvcmRlcldpZHRoOiAnMCAwIDRweCAwJyxcbiAgICAgICAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gICAgICAgIHdlYmtpdEJvcmRlckltYWdlOlxuICAgICAgICAgICAgJy13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgcmdiYSgwLDAsMCwgMC4wOCkgMCUsIHJnYmEoMCwwLDAsIDApIDEwMCUpJyxcbiAgICAgICAgbW96Qm9yZGVySW1hZ2U6ICctbW96LWxpbmVhci1ncmFkaWVudCh0b3AsIHJnYmEoMCwwLDAsIDAuMDgpLCByZ2JhKDAsMCwwLCAwKSAxIDEwMCUpJyxcbiAgICAgICAgb0JvcmRlckltYWdlOiAnLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgcmdiYSgwLDAsMCwgMC4wOCksIHJnYmEoMCwgMCwgMCwgMCkpIDEgMTAwJScsXG4gICAgICAgIGJvcmRlckltYWdlOiAnbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgcmdiYSgwLCAwLCAwLCAwLjA4KSwgcmdiYSgwLCAwLCAwLCAwKSkgMSAxMDAlJyxcbiAgICB9LFxuICAgIG9yZGVyQ29sdW1uc0ljb246IHtcbiAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlLm5ldXRyYWwubm9ybWFsLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnBhbGV0dGUuYmFja2dyb3VuZDMsXG4gICAgICAgICcmOmhvdmVyJzoge1xuICAgICAgICAgICAgY29sb3I6IHRoZW1lLnBhbGV0dGUuYnVzaW5lc3MucHJpbWFyeS5ub3JtYWwsXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICBsaXZlRGF0YVJvdzoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGZhZGUodGhlbWUucGFsZXR0ZS5idXNpbmVzcy5wcmltYXJ5Lm5vcm1hbCwgMC4wOCksXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgfSxcbiAgICBsaXZlRGF0YUNvbnRlbnQ6IHtcbiAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgIGZvbnRTaXplOiAxMyxcbiAgICAgICAgZm9udEZhbWlseTogJ1JvYm90bycsXG4gICAgICAgIGZvbnRXZWlnaHQ6IDQwMCxcbiAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlLmJ1c2luZXNzLnByaW1hcnkubm9ybWFsLFxuICAgIH0sXG4gICAgcGF0Y2hEaXY6IHtcbiAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgcGFkZGluZ1JpZ2h0OiAwLFxuICAgICAgICBwYWRkaW5nVG9wOiAwLFxuICAgICAgICBwYWRkaW5nQm90dG9tOiAwLFxuICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgekluZGV4OiAxNCxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnaW5oZXJpdCcsXG4gICAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgU09SVEVEX0NPTFVNTl9FUlJPUl9NRVNTQUdFID1cbiAgICAnVm91cyBkZXZleiBzYWlzaXIgbGEgcHJvcHJpw6l0w6kgXCJzb3J0ZWRDb2x1bW5JZFwiIHBvdXIgbGVzIHRhYmxlYXV4IFwic29ydGFibGVcIic7XG5cbi8qKlxuICogSGlUYWJsZSBIZWFkXG4gKiBIYW5kbGUgaGVhZGVyIHJvdyBjcmVhdGlvbiBhbmQgdXBkYXRlIGZyb20gb3JkZXJlZENvbHVtbnMgJiBjb2x1bW5zXG4gKi9cbmNsYXNzIEhpVGFibGVIZWFkIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogVXNlZnVsIHRvIGV4dGVuZCB0aGUgc3R5bGUgYXBwbGllZCB0byBjb21wb25lbnRzLlxuICAgICAgICAgKi9cbiAgICAgICAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvbG9ubmVzIGR1IHRhYmxlYXUgKGxhYmVsLCBsYXJnZXVyLCBkb25uw6llcywgLi4uIClcbiAgICAgICAgICovXG4gICAgICAgIGNvbHVtbnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE5vbWJyZSBkZSBub3V2ZWxsZXMgZG9ubsOpZXMgZGlzcG9uaWJsZXMgKGxpdmUpXG4gICAgICAgICAqL1xuICAgICAgICBjb3VudExpdmVEYXRhczogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRhYmxlYXUgZGVzIGRvbm7DqWVzXG4gICAgICAgICAqL1xuICAgICAgICBkYXRhU291cmNlOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlbnNpdMOpIGQnYWZmaWNoYWdlIChqb3VlIHN1ciBsYSBoYXV0ZXVyIGRlcyBsaWduZXMpXG4gICAgICAgICAqL1xuICAgICAgICBkZW5zZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBY3RpdmUgbGUgZmlsdHJlIHN1ciBsZXMgY29sb25uZXMgZmlsdHJhYmxlc1xuICAgICAgICAgKi9cbiAgICAgICAgZmlsdGVyYWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGaXhlIGxhIHRhaWxsZSBkZXMgY29sb25uZXMgc2Vsb24gbGUgdHlwZSBkZSB2dWVcbiAgICAgICAgICogU2lub24gbGVzIGNvbG9ubmVzIHMnYWRhcHRlbnQgw6AgbCdlc3BhY2UgZGlzcG9uaWJsZVxuICAgICAgICAgKi9cbiAgICAgICAgZml4ZWRDb2x1bW5XaWR0aDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZGVudGlmaWFudCBkZSBsYSBvdSBkZXMgY29sb25uZXMgc3VyIGxhL2xlc3F1ZWxsZXMgaWwgeSBhIHVuZSAnbG9va3VwJyBzZWFyY2hcbiAgICAgICAgICovXG4gICAgICAgIGxvb2t1cENvbHVtbnM6IFByb3BUeXBlcy5hcnJheSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFBvdXIgbGVzIHRhYmxlYXV4IFwib3JkZXJhYmxlXCIgdW5pcXVlbWVudCA6XG4gICAgICAgICAqIElkIGRlIGxhIGNvbG9ubmUgb2JsaWdhdG9pcmUsXG4gICAgICAgICAqIGVsbGUgc2VyYSB0b3Vqb3VycyBhZmZpY2jDqWUgZGFucyBsZSB0YWJsZWF1IGV0IG5lIHBvdXJyYSBwYXMgw6p0cmUgY2FjaMOpZS5cbiAgICAgICAgICovXG4gICAgICAgIG1hbmRhdG9yeUNvbHVtbklkOiBpc1JlcXVpcmVkSWYoXG4gICAgICAgICAgICBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICAgICAgcHJvcHMgPT4gcHJvcHMuaGFzT3duUHJvcGVydHkoJ29yZGVyYWJsZScpICYmIHByb3BzLm9yZGVyYWJsZSA9PT0gdHJ1ZSxcbiAgICAgICAgICAgIE1BTkRBVE9SWV9DT0xVTU5fRVJST1JfTUVTU0FHRSxcbiAgICAgICAgKSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIHN1ciBsJ29yZHJlIGRlcyBjb2xvbm5lc1xuICAgICAgICAgKi9cbiAgICAgICAgb25Db2x1bW5zT3JkZXJVcGRhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICAvKipcbiAgICAgICAgICogRm9uY3Rpb24gZGUgY2FsbGJhY2sgc3VyIGxlIGZpbHRyZSBkJ3VuZSBjb2xvbm5lXG4gICAgICAgICAqIFBhc3NlIGwnaWQgZGUgbGEgY29sb25uZSBldCBsYSBsaXN0ZSBkZXMgaWQgZGVzIMOpbMOpbWVudHMgaW5jbHVzXG4gICAgICAgICAqL1xuICAgICAgICBvbkZpbHRlckNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayByZXF1w6lyYW50IGwnYWZmaWNoYWdlIGRlcyBub3V2ZWxsZXMgZG9ubsOpZXMgKGxpdmUpXG4gICAgICAgICAqL1xuICAgICAgICBvblJlcXVlc3RMaXZlRGF0YXM6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICAvKipcbiAgICAgICAgICogRm9uY3Rpb24gZGUgY2FsbGJhY2sgc3VyIGxlIHRyaSBkJ3VuZSBjb2xvbm5lXG4gICAgICAgICAqIFBhc3NlIGwnaWQgZGUgbGEgY29sb25uZSBldCBsYSBkaXJlY3Rpb24gZHUgdHJpIChvdSBmYWxzZSBzaSB0cmkgcGFyIGTDqWZhdXQpXG4gICAgICAgICAqL1xuICAgICAgICBvblNvcnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICAvKipcbiAgICAgICAgICogTCd1dGlsaXNhdGV1ciBwZXV0IGNoYW5nZXIgbCdvcmRyZSBkZXMgY29sb25uZXMsIGxlcyBhZmZpY2hlciBvdSBub24sXG4gICAgICAgICAqIGV0IGNoYW5nZXIgbGEgdnVlIGRlIGNoYXF1ZSBjb2xvbm5lIChzbWFsbCwgbWVkaXVtLCBsYXJnZSkuXG4gICAgICAgICAqL1xuICAgICAgICBvcmRlcmFibGU6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogVGFibGVhdSBkZXMgY29sb25uZXMgYWZmaWNow6llcyAob3Jkb25uw6llcywgdmlzaWJsZXMvY2FjaMOpZXMsIGwvbS9zKVxuICAgICAgICAgKi9cbiAgICAgICAgb3JkZXJlZENvbHVtbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICAgICAgICAvKipcbiAgICAgICAgICogW3YyIC0gw6AgdmVuaXJdIExlcyBsaWduZXMgc29udCBzw6lsZWN0aW9ubmFibGVzIChhZmZpY2hhZ2UgZCd1bmUgY2hlY2tib3gpXG4gICAgICAgICAqL1xuICAgICAgICBzZWxlY3RhYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3RlIGRlcyBpZCBkZXMgbGlnbmVzIHPDqWxlY3Rpb25uw6llc1xuICAgICAgICAgKi9cbiAgICAgICAgc2VsZWN0ZWRJZExpc3Q6IFByb3BUeXBlcy5hcnJheSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFjdGl2ZSBsZSB0cmkgc3VyIGxlcyBjb2xvbm5lc1xuICAgICAgICAgKi9cbiAgICAgICAgc29ydGFibGU6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogU2VucyBkdSB0cmlcbiAgICAgICAgICovXG4gICAgICAgIHNvcnREaXJlY3Rpb246IFByb3BUeXBlcy5vbmVPZihbJ2FzYycsICdkZXNjJ10pLFxuICAgICAgICAvKipcbiAgICAgICAgICogSWQgZGUgbGEgY29sb25uZSB0cmnDqVxuICAgICAgICAgKi9cbiAgICAgICAgc29ydGVkQ29sdW1uSWQ6IGlzUmVxdWlyZWRJZihcbiAgICAgICAgICAgIFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgICAgICBwcm9wcyA9PiBwcm9wcy5oYXNPd25Qcm9wZXJ0eSgnc29ydGFibGUnKSAmJiBwcm9wcy5zb3J0YWJsZSA9PT0gdHJ1ZSxcbiAgICAgICAgICAgIFNPUlRFRF9DT0xVTU5fRVJST1JfTUVTU0FHRSxcbiAgICAgICAgKSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZpeGUgbGEgcHJlbWnDqHJlIGNvbG9ubmVcbiAgICAgICAgICovXG4gICAgICAgIHN0aWNreTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUcmFkdWN0aW9uIGRlcyBjaGHDrm5lcyBhZmZpY2jDqWVzXG4gICAgICAgICAqL1xuICAgICAgICB0cmFuc2xhdGlvbnM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUYWlsbGUgZHUgdGFibGVhdSAoTC9NL1MpLFxuICAgICAgICAgKiBkw6lmaW5pdCBsJ2VzcGFjZSBlbnRyZSBsZXMgY2VsbHVsZXMgZXQgbGV1cnMgdGFpbGxlcyBwYXIgZGVmYXVsdFxuICAgICAgICAgKi9cbiAgICAgICAgdmlldzogUHJvcFR5cGVzLm9uZU9mKFsnbCcsICdtJywgJ3MnXSksXG4gICAgfTtcblxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICAgIHNlbGVjdGFibGU6IGZhbHNlLFxuICAgICAgICBzZWxlY3RlZElkTGlzdDogW10sXG4gICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICBzb3J0RGlyZWN0aW9uOiAnYXNjJyxcbiAgICAgICAgZmlsdGVyYWJsZTogZmFsc2UsXG4gICAgICAgIG9yZGVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvdW50TGl2ZURhdGFzOiAwLFxuICAgICAgICBkZW5zZTogZmFsc2UsXG4gICAgICAgIHN0aWNreTogdHJ1ZSxcbiAgICAgICAgdHJhbnNsYXRpb25zOiB7XG4gICAgICAgICAgICBnZXRfdGhlX25fbmV3X2l0ZW1zOiAnR2V0IHRoZSAlcyBuZXcgaXRlbXMnLFxuICAgICAgICAgICAgY2hvb3NlX2FuZF9vcmdhbml6ZV9jb2x1bW5zOiAnQ2hvb3NlICYgb3JnYW5pemUgY29sdW1ucycsXG4gICAgICAgICAgICBzZWFyY2g6ICdTZWFyY2gnLFxuICAgICAgICAgICAgdGltZTogJ1RpbWUnLFxuICAgICAgICB9LFxuICAgICAgICB2aWV3OiAnbCcsXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGhvdmVyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgb3BlbmVkT3JkZXJDb2x1bW5zOiBmYWxzZSxcbiAgICAgICAgICAgIG9yZGVyQ29sdW1uc0FuY2hvckVsOiBudWxsLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuaGFuZGxlRXZlbnQgPSB0aGlzLmhhbmRsZUV2ZW50LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlT3Blbk9yZGVyQ29sdW1ucyA9IHRoaXMuaGFuZGxlT3Blbk9yZGVyQ29sdW1ucy5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZUNsb3NlT3JkZXJDb2x1bW5zID0gdGhpcy5oYW5kbGVDbG9zZU9yZGVyQ29sdW1ucy5iaW5kKHRoaXMpO1xuICAgIH1cblxuICAgIGhhbmRsZUV2ZW50KHsgdHlwZSB9KSB7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnbW91c2VlbnRlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0U3RhdGUoeyBob3ZlcmVkOiB0cnVlIH0pO1xuICAgICAgICAgICAgY2FzZSAnbW91c2VsZWF2ZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0U3RhdGUoeyBob3ZlcmVkOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnNvbGUud2FybihgTm8gY2FzZSBmb3IgZXZlbnQgdHlwZSBcIiR7dHlwZX1cImApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaGFuZGxlT3Blbk9yZGVyQ29sdW1ucygpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBvcGVuZWRPcmRlckNvbHVtbnM6IHRydWUsXG4gICAgICAgICAgICBvcmRlckNvbHVtbnNBbmNob3JFbDogZmluZERPTU5vZGUodGhpcy5vcmRlckNvbHVtbnNCdXR0b24pLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBoYW5kbGVDbG9zZU9yZGVyQ29sdW1ucygpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBob3ZlcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIG9wZW5lZE9yZGVyQ29sdW1uczogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9yZGVyQ29sdW1uc0J1dHRvbiA9IG51bGw7XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNsYXNzZXMsXG4gICAgICAgICAgICBjb2x1bW5zLFxuICAgICAgICAgICAgb3JkZXJlZENvbHVtbnMsXG4gICAgICAgICAgICBkYXRhU291cmNlLFxuICAgICAgICAgICAgZmlsdGVyYWJsZSxcbiAgICAgICAgICAgIG9uRmlsdGVyQ2hhbmdlLFxuICAgICAgICAgICAgb3JkZXJhYmxlLFxuICAgICAgICAgICAgb25Db2x1bW5zT3JkZXJVcGRhdGUsXG4gICAgICAgICAgICBtYW5kYXRvcnlDb2x1bW5JZCxcbiAgICAgICAgICAgIHNlbGVjdGFibGUsXG4gICAgICAgICAgICBvblNlbGVjdCxcbiAgICAgICAgICAgIHNlbGVjdGVkSWRMaXN0LFxuICAgICAgICAgICAgc29ydGFibGUsXG4gICAgICAgICAgICBvblNvcnQsXG4gICAgICAgICAgICBzb3J0ZWRDb2x1bW5JZCxcbiAgICAgICAgICAgIHNvcnREaXJlY3Rpb24sXG4gICAgICAgICAgICBjb3VudExpdmVEYXRhcyxcbiAgICAgICAgICAgIG9uUmVxdWVzdExpdmVEYXRhcyxcbiAgICAgICAgICAgIGRlbnNlLFxuICAgICAgICAgICAgc3RpY2t5LFxuICAgICAgICAgICAgdHJhbnNsYXRpb25zLFxuICAgICAgICAgICAgdmlldyxcbiAgICAgICAgICAgIGxvb2t1cENvbHVtbnMsXG4gICAgICAgICAgICBmaXhlZENvbHVtbldpZHRoLFxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCB7IGhvdmVyZWQsIG9wZW5lZE9yZGVyQ29sdW1ucywgb3JkZXJDb2x1bW5zQW5jaG9yRWwgfSA9IHRoaXMuc3RhdGU7XG5cbiAgICAgICAgbGV0IGhlYWRlclByb3BzID0ge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzKGNsYXNzZXMudGhlYWQsIHtcbiAgICAgICAgICAgICAgICBbY2xhc3Nlcy50aGVhZEZpeGVkV2lkdGhdOiBmaXhlZENvbHVtbldpZHRoLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAuLi4ob3JkZXJhYmxlICYmIHsgb25Nb3VzZUVudGVyOiB0aGlzLmhhbmRsZUV2ZW50LCBvbk1vdXNlTGVhdmU6IHRoaXMuaGFuZGxlRXZlbnQgfSksXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IHVuZml4ZWRDb2x1bW5Jc1NldCA9IGZhbHNlLFxuICAgICAgICAgICAgZmlyc3RJbmRleERpc3BsYXk7XG5cbiAgICAgICAgb3JkZXJlZENvbHVtbnMuc29tZShjb2xSZWYgPT4ge1xuICAgICAgICAgICAgaWYgKCFjb2xSZWYuaGFzT3duUHJvcGVydHkoJ2Rpc3BsYXllZCcpIHx8IGNvbFJlZi5kaXNwbGF5ZWQpIHtcbiAgICAgICAgICAgICAgICBmaXJzdEluZGV4RGlzcGxheSA9IGNvbFJlZi5jb2xJZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxUYWJsZUhlYWQgey4uLmhlYWRlclByb3BzfT5cbiAgICAgICAgICAgICAgICA8VGFibGVSb3dcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnRoZWFkUm93fVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBkZW5zZSA/IGNzdC5DRUxMX0hFQURFUl9IRUlHSFRfREVOU0UgOiBjc3QuQ0VMTF9IRUFERVJfSEVJR0hULFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgey8qIExlZnQgcGFkZGluZyBjZWxsICovfVxuICAgICAgICAgICAgICAgICAgICA8VGFibGVDZWxsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9eydoZWFkZXItbGVmdC1jZWxsJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wYXRjaERpdn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHBhZGRpbmdMZWZ0OiBjc3QuREVGQVVMVF9QQURESU5HW3ZpZXddIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAge29yZGVyZWRDb2x1bW5zLm1hcChjb2xSZWYgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjb2xSZWYuaGFzT3duUHJvcGVydHkoJ2Rpc3BsYXllZCcpIHx8IGNvbFJlZi5kaXNwbGF5ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29sdW1uID0gY29sdW1uc1tjb2xSZWYuY29sSWRdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGZpcnN0IG5vbiBmaXhlZCBjb2x1bW4gaXMgdGhlIG9ubHkgb25lIG5vdCBmaXhlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaXhlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1bmZpeGVkQ29sdW1uSXNTZXQgJiYgY29sdW1uLmZpeGVkV2lkdGggIT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5maXhlZENvbHVtbklzU2V0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmlyc3RDb2x1bW4gPSBjb2xSZWYuY29sSWQgPT09IGZpcnN0SW5kZXhEaXNwbGF5O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVmZmVjdGl2ZVZpZXcgPSBjb2xSZWYuaGFzT3duUHJvcGVydHkoJ3ZpZXcnKSA/IGNvbFJlZi52aWV3IDogdmlldztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIZWFkZXJDZWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9eydoZWFkZXItJyArIGNvbHVtbi5jb2xJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbElkPXtjb2x1bW4uY29sSWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXtjb2x1bW5bJ2Zvcm1UeXBlJ10gfHwgY29sdW1uWyd0eXBlJ119IC8vIGRlZmluZSBzZWxlY3QgaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtjb2x1bW5bJ2xhYmVsJ119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWFsbFRpdGxlPXtjb2x1bW5bJ3JlZHVjZWRMYWJlbCddfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0YWJsZT17Zmlyc3RDb2x1bW4gJiYgc2VsZWN0YWJsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZElkTGlzdC5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc2VsZWN0ZWRJZExpc3QubGVuZ3RoID09PSBkYXRhU291cmNlLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ21peGVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdD17b25TZWxlY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZT17c29ydGFibGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQ9e3NvcnRlZENvbHVtbklkID09PSBjb2x1bW4uY29sSWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0RGlyZWN0aW9uPXtzb3J0RGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJhYmxlPXtmaWx0ZXJhYmxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyU291cmNlPXtjb2x1bW5bJ2RhdGEnXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmlsdGVyQ2hhbmdlPXtvbkZpbHRlckNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXc9e2VmZmVjdGl2ZVZpZXd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nPXtjc3QuREVGQVVMVF9QQURESU5HW3ZpZXddfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVuc2U9e2RlbnNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9e2NvbHVtblsnd2lkdGgnXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkV2lkdGg9e2ZpeGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ249e2NvbHVtblsnYWxpZ24nXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreT17Zmlyc3RDb2x1bW4gJiYgc3RpY2t5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9va2VkVXA9e2xvb2t1cENvbHVtbnMuaW5jbHVkZXMoY29sdW1uLmNvbElkKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkQ29sdW1uV2lkdGg9e2ZpeGVkQ29sdW1uV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSl9XG5cbiAgICAgICAgICAgICAgICAgICAgey8qIFJpZ2h0IHBhZGRpbmcgY2VsbCArIG9yZGVyQ29sdW1uc0ljb24gb24gaG92ZXIgKi99XG4gICAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleT17J2hlYWRlci1yaWdodC1jZWxsJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5wYXRjaERpdn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHBhZGRpbmdMZWZ0OiBjc3QuREVGQVVMVF9QQURESU5HW3ZpZXddIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtvcmRlcmFibGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3ZlcmVkICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBkZW5zZSA/IC00IDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e25vZGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3JkZXJDb2x1bW5zQnV0dG9uID0gbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLmhhbmRsZU9wZW5PcmRlckNvbHVtbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzQ2lyY2xlSWNvbiBjbGFzc05hbWU9e2NsYXNzZXMub3JkZXJDb2x1bW5zSWNvbn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtvcmRlcmFibGUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxPcmRlckNvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNPcGVuPXtvcGVuZWRPcmRlckNvbHVtbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9e3RoaXMuaGFuZGxlQ2xvc2VPcmRlckNvbHVtbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvckVsPXtvcmRlckNvbHVtbnNBbmNob3JFbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlT3JkZXJlZENvbHVtbnM9e29uQ29sdW1uc09yZGVyVXBkYXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtjb2x1bW5zfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmVkQ29sdW1ucz17b3JkZXJlZENvbHVtbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmRhdG9yeUNvbHVtbklkPXttYW5kYXRvcnlDb2x1bW5JZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25zPXt0cmFuc2xhdGlvbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XG5cbiAgICAgICAgICAgICAgICB7Y291bnRMaXZlRGF0YXMgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgPFRhYmxlUm93XG4gICAgICAgICAgICAgICAgICAgICAgICBpZD17J25iLW5ldy1yb3dzJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5saXZlRGF0YVJvd31cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBkZW5zZSA/IGNzdC5DRUxMX0hFSUdIVF9ERU5TRSA6IGNzdC5DRUxMX0hFSUdIVCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBib3JkZXI6ICdub25lJywgY3Vyc29yOiAncG9pbnRlcicgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xTcGFuPXsxMDAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uUmVxdWVzdExpdmVEYXRhc31cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzZXMubGl2ZURhdGFDb250ZW50fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zbGF0aW9ucy5nZXRfdGhlX25fbmV3X2l0ZW1zLnJlcGxhY2UoJyVzJywgY291bnRMaXZlRGF0YXMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1RhYmxlSGVhZD5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZXMoc3R5bGVzLCB7IHdpdGhUaGVtZTogdHJ1ZSwgbmFtZTogJ0htdWlIaVRhYmxlSGVhZCcgfSkoSGlUYWJsZUhlYWQpO1xuIl19
|
134057
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9IaVRhYmxlL0hpVGFibGVIZWFkLmpzIl0sIm5hbWVzIjpbImNzdCIsInN0eWxlcyIsInRoZWFkIiwicG9zaXRpb24iLCJ3aWR0aCIsIm92ZXJmbG93IiwiekluZGV4IiwidGhlYWRGaXhlZFdpZHRoIiwiZGlzcGxheSIsInRoZWFkUm93IiwiYmFja2dyb3VuZENvbG9yIiwidGhlbWUiLCJwYWxldHRlIiwiYmFja2dyb3VuZDMiLCJyaWdodFNoYWRvdyIsImJvcmRlcldpZHRoIiwiYm9yZGVyU3R5bGUiLCJ3ZWJraXRCb3JkZXJJbWFnZSIsIm1vekJvcmRlckltYWdlIiwib0JvcmRlckltYWdlIiwiYm9yZGVySW1hZ2UiLCJib3R0b21TaGFkb3ciLCJvcmRlckNvbHVtbnNJY29uIiwiY3Vyc29yIiwiY29sb3IiLCJuZXV0cmFsIiwibm9ybWFsIiwiYnVzaW5lc3MiLCJwcmltYXJ5IiwibGl2ZURhdGFSb3ciLCJsaXZlRGF0YUNvbnRlbnQiLCJmb250U2l6ZSIsImZvbnRGYW1pbHkiLCJmb250V2VpZ2h0IiwicGF0Y2hEaXYiLCJib3JkZXIiLCJwYWRkaW5nUmlnaHQiLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSIsImhlaWdodCIsIlNPUlRFRF9DT0xVTU5fRVJST1JfTUVTU0FHRSIsIkhpVGFibGVIZWFkIiwicHJvcHMiLCJzdGF0ZSIsImhvdmVyZWQiLCJvcGVuZWRPcmRlckNvbHVtbnMiLCJvcmRlckNvbHVtbnNBbmNob3JFbCIsImhhbmRsZUV2ZW50IiwiYmluZCIsImhhbmRsZU9wZW5PcmRlckNvbHVtbnMiLCJoYW5kbGVDbG9zZU9yZGVyQ29sdW1ucyIsInR5cGUiLCJzZXRTdGF0ZSIsImNvbnNvbGUiLCJ3YXJuIiwib3JkZXJDb2x1bW5zQnV0dG9uIiwiY2xhc3NlcyIsImNvbHVtbnMiLCJvcmRlcmVkQ29sdW1ucyIsImRhdGFTb3VyY2UiLCJmaWx0ZXJhYmxlIiwib25GaWx0ZXJDaGFuZ2UiLCJvcmRlcmFibGUiLCJvbkNvbHVtbnNPcmRlclVwZGF0ZSIsIm1hbmRhdG9yeUNvbHVtbklkIiwic2VsZWN0YWJsZSIsIm9uU2VsZWN0Iiwic2VsZWN0ZWRJZExpc3QiLCJzb3J0YWJsZSIsIm9uU29ydCIsInNvcnRlZENvbHVtbklkIiwic29ydERpcmVjdGlvbiIsImNvdW50TGl2ZURhdGFzIiwib25SZXF1ZXN0TGl2ZURhdGFzIiwiZGVuc2UiLCJzdGlja3kiLCJ0cmFuc2xhdGlvbnMiLCJ2aWV3IiwibG9va3VwQ29sdW1ucyIsImZpeGVkQ29sdW1uV2lkdGgiLCJoZWFkZXJQcm9wcyIsImNsYXNzTmFtZSIsIm9uTW91c2VFbnRlciIsIm9uTW91c2VMZWF2ZSIsInVuZml4ZWRDb2x1bW5Jc1NldCIsImZpcnN0SW5kZXhEaXNwbGF5Iiwic29tZSIsImNvbFJlZiIsImhhc093blByb3BlcnR5IiwiZGlzcGxheWVkIiwiY29sSWQiLCJDRUxMX0hFQURFUl9IRUlHSFRfREVOU0UiLCJDRUxMX0hFQURFUl9IRUlHSFQiLCJwYWRkaW5nTGVmdCIsIkRFRkFVTFRfUEFERElORyIsIm1hcCIsImNvbHVtbiIsImZpeGVkIiwiZml4ZWRXaWR0aCIsImZpcnN0Q29sdW1uIiwiZWZmZWN0aXZlVmlldyIsImxlbmd0aCIsImluY2x1ZGVzIiwiaGVhZGVyQ2VsbCIsInJpZ2h0IiwidG9wIiwibm9kZSIsIm9yZGVyQ29sdW1ucyIsIkNFTExfSEVJR0hUX0RFTlNFIiwiQ0VMTF9IRUlHSFQiLCJnZXRfdGhlX25fbmV3X2l0ZW1zIiwicmVwbGFjZSIsIkNvbXBvbmVudCIsInByb3BUeXBlcyIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJudW1iZXIiLCJhcnJheSIsImJvb2wiLCJzdHJpbmciLCJmdW5jIiwib25lT2YiLCJkZWZhdWx0UHJvcHMiLCJ3aXRoVGhlbWUiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOzs7O0FBQ0E7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBRUE7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOztBQUVBOztBQUNBOzs7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YWJsZUhlYWQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvbWZhemlvL2Rldi9wcm9qZWN0cy9oaXBheS1tYXRlcmlhbC11aSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBmaW5kRE9NTm9kZSB9IGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGlzUmVxdWlyZWRJZiBmcm9tICdyZWFjdC1wcm9wdHlwZS1jb25kaXRpb25hbC1yZXF1aXJlJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuXG5pbXBvcnQgeyBUYWJsZUhlYWQsIFRhYmxlUm93LCBUYWJsZUNlbGwgfSBmcm9tICdtYXRlcmlhbC11aS9UYWJsZSc7XG5pbXBvcnQgUGx1c0NpcmNsZUljb24gZnJvbSAnbWRpLW1hdGVyaWFsLXVpL1BsdXNDaXJjbGUnO1xuaW1wb3J0IEljb25CdXR0b24gZnJvbSAnbWF0ZXJpYWwtdWkvSWNvbkJ1dHRvbic7XG5pbXBvcnQgeyBmYWRlIH0gZnJvbSAnbWF0ZXJpYWwtdWkvc3R5bGVzL2NvbG9yTWFuaXB1bGF0b3InO1xuXG5pbXBvcnQgeyB3aXRoU3R5bGVzLCB3aXRoVGhlbWUgfSBmcm9tICcuLi9zdHlsZXMnO1xuaW1wb3J0IEhlYWRlckNlbGwgZnJvbSAnLi9IZWFkZXJDZWxsJztcbmltcG9ydCAqIGFzIGNzdCBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgT3JkZXJDb2x1bW5zIGZyb20gJy4vT3JkZXJDb2x1bW5zJztcbmltcG9ydCB7IE1BTkRBVE9SWV9DT0xVTU5fRVJST1JfTUVTU0FHRSB9IGZyb20gJy4vSGlUYWJsZSc7XG5cbmV4cG9ydCBjb25zdCBzdHlsZXMgPSB0aGVtZSA9PiAoe1xuICAgIHRoZWFkOiB7XG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICBvdmVyZmxvdzogJ3Zpc2libGUnLFxuICAgICAgICB6SW5kZXg6IDEyLFxuICAgIH0sXG4gICAgdGhlYWRGaXhlZFdpZHRoOiB7XG4gICAgICAgIGRpc3BsYXk6ICdibG9jaycgLypzZXBlcmF0ZXMgdGhlIGhlYWRlciBmcm9tIHRoZSBib2R5IGFsbG93aW5nIGl0IHRvIGJlIHBvc2l0aW9uZWQqLyxcbiAgICB9LFxuICAgIHRoZWFkUm93OiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUucGFsZXR0ZS5iYWNrZ3JvdW5kMyxcbiAgICAgICAgekluZGV4OiAxMixcbiAgICB9LFxuICAgIHJpZ2h0U2hhZG93OiB7XG4gICAgICAgIGJvcmRlcldpZHRoOiAnNHB4IDRweCA0cHggMCcsXG4gICAgICAgIGJvcmRlclN0eWxlOiAnc29saWQnLFxuICAgICAgICB3ZWJraXRCb3JkZXJJbWFnZTpcbiAgICAgICAgICAgICctd2Via2l0LWxpbmVhci1ncmFkaWVudChyaWdodCwgcmdiYSg0MiwgNDIsIDQyLCAwLjEpLCByZ2JhKDAsIDAsIDAsIDApKSAxIDEwMCUnLFxuICAgICAgICBtb3pCb3JkZXJJbWFnZTpcbiAgICAgICAgICAgICctbW96LWxpbmVhci1ncmFkaWVudChyaWdodCwgcmdiYSg0MiwgNDIsIDQyLCAwLjEpLCByZ2JhKDAsIDAsIDAsIDApKSAxIDEwMCUnLFxuICAgICAgICBvQm9yZGVySW1hZ2U6ICctby1saW5lYXItZ3JhZGllbnQocmlnaHQsIHJnYmEoNDIsIDQyLCA0MiwgMC4xKSwgcmdiYSgwLCAwLCAwLCAwKSkgMSAxMDAlJyxcbiAgICAgICAgYm9yZGVySW1hZ2U6ICdsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoNDIsIDQyLCA0MiwgMC4xKSwgcmdiYSgwLCAwLCAwLCAwKSkgMSAxMDAlJyxcbiAgICB9LFxuICAgIGJvdHRvbVNoYWRvdzoge1xuICAgICAgICBib3JkZXJXaWR0aDogJzAgMCA0cHggMCcsXG4gICAgICAgIGJvcmRlclN0eWxlOiAnc29saWQnLFxuICAgICAgICB3ZWJraXRCb3JkZXJJbWFnZTpcbiAgICAgICAgICAgICctd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsIHJnYmEoMCwwLDAsIDAuMDgpIDAlLCByZ2JhKDAsMCwwLCAwKSAxMDAlKScsXG4gICAgICAgIG1vekJvcmRlckltYWdlOiAnLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCByZ2JhKDAsMCwwLCAwLjA4KSwgcmdiYSgwLDAsMCwgMCkgMSAxMDAlKScsXG4gICAgICAgIG9Cb3JkZXJJbWFnZTogJy1vLWxpbmVhci1ncmFkaWVudCh0b3AsIHJnYmEoMCwwLDAsIDAuMDgpLCByZ2JhKDAsIDAsIDAsIDApKSAxIDEwMCUnLFxuICAgICAgICBib3JkZXJJbWFnZTogJ2xpbmVhci1ncmFkaWVudCh0byB0b3AsIHJnYmEoMCwgMCwgMCwgMC4wOCksIHJnYmEoMCwgMCwgMCwgMCkpIDEgMTAwJScsXG4gICAgfSxcbiAgICBvcmRlckNvbHVtbnNJY29uOiB7XG4gICAgICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS5uZXV0cmFsLm5vcm1hbCxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5wYWxldHRlLmJhY2tncm91bmQzLFxuICAgICAgICAnJjpob3Zlcic6IHtcbiAgICAgICAgICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlLmJ1c2luZXNzLnByaW1hcnkubm9ybWFsLFxuICAgICAgICB9LFxuICAgIH0sXG4gICAgbGl2ZURhdGFSb3c6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBmYWRlKHRoZW1lLnBhbGV0dGUuYnVzaW5lc3MucHJpbWFyeS5ub3JtYWwsIDAuMDgpLFxuICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgIH0sXG4gICAgbGl2ZURhdGFDb250ZW50OiB7XG4gICAgICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICAgICBmb250U2l6ZTogMTMsXG4gICAgICAgIGZvbnRGYW1pbHk6ICdSb2JvdG8nLFxuICAgICAgICBmb250V2VpZ2h0OiA0MDAsXG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS5idXNpbmVzcy5wcmltYXJ5Lm5vcm1hbCxcbiAgICB9LFxuICAgIHBhdGNoRGl2OiB7XG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgIHBhZGRpbmdSaWdodDogMCxcbiAgICAgICAgcGFkZGluZ1RvcDogMCxcbiAgICAgICAgcGFkZGluZ0JvdHRvbTogMCxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIHpJbmRleDogMTQsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ2luaGVyaXQnLFxuICAgIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IFNPUlRFRF9DT0xVTU5fRVJST1JfTUVTU0FHRSA9XG4gICAgJ1ZvdXMgZGV2ZXogc2Fpc2lyIGxhIHByb3ByacOpdMOpIFwic29ydGVkQ29sdW1uSWRcIiBwb3VyIGxlcyB0YWJsZWF1eCBcInNvcnRhYmxlXCInO1xuXG4vKipcbiAqIEhpVGFibGUgSGVhZFxuICogSGFuZGxlIGhlYWRlciByb3cgY3JlYXRpb24gYW5kIHVwZGF0ZSBmcm9tIG9yZGVyZWRDb2x1bW5zICYgY29sdW1uc1xuICovXG5jbGFzcyBIaVRhYmxlSGVhZCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVzZWZ1bCB0byBleHRlbmQgdGhlIHN0eWxlIGFwcGxpZWQgdG8gY29tcG9uZW50cy5cbiAgICAgICAgICovXG4gICAgICAgIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb2xvbm5lcyBkdSB0YWJsZWF1IChsYWJlbCwgbGFyZ2V1ciwgZG9ubsOpZXMsIC4uLiApXG4gICAgICAgICAqL1xuICAgICAgICBjb2x1bW5zOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBOb21icmUgZGUgbm91dmVsbGVzIGRvbm7DqWVzIGRpc3BvbmlibGVzIChsaXZlKVxuICAgICAgICAgKi9cbiAgICAgICAgY291bnRMaXZlRGF0YXM6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUYWJsZWF1IGRlcyBkb25uw6llc1xuICAgICAgICAgKi9cbiAgICAgICAgZGF0YVNvdXJjZTogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZW5zaXTDqSBkJ2FmZmljaGFnZSAoam91ZSBzdXIgbGEgaGF1dGV1ciBkZXMgbGlnbmVzKVxuICAgICAgICAgKi9cbiAgICAgICAgZGVuc2U6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogQWN0aXZlIGxlIGZpbHRyZSBzdXIgbGVzIGNvbG9ubmVzIGZpbHRyYWJsZXNcbiAgICAgICAgICovXG4gICAgICAgIGZpbHRlcmFibGU6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogRml4ZSBsYSB0YWlsbGUgZGVzIGNvbG9ubmVzIHNlbG9uIGxlIHR5cGUgZGUgdnVlXG4gICAgICAgICAqIFNpbm9uIGxlcyBjb2xvbm5lcyBzJ2FkYXB0ZW50IMOgIGwnZXNwYWNlIGRpc3BvbmlibGVcbiAgICAgICAgICovXG4gICAgICAgIGZpeGVkQ29sdW1uV2lkdGg6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogSWRlbnRpZmlhbnQgZGUgbGEgb3UgZGVzIGNvbG9ubmVzIHN1ciBsYS9sZXNxdWVsbGVzIGlsIHkgYSB1bmUgJ2xvb2t1cCcgc2VhcmNoXG4gICAgICAgICAqL1xuICAgICAgICBsb29rdXBDb2x1bW5zOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQb3VyIGxlcyB0YWJsZWF1eCBcIm9yZGVyYWJsZVwiIHVuaXF1ZW1lbnQgOlxuICAgICAgICAgKiBJZCBkZSBsYSBjb2xvbm5lIG9ibGlnYXRvaXJlLFxuICAgICAgICAgKiBlbGxlIHNlcmEgdG91am91cnMgYWZmaWNow6llIGRhbnMgbGUgdGFibGVhdSBldCBuZSBwb3VycmEgcGFzIMOqdHJlIGNhY2jDqWUuXG4gICAgICAgICAqL1xuICAgICAgICBtYW5kYXRvcnlDb2x1bW5JZDogaXNSZXF1aXJlZElmKFxuICAgICAgICAgICAgUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgICAgICAgIHByb3BzID0+IHByb3BzLmhhc093blByb3BlcnR5KCdvcmRlcmFibGUnKSAmJiBwcm9wcy5vcmRlcmFibGUgPT09IHRydWUsXG4gICAgICAgICAgICBNQU5EQVRPUllfQ09MVU1OX0VSUk9SX01FU1NBR0UsXG4gICAgICAgICksXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayBzdXIgbCdvcmRyZSBkZXMgY29sb25uZXNcbiAgICAgICAgICovXG4gICAgICAgIG9uQ29sdW1uc09yZGVyVXBkYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIHN1ciBsZSBmaWx0cmUgZCd1bmUgY29sb25uZVxuICAgICAgICAgKiBQYXNzZSBsJ2lkIGRlIGxhIGNvbG9ubmUgZXQgbGEgbGlzdGUgZGVzIGlkIGRlcyDDqWzDqW1lbnRzIGluY2x1c1xuICAgICAgICAgKi9cbiAgICAgICAgb25GaWx0ZXJDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICAvKipcbiAgICAgICAgICogRm9uY3Rpb24gZGUgY2FsbGJhY2sgcmVxdcOpcmFudCBsJ2FmZmljaGFnZSBkZXMgbm91dmVsbGVzIGRvbm7DqWVzIChsaXZlKVxuICAgICAgICAgKi9cbiAgICAgICAgb25SZXF1ZXN0TGl2ZURhdGFzOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIHN1ciBsZSB0cmkgZCd1bmUgY29sb25uZVxuICAgICAgICAgKiBQYXNzZSBsJ2lkIGRlIGxhIGNvbG9ubmUgZXQgbGEgZGlyZWN0aW9uIGR1IHRyaSAob3UgZmFsc2Ugc2kgdHJpIHBhciBkw6lmYXV0KVxuICAgICAgICAgKi9cbiAgICAgICAgb25Tb3J0OiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEwndXRpbGlzYXRldXIgcGV1dCBjaGFuZ2VyIGwnb3JkcmUgZGVzIGNvbG9ubmVzLCBsZXMgYWZmaWNoZXIgb3Ugbm9uLFxuICAgICAgICAgKiBldCBjaGFuZ2VyIGxhIHZ1ZSBkZSBjaGFxdWUgY29sb25uZSAoc21hbGwsIG1lZGl1bSwgbGFyZ2UpLlxuICAgICAgICAgKi9cbiAgICAgICAgb3JkZXJhYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRhYmxlYXUgZGVzIGNvbG9ubmVzIGFmZmljaMOpZXMgKG9yZG9ubsOpZXMsIHZpc2libGVzL2NhY2jDqWVzLCBsL20vcylcbiAgICAgICAgICovXG4gICAgICAgIG9yZGVyZWRDb2x1bW5zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFt2MiAtIMOgIHZlbmlyXSBMZXMgbGlnbmVzIHNvbnQgc8OpbGVjdGlvbm5hYmxlcyAoYWZmaWNoYWdlIGQndW5lIGNoZWNrYm94KVxuICAgICAgICAgKi9cbiAgICAgICAgc2VsZWN0YWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMaXN0ZSBkZXMgaWQgZGVzIGxpZ25lcyBzw6lsZWN0aW9ubsOpZXNcbiAgICAgICAgICovXG4gICAgICAgIHNlbGVjdGVkSWRMaXN0OiBQcm9wVHlwZXMuYXJyYXksXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBY3RpdmUgbGUgdHJpIHN1ciBsZXMgY29sb25uZXNcbiAgICAgICAgICovXG4gICAgICAgIHNvcnRhYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNlbnMgZHUgdHJpXG4gICAgICAgICAqL1xuICAgICAgICBzb3J0RGlyZWN0aW9uOiBQcm9wVHlwZXMub25lT2YoWydhc2MnLCAnZGVzYyddKSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElkIGRlIGxhIGNvbG9ubmUgdHJpw6lcbiAgICAgICAgICovXG4gICAgICAgIHNvcnRlZENvbHVtbklkOiBpc1JlcXVpcmVkSWYoXG4gICAgICAgICAgICBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICAgICAgcHJvcHMgPT4gcHJvcHMuaGFzT3duUHJvcGVydHkoJ3NvcnRhYmxlJykgJiYgcHJvcHMuc29ydGFibGUgPT09IHRydWUsXG4gICAgICAgICAgICBTT1JURURfQ09MVU1OX0VSUk9SX01FU1NBR0UsXG4gICAgICAgICksXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGaXhlIGxhIHByZW1pw6hyZSBjb2xvbm5lXG4gICAgICAgICAqL1xuICAgICAgICBzdGlja3k6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogVHJhZHVjdGlvbiBkZXMgY2hhw65uZXMgYWZmaWNow6llc1xuICAgICAgICAgKi9cbiAgICAgICAgdHJhbnNsYXRpb25zOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgICAvKipcbiAgICAgICAgICogVGFpbGxlIGR1IHRhYmxlYXUgKEwvTS9TKSxcbiAgICAgICAgICogZMOpZmluaXQgbCdlc3BhY2UgZW50cmUgbGVzIGNlbGx1bGVzIGV0IGxldXJzIHRhaWxsZXMgcGFyIGRlZmF1bHRcbiAgICAgICAgICovXG4gICAgICAgIHZpZXc6IFByb3BUeXBlcy5vbmVPZihbJ2wnLCAnbScsICdzJ10pLFxuICAgIH07XG5cbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcbiAgICAgICAgc2VsZWN0ZWRJZExpc3Q6IFtdLFxuICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgc29ydERpcmVjdGlvbjogJ2FzYycsXG4gICAgICAgIGZpbHRlcmFibGU6IGZhbHNlLFxuICAgICAgICBvcmRlcmFibGU6IGZhbHNlLFxuICAgICAgICBjb3VudExpdmVEYXRhczogMCxcbiAgICAgICAgZGVuc2U6IGZhbHNlLFxuICAgICAgICBzdGlja3k6IHRydWUsXG4gICAgICAgIHRyYW5zbGF0aW9uczoge1xuICAgICAgICAgICAgZ2V0X3RoZV9uX25ld19pdGVtczogJ0dldCB0aGUgJXMgbmV3IGl0ZW1zJyxcbiAgICAgICAgfSxcbiAgICAgICAgdmlldzogJ2wnLFxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBob3ZlcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIG9wZW5lZE9yZGVyQ29sdW1uczogZmFsc2UsXG4gICAgICAgICAgICBvcmRlckNvbHVtbnNBbmNob3JFbDogbnVsbCxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmhhbmRsZUV2ZW50ID0gdGhpcy5oYW5kbGVFdmVudC5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZU9wZW5PcmRlckNvbHVtbnMgPSB0aGlzLmhhbmRsZU9wZW5PcmRlckNvbHVtbnMuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVDbG9zZU9yZGVyQ29sdW1ucyA9IHRoaXMuaGFuZGxlQ2xvc2VPcmRlckNvbHVtbnMuYmluZCh0aGlzKTtcbiAgICB9XG5cbiAgICBoYW5kbGVFdmVudCh7IHR5cGUgfSkge1xuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ21vdXNlZW50ZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFN0YXRlKHsgaG92ZXJlZDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIGNhc2UgJ21vdXNlbGVhdmUnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNldFN0YXRlKHsgaG92ZXJlZDogZmFsc2UgfSk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBjb25zb2xlLndhcm4oYE5vIGNhc2UgZm9yIGV2ZW50IHR5cGUgXCIke3R5cGV9XCJgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZU9wZW5PcmRlckNvbHVtbnMoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgb3BlbmVkT3JkZXJDb2x1bW5zOiB0cnVlLFxuICAgICAgICAgICAgb3JkZXJDb2x1bW5zQW5jaG9yRWw6IGZpbmRET01Ob2RlKHRoaXMub3JkZXJDb2x1bW5zQnV0dG9uKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaGFuZGxlQ2xvc2VPcmRlckNvbHVtbnMoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgaG92ZXJlZDogZmFsc2UsXG4gICAgICAgICAgICBvcGVuZWRPcmRlckNvbHVtbnM6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvcmRlckNvbHVtbnNCdXR0b24gPSBudWxsO1xuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjbGFzc2VzLFxuICAgICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgICAgIG9yZGVyZWRDb2x1bW5zLFxuICAgICAgICAgICAgZGF0YVNvdXJjZSxcbiAgICAgICAgICAgIGZpbHRlcmFibGUsXG4gICAgICAgICAgICBvbkZpbHRlckNoYW5nZSxcbiAgICAgICAgICAgIG9yZGVyYWJsZSxcbiAgICAgICAgICAgIG9uQ29sdW1uc09yZGVyVXBkYXRlLFxuICAgICAgICAgICAgbWFuZGF0b3J5Q29sdW1uSWQsXG4gICAgICAgICAgICBzZWxlY3RhYmxlLFxuICAgICAgICAgICAgb25TZWxlY3QsXG4gICAgICAgICAgICBzZWxlY3RlZElkTGlzdCxcbiAgICAgICAgICAgIHNvcnRhYmxlLFxuICAgICAgICAgICAgb25Tb3J0LFxuICAgICAgICAgICAgc29ydGVkQ29sdW1uSWQsXG4gICAgICAgICAgICBzb3J0RGlyZWN0aW9uLFxuICAgICAgICAgICAgY291bnRMaXZlRGF0YXMsXG4gICAgICAgICAgICBvblJlcXVlc3RMaXZlRGF0YXMsXG4gICAgICAgICAgICBkZW5zZSxcbiAgICAgICAgICAgIHN0aWNreSxcbiAgICAgICAgICAgIHRyYW5zbGF0aW9ucyxcbiAgICAgICAgICAgIHZpZXcsXG4gICAgICAgICAgICBsb29rdXBDb2x1bW5zLFxuICAgICAgICAgICAgZml4ZWRDb2x1bW5XaWR0aCxcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3QgeyBob3ZlcmVkLCBvcGVuZWRPcmRlckNvbHVtbnMsIG9yZGVyQ29sdW1uc0FuY2hvckVsIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgICAgIGxldCBoZWFkZXJQcm9wcyA9IHtcbiAgICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lcyhjbGFzc2VzLnRoZWFkLCB7XG4gICAgICAgICAgICAgICAgW2NsYXNzZXMudGhlYWRGaXhlZFdpZHRoXTogZml4ZWRDb2x1bW5XaWR0aCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLi4uKG9yZGVyYWJsZSAmJiB7IG9uTW91c2VFbnRlcjogdGhpcy5oYW5kbGVFdmVudCwgb25Nb3VzZUxlYXZlOiB0aGlzLmhhbmRsZUV2ZW50IH0pLFxuICAgICAgICB9O1xuXG4gICAgICAgIGxldCB1bmZpeGVkQ29sdW1uSXNTZXQgPSBmYWxzZSxcbiAgICAgICAgICAgIGZpcnN0SW5kZXhEaXNwbGF5O1xuXG4gICAgICAgIG9yZGVyZWRDb2x1bW5zLnNvbWUoY29sUmVmID0+IHtcbiAgICAgICAgICAgIGlmICghY29sUmVmLmhhc093blByb3BlcnR5KCdkaXNwbGF5ZWQnKSB8fCBjb2xSZWYuZGlzcGxheWVkKSB7XG4gICAgICAgICAgICAgICAgZmlyc3RJbmRleERpc3BsYXkgPSBjb2xSZWYuY29sSWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8VGFibGVIZWFkIHsuLi5oZWFkZXJQcm9wc30+XG4gICAgICAgICAgICAgICAgPFRhYmxlUm93XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy50aGVhZFJvd31cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogZGVuc2UgPyBjc3QuQ0VMTF9IRUFERVJfSEVJR0hUX0RFTlNFIDogY3N0LkNFTExfSEVBREVSX0hFSUdIVCxcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHsvKiBMZWZ0IHBhZGRpbmcgY2VsbCAqL31cbiAgICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXsnaGVhZGVyLWxlZnQtY2VsbCd9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMucGF0Y2hEaXZ9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBwYWRkaW5nTGVmdDogY3N0LkRFRkFVTFRfUEFERElOR1t2aWV3XSB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgIHtvcmRlcmVkQ29sdW1ucy5tYXAoY29sUmVmID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29sUmVmLmhhc093blByb3BlcnR5KCdkaXNwbGF5ZWQnKSB8fCBjb2xSZWYuZGlzcGxheWVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbHVtbiA9IGNvbHVtbnNbY29sUmVmLmNvbElkXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBmaXJzdCBub24gZml4ZWQgY29sdW1uIGlzIHRoZSBvbmx5IG9uZSBub3QgZml4ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZml4ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdW5maXhlZENvbHVtbklzU2V0ICYmIGNvbHVtbi5maXhlZFdpZHRoICE9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZml4ZWRDb2x1bW5Jc1NldCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpcnN0Q29sdW1uID0gY29sUmVmLmNvbElkID09PSBmaXJzdEluZGV4RGlzcGxheTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlZmZlY3RpdmVWaWV3ID0gY29sUmVmLmhhc093blByb3BlcnR5KCd2aWV3JykgPyBjb2xSZWYudmlldyA6IHZpZXc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGVhZGVyQ2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXsnaGVhZGVyLScgKyBjb2x1bW4uY29sSWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xJZD17Y29sdW1uLmNvbElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT17Y29sdW1uWydmb3JtVHlwZSddIHx8IGNvbHVtblsndHlwZSddfSAvLyBkZWZpbmUgc2VsZWN0IGl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17Y29sdW1uWydsYWJlbCddfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxUaXRsZT17Y29sdW1uWydyZWR1Y2VkTGFiZWwnXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGFibGU9e2ZpcnN0Q29sdW1uICYmIHNlbGVjdGFibGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJZExpc3QubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNlbGVjdGVkSWRMaXN0Lmxlbmd0aCA9PT0gZGF0YVNvdXJjZS5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdtaXhlZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e29uU2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGFibGU9e3NvcnRhYmxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkPXtzb3J0ZWRDb2x1bW5JZCA9PT0gY29sdW1uLmNvbElkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydERpcmVjdGlvbj17c29ydERpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU29ydD17b25Tb3J0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyYWJsZT17ZmlsdGVyYWJsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclNvdXJjZT17Y29sdW1uWydkYXRhJ119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbHRlckNoYW5nZT17b25GaWx0ZXJDaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3PXtlZmZlY3RpdmVWaWV3fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZz17Y3N0LkRFRkFVTFRfUEFERElOR1t2aWV3XX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbnNlPXtkZW5zZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPXtjb2x1bW5bJ3dpZHRoJ119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZFdpZHRoPXtmaXhlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduPXtjb2x1bW5bJ2FsaWduJ119XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlja3k9e2ZpcnN0Q29sdW1uICYmIHN0aWNreX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2tlZFVwPXtsb29rdXBDb2x1bW5zLmluY2x1ZGVzKGNvbHVtbi5jb2xJZCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZENvbHVtbldpZHRoPXtmaXhlZENvbHVtbldpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25zPXt0cmFuc2xhdGlvbnMuaGVhZGVyQ2VsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KX1cblxuICAgICAgICAgICAgICAgICAgICB7LyogUmlnaHQgcGFkZGluZyBjZWxsICsgb3JkZXJDb2x1bW5zSWNvbiBvbiBob3ZlciAqL31cbiAgICAgICAgICAgICAgICAgICAgPFRhYmxlQ2VsbFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXsnaGVhZGVyLXJpZ2h0LWNlbGwnfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnBhdGNoRGl2fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgcGFkZGluZ0xlZnQ6IGNzdC5ERUZBVUxUX1BBRERJTkdbdmlld10gfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge29yZGVyYWJsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyZWQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3A6IGRlbnNlID8gLTQgOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17bm9kZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcmRlckNvbHVtbnNCdXR0b24gPSBub2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlT3Blbk9yZGVyQ29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNDaXJjbGVJY29uIGNsYXNzTmFtZT17Y2xhc3Nlcy5vcmRlckNvbHVtbnNJY29ufSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICAgICAgICAgICAge29yZGVyYWJsZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE9yZGVyQ29sdW1uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc09wZW49e29wZW5lZE9yZGVyQ29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbG9zZT17dGhpcy5oYW5kbGVDbG9zZU9yZGVyQ29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yRWw9e29yZGVyQ29sdW1uc0FuY2hvckVsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVPcmRlcmVkQ29sdW1ucz17b25Db2x1bW5zT3JkZXJVcGRhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM9e2NvbHVtbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyZWRDb2x1bW5zPXtvcmRlcmVkQ29sdW1uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuZGF0b3J5Q29sdW1uSWQ9e21hbmRhdG9yeUNvbHVtbklkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbnM9e3RyYW5zbGF0aW9ucy5vcmRlckNvbHVtbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICAgICAgICAgIDwvVGFibGVSb3c+XG5cbiAgICAgICAgICAgICAgICB7Y291bnRMaXZlRGF0YXMgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgPFRhYmxlUm93XG4gICAgICAgICAgICAgICAgICAgICAgICBpZD17J25iLW5ldy1yb3dzJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5saXZlRGF0YVJvd31cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBkZW5zZSA/IGNzdC5DRUxMX0hFSUdIVF9ERU5TRSA6IGNzdC5DRUxMX0hFSUdIVCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJsZUNlbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBib3JkZXI6ICdub25lJywgY3Vyc29yOiAncG9pbnRlcicgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xTcGFuPXsxMDAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uUmVxdWVzdExpdmVEYXRhc31cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzZXMubGl2ZURhdGFDb250ZW50fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zbGF0aW9ucy5nZXRfdGhlX25fbmV3X2l0ZW1zLnJlcGxhY2UoJyVzJywgY291bnRMaXZlRGF0YXMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFibGVDZWxsPlxuICAgICAgICAgICAgICAgICAgICA8L1RhYmxlUm93PlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1RhYmxlSGVhZD5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZXMoc3R5bGVzLCB7IHdpdGhUaGVtZTogdHJ1ZSwgbmFtZTogJ0htdWlIaVRhYmxlSGVhZCcgfSkoSGlUYWJsZUhlYWQpO1xuIl19
|
134014
134058
|
|
134015
134059
|
/***/ }),
|
134016
134060
|
/* 2630 */
|
@@ -134173,7 +134217,7 @@ var HeaderCell = function (_React$PureComponent) {
|
|
134173
134217
|
|
134174
134218
|
_this.onFilterClick = _this.onFilterClick.bind(_this);
|
134175
134219
|
_this.openFilterMenu = _this.openFilterMenu.bind(_this);
|
134176
|
-
_this.
|
134220
|
+
_this.handleClose = _this.handleClose.bind(_this);
|
134177
134221
|
_this.handleSort = _this.handleSort.bind(_this);
|
134178
134222
|
_this.handleFilterChange = _this.handleFilterChange.bind(_this);
|
134179
134223
|
return _this;
|
@@ -134189,8 +134233,8 @@ var HeaderCell = function (_React$PureComponent) {
|
|
134189
134233
|
});
|
134190
134234
|
}
|
134191
134235
|
}, {
|
134192
|
-
key: '
|
134193
|
-
value: function
|
134236
|
+
key: 'handleClose',
|
134237
|
+
value: function handleClose() {
|
134194
134238
|
this.setState({ filterOpen: false, anchorEl: null, menuFilters: [] });
|
134195
134239
|
}
|
134196
134240
|
|
@@ -134235,7 +134279,8 @@ var HeaderCell = function (_React$PureComponent) {
|
|
134235
134279
|
align = _props$align === undefined ? cst.ALIGN_RIGHT_TYPES.includes(type) ? 'right' : 'left' : _props$align,
|
134236
134280
|
sticky = _props.sticky,
|
134237
134281
|
padding = _props.padding,
|
134238
|
-
lookedUp = _props.lookedUp
|
134282
|
+
lookedUp = _props.lookedUp,
|
134283
|
+
translations = _props.translations;
|
134239
134284
|
var _state = this.state,
|
134240
134285
|
filterOpen = _state.filterOpen,
|
134241
134286
|
anchorEl = _state.anchorEl,
|
@@ -134326,7 +134371,7 @@ var HeaderCell = function (_React$PureComponent) {
|
|
134326
134371
|
{
|
134327
134372
|
className: classes.labelContainer + (_sorted ? ' ' + classes.labelContainerOrdered : '')
|
134328
134373
|
},
|
134329
|
-
view !== 's' ? title : smallTitle
|
134374
|
+
view !== 's' ? title : smallTitle || title
|
134330
134375
|
),
|
134331
134376
|
align !== 'right' && _icons
|
134332
134377
|
) : _react2.default.createElement(
|
@@ -134343,7 +134388,7 @@ var HeaderCell = function (_React$PureComponent) {
|
|
134343
134388
|
_react2.default.createElement(
|
134344
134389
|
'span',
|
134345
134390
|
{ className: classes.labelContainer, style: { width: '100%' } },
|
134346
|
-
view !== 's' ? title : smallTitle
|
134391
|
+
view !== 's' ? title : smallTitle || title
|
134347
134392
|
)
|
134348
134393
|
)
|
134349
134394
|
),
|
@@ -134354,11 +134399,12 @@ var HeaderCell = function (_React$PureComponent) {
|
|
134354
134399
|
title: title,
|
134355
134400
|
filterValueList: menuFilters,
|
134356
134401
|
isOpen: filterOpen,
|
134357
|
-
onClose: this.
|
134402
|
+
onClose: this.handleClose,
|
134358
134403
|
anchorEl: anchorEl,
|
134359
134404
|
sortable: sortable,
|
134360
134405
|
onSort: this.handleSort,
|
134361
|
-
onFilterChange: this.handleFilterChange
|
134406
|
+
onFilterChange: this.handleFilterChange,
|
134407
|
+
translations: translations.columnFilter
|
134362
134408
|
})
|
134363
134409
|
);
|
134364
134410
|
}
|
@@ -134368,18 +134414,50 @@ var HeaderCell = function (_React$PureComponent) {
|
|
134368
134414
|
}(_react2.default.PureComponent);
|
134369
134415
|
|
134370
134416
|
HeaderCell.propTypes = {
|
134417
|
+
/**
|
134418
|
+
* Title alignement, est déduit de type par défaut
|
134419
|
+
*/
|
134420
|
+
align: _propTypes2.default.string,
|
134371
134421
|
/**
|
134372
134422
|
* Useful to extend the style applied to components.
|
134373
134423
|
*/
|
134374
134424
|
classes: _propTypes2.default.object,
|
134425
|
+
/**
|
134426
|
+
* Densité, défini la hauteur de la ligne
|
134427
|
+
*/
|
134428
|
+
dense: _propTypes2.default.bool,
|
134429
|
+
/**
|
134430
|
+
* Ajoute le composant ColumnFilter, par défaut à True si filterSource est définie.
|
134431
|
+
*/
|
134432
|
+
filterable: _propTypes2.default.bool,
|
134433
|
+
/**
|
134434
|
+
* Liste fermé des valeurs disponibles sur lesquelles filtrer (inclure/exclure)
|
134435
|
+
*/
|
134436
|
+
filterSource: _propTypes2.default.array,
|
134437
|
+
/**
|
134438
|
+
* La largeur de la cellule est fixé (toutes les colonnes sauf une)
|
134439
|
+
*/
|
134440
|
+
fixedColumnWidth: _propTypes2.default.bool,
|
134375
134441
|
/**
|
134376
134442
|
* Recherche lookup sur cette colonne
|
134377
134443
|
*/
|
134378
134444
|
lookedUp: _propTypes2.default.bool,
|
134445
|
+
/**
|
134446
|
+
* Padding de la cellule (px)
|
134447
|
+
*/
|
134448
|
+
padding: _propTypes2.default.number,
|
134449
|
+
/**
|
134450
|
+
* Fonction de callback au changement du filtre - passe la liste des id des valeurs incluses
|
134451
|
+
*/
|
134452
|
+
onFilterChange: _propTypes2.default.func,
|
134379
134453
|
/**
|
134380
134454
|
* Fonction de callback au click du select
|
134381
134455
|
*/
|
134382
134456
|
onSelect: _propTypes2.default.func,
|
134457
|
+
/**
|
134458
|
+
* Fonction de callback au tri - passe la direction du tri
|
134459
|
+
*/
|
134460
|
+
onSort: _propTypes2.default.func,
|
134383
134461
|
/**
|
134384
134462
|
* Ajoute une checkbox
|
134385
134463
|
*/
|
@@ -134392,70 +134470,42 @@ HeaderCell.propTypes = {
|
|
134392
134470
|
* Titre condensé
|
134393
134471
|
*/
|
134394
134472
|
smallTitle: _propTypes2.default.string,
|
134395
|
-
/**
|
134396
|
-
* Titre de la colonne
|
134397
|
-
*/
|
134398
|
-
title: _propTypes2.default.string.isRequired,
|
134399
|
-
/**
|
134400
|
-
* Type de cellule
|
134401
|
-
*/
|
134402
|
-
type: _propTypes2.default.string.isRequired,
|
134403
134473
|
/**
|
134404
134474
|
* Ajoute la fonction de tri au click sur le label & dans le ColumnFilter
|
134405
134475
|
*/
|
134406
134476
|
sortable: _propTypes2.default.bool,
|
134407
|
-
/**
|
134408
|
-
* Tri actif / inactif
|
134409
|
-
*/
|
134410
|
-
sorted: _propTypes2.default.bool,
|
134411
134477
|
/**
|
134412
134478
|
* Sens du tri
|
134413
134479
|
*/
|
134414
134480
|
sortDirection: _propTypes2.default.oneOf(['asc', 'desc']),
|
134415
134481
|
/**
|
134416
|
-
*
|
134482
|
+
* Tri actif / inactif
|
134417
134483
|
*/
|
134418
|
-
|
134484
|
+
sorted: _propTypes2.default.bool,
|
134419
134485
|
/**
|
134420
|
-
*
|
134486
|
+
* True si la colonne est la première colonne et doit avoir un comportement "sticky" lors du scroll horizontal
|
134421
134487
|
*/
|
134422
|
-
|
134488
|
+
sticky: _propTypes2.default.bool,
|
134423
134489
|
/**
|
134424
|
-
*
|
134490
|
+
* Titre de la colonne
|
134425
134491
|
*/
|
134426
|
-
|
134492
|
+
title: _propTypes2.default.string.isRequired,
|
134427
134493
|
/**
|
134428
|
-
*
|
134494
|
+
* Traduction des chaînes affichées
|
134429
134495
|
*/
|
134430
|
-
|
134496
|
+
translations: _propTypes2.default.object,
|
134431
134497
|
/**
|
134432
|
-
*
|
134498
|
+
* Type de cellule
|
134433
134499
|
*/
|
134434
|
-
|
134500
|
+
type: _propTypes2.default.string.isRequired,
|
134435
134501
|
/**
|
134436
|
-
*
|
134502
|
+
* View (L/M/S)
|
134437
134503
|
*/
|
134438
|
-
|
134504
|
+
view: _propTypes2.default.oneOf(['l', 'm', 's']),
|
134439
134505
|
/**
|
134440
134506
|
* Largeur de la cellule (hors padding), est déduit de view par défaut
|
134441
134507
|
*/
|
134442
|
-
width: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.string])
|
134443
|
-
/**
|
134444
|
-
* La largeur de la cellule est fixé (toutes les colonnes sauf une)
|
134445
|
-
*/
|
134446
|
-
fixedColumnWidth: _propTypes2.default.bool,
|
134447
|
-
/**
|
134448
|
-
* Title alignement, est déduit de type par défaut
|
134449
|
-
*/
|
134450
|
-
align: _propTypes2.default.string,
|
134451
|
-
/**
|
134452
|
-
* True si la colonne est la première colonne et doit avoir un comportement "sticky" lors du scroll horizontal
|
134453
|
-
*/
|
134454
|
-
sticky: _propTypes2.default.bool,
|
134455
|
-
/**
|
134456
|
-
* Padding de la cellule (px)
|
134457
|
-
*/
|
134458
|
-
padding: _propTypes2.default.number
|
134508
|
+
width: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.string])
|
134459
134509
|
};
|
134460
134510
|
HeaderCell.defaultProps = {
|
134461
134511
|
selectable: false,
|
@@ -134470,7 +134520,7 @@ HeaderCell.defaultProps = {
|
|
134470
134520
|
padding: 8
|
134471
134521
|
};
|
134472
134522
|
exports.default = (0, _styles.withStyles)(styles, { withTheme: true, name: 'HmuiHeaderCell' })(HeaderCell);
|
134473
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9IaVRhYmxlL0hlYWRlckNlbGwuanMiXSwibmFtZXMiOlsiY3N0Iiwic3R5bGVzIiwiY2hlY2tib3giLCJmbG9hdCIsIm1hcmdpbiIsImRlbnNlQ2hlY2tib3giLCJsYWJlbENvbnRhaW5lciIsIndoaXRlU3BhY2UiLCJvdmVyZmxvdyIsInRleHRPdmVyZmxvdyIsInRoZW1lIiwidHlwb2dyYXBoeSIsImJvZHk0IiwiZm9udFdlaWdodCIsImZvbnRXZWlnaHRMaWdodCIsImNvbG9yIiwicGFsZXR0ZSIsIm5ldXRyYWwiLCJkYXJrIiwibGFiZWxDb250YWluZXJPcmRlcmVkIiwiZm9udFdlaWdodFJlZ3VsYXIiLCJmaWx0ZXIiLCJwb3NpdGlvbiIsInRvcCIsImxlZnQiLCJjdXJzb3IiLCJ3aWR0aCIsImhlaWdodCIsInNvcnRlZEJvcmRlciIsImJhY2tncm91bmRDb2xvciIsImJ1c2luZXNzIiwicHJpbWFyeSIsIm5vcm1hbCIsImljb24iLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJ0cmFuc2l0aW9uIiwidHJhbnNpdGlvbnMiLCJjcmVhdGUiLCJkdXJhdGlvbiIsInNob3J0ZXIiLCJ1c2VyU2VsZWN0Iiwic29ydGRlc2MiLCJ0cmFuc2Zvcm0iLCJzb3J0YXNjIiwiZmlsdGVyZGVzYyIsImZpbHRlcmFzYyIsImxvb2tlZFVwIiwiYmFja2dyb3VuZCIsImJvcmRlclJhZGl1cyIsIkhlYWRlckNlbGwiLCJwcm9wcyIsIm9uRmlsdGVyQ2xpY2siLCJldmVudCIsImNvbHVtbkRhdGFzZXQiLCJvcGVuRmlsdGVyTWVudSIsInN0YXRlIiwiZmlsdGVyT3BlbiIsImFuY2hvckVsIiwibWVudUZpbHRlcnMiLCJiaW5kIiwiY2xvc2VGaWx0ZXJNZW51IiwiaGFuZGxlU29ydCIsImhhbmRsZUZpbHRlckNoYW5nZSIsInNldFN0YXRlIiwiY3VycmVudFRhcmdldCIsImRpcmVjdGlvbiIsIm9uU29ydCIsImNvbElkIiwiaXRlbUlkTGlzdCIsIm9uRmlsdGVyQ2hhbmdlIiwiY2xhc3NlcyIsInR5cGUiLCJ0aXRsZSIsInNtYWxsVGl0bGUiLCJzZWxlY3RhYmxlIiwic2VsZWN0ZWQiLCJvblNlbGVjdCIsInNvcnRhYmxlIiwic29ydGVkIiwic29ydERpcmVjdGlvbiIsImZpbHRlcmFibGUiLCJmaWx0ZXJTb3VyY2UiLCJ2aWV3IiwiZGVuc2UiLCJmaXhlZENvbHVtbldpZHRoIiwiYWxpZ24iLCJBTElHTl9SSUdIVF9UWVBFUyIsImluY2x1ZGVzIiwic3RpY2t5IiwicGFkZGluZyIsIm9mZnNldCIsIl93aWR0aCIsIkRFRkFVTFRfV0lEVEhTIiwiX3NvcnRlZCIsIl9maWx0ZXJhYmxlIiwibGVuZ3RoIiwic29ydGVkQm9yZGVyRWxlbWVudCIsInNvcnRJY29uQ2xhc3NOYW1lIiwiZmlsdGVySWNvbkNsYXNzTmFtZSIsIl9pY29ucyIsImxvb2tlZFVwQ2xhc3NOYW1lIiwiY2VsbFN0eWxlIiwiekluZGV4IiwidGV4dEFsaWduIiwibWF4V2lkdGgiLCJtaW5XaWR0aCIsInJvb3QiLCJkaXNwbGF5IiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsImp1c3RpZnlDb250ZW50IiwiUHVyZUNvbXBvbmVudCIsInByb3BUeXBlcyIsIm9iamVjdCIsImJvb2wiLCJmdW5jIiwib25lT2YiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwiYXJyYXkiLCJvbmVPZlR5cGUiLCJudW1iZXIiLCJkZWZhdWx0UHJvcHMiLCJ3aXRoVGhlbWUiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBRUE7Ozs7QUFDQTs7QUFDQTs7OztBQUNBOztJQUFZQSxHOzs7Ozs7Ozs7Ozs7OztBQUVMLElBQU1DLDBCQUFTLFNBQVRBLE1BQVM7QUFBQSxXQUFVO0FBQzVCQyxrQkFBVTtBQUNOQyxtQkFBTyxNQUREO0FBRU5DLG9C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QUFPLG9CQUFVaUMsSUFwRUY7QUFxRWY7OztBQUdBM0YsV0FBTyxvQkFBVWlHLFNBQVYsQ0FBb0IsQ0FBQyxvQkFBVUMsTUFBWCxFQUFrQixvQkFBVUosTUFBNUIsQ0FBcEIsQ0F4RVE7QUF5RWY7OztBQUdBbkMsc0JBQWtCLG9CQUFVZ0MsSUE1RWI7QUE2RWY7OztBQUdBL0IsV0FBTyxvQkFBVWtDLE1BaEZGO0FBaUZmOzs7QUFHQS9CLFlBQVEsb0JBQVU0QixJQXBGSDtBQXFGZjs7O0FBR0EzQixhQUFTLG9CQUFVa0M7QUF4RkosQztBQURqQjFFLFUsQ0E0RksyRSxZLEdBQWU7QUFDbEJsRCxnQkFBWSxLQURNO0FBRWxCQyxjQUFVLEtBRlE7QUFHbEJFLGNBQVUsS0FIUTtBQUlsQkMsWUFBUSxLQUpVO0FBS2xCQyxtQkFBZSxLQUxHO0FBTWxCRyxVQUFNLEdBTlk7QUFPbEJDLFdBQU8sS0FQVztBQVFsQkMsc0JBQWtCLElBUkE7QUFTbEJJLFlBQVEsSUFUVTtBQVVsQkMsYUFBUztBQVZTLEM7a0JBb09YLHdCQUFXekYsTUFBWCxFQUFtQixFQUFFNkgsV0FBVyxJQUFiLEVBQW1CQyxNQUFNLGdCQUF6QixFQUFuQixFQUFnRTdFLFVBQWhFLEMiLCJmaWxlIjoiSGVhZGVyQ2VsbC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9tZmF6aW8vZGV2L3Byb2plY3RzL2hpcGF5LW1hdGVyaWFsLXVpIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBUYWJsZUNlbGwgfSBmcm9tICdtYXRlcmlhbC11aS9UYWJsZSc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBCdXR0b25CYXNlIGZyb20gJ21hdGVyaWFsLXVpL0J1dHRvbkJhc2UnO1xuaW1wb3J0IEZpbHRlclZhcmlhbnRJY29uIGZyb20gJ21kaS1tYXRlcmlhbC11aS9GaWx0ZXJWYXJpYW50JztcbmltcG9ydCBNZW51SWNvbiBmcm9tICdtZGktbWF0ZXJpYWwtdWkvTWVudSc7XG5pbXBvcnQgQXJyb3dEb3dud2FyZEljb24gZnJvbSAnLi4vc3ZnLWljb25zL0Fycm93RG93bndhcmQnO1xuXG5pbXBvcnQgSGlDaGVja2JveCBmcm9tICcuLi9IaUNoZWNrYm94JztcbmltcG9ydCB7IHdpdGhTdHlsZXMsIHdpdGhUaGVtZSB9IGZyb20gJy4uL3N0eWxlcyc7XG5pbXBvcnQgQ29sdW1uRmlsdGVyIGZyb20gJy4vQ29sdW1uRmlsdGVyJztcbmltcG9ydCAqIGFzIGNzdCBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjb25zdCBzdHlsZXMgPSB0aGVtZSA9PiAoe1xuICAgIGNoZWNrYm94OiB7XG4gICAgICAgIGZsb2F0OiAnbGVmdCcsXG4gICAgICAgIG1hcmdpbjogJzEwcHggMTBweCAwcHggMTBweCcsXG4gICAgfSxcbiAgICBkZW5zZUNoZWNrYm94OiB7XG4gICAgICAgIGZsb2F0OiAnbGVmdCcsXG4gICAgICAgIG1hcmdpbjogJzhweCA4cHggMHB4IDdweCcsXG4gICAgfSxcbiAgICBsYWJlbENvbnRhaW5lcjoge1xuICAgICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gICAgICAgIC4uLnRoZW1lLnR5cG9ncmFwaHkuYm9keTQsXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRoZW1lLnR5cG9ncmFwaHkuZm9udFdlaWdodExpZ2h0LFxuICAgICAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS5uZXV0cmFsLmRhcmssXG4gICAgfSxcbiAgICBsYWJlbENvbnRhaW5lck9yZGVyZWQ6IHtcbiAgICAgICAgZm9udFdlaWdodDogdGhlbWUudHlwb2dyYXBoeS5mb250V2VpZ2h0UmVndWxhcixcbiAgICB9LFxuICAgIGZpbHRlcjoge1xuICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgdG9wOiAyLFxuICAgICAgICBsZWZ0OiAyLFxuICAgICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgICAgd2lkdGg6IDE0LFxuICAgICAgICBoZWlnaHQ6IDE0LFxuICAgIH0sXG4gICAgc29ydGVkQm9yZGVyOiB7XG4gICAgICAgIGhlaWdodDogMSxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5wYWxldHRlLmJ1c2luZXNzLnByaW1hcnkubm9ybWFsLFxuICAgIH0sXG4gICAgaWNvbjoge1xuICAgICAgICBoZWlnaHQ6IDE2LFxuICAgICAgICBtYXJnaW5SaWdodDogNCxcbiAgICAgICAgbWFyZ2luTGVmdDogNCxcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICAgIHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZShbJ29wYWNpdHknLCAndHJhbnNmb3JtJ10sIHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRlcixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gICAgICAgIHdpZHRoOiAxNixcbiAgICB9LFxuICAgIHByaW1hcnk6IHtcbiAgICAgICAgY29sb3I6IHRoZW1lLnBhbGV0dGUuYnVzaW5lc3MucHJpbWFyeS5ub3JtYWwsXG4gICAgfSxcbiAgICBzb3J0ZGVzYzoge1xuICAgICAgICB0cmFuc2Zvcm06ICdyb3RhdGUoMGRlZyknLFxuICAgIH0sXG4gICAgc29ydGFzYzoge1xuICAgICAgICB0cmFuc2Zvcm06ICdyb3RhdGUoMTgwZGVnKScsXG4gICAgfSxcbiAgICBmaWx0ZXJkZXNjOiB7XG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKDEsMSknLFxuICAgIH0sXG4gICAgZmlsdGVyYXNjOiB7XG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKDEsLTEpJyxcbiAgICB9LFxuICAgIGxvb2tlZFVwOiB7XG4gICAgICAgIGJhY2tncm91bmQ6IGBsaW5lYXItZ3JhZGllbnQoMGRlZywgdHJhbnNwYXJlbnQgMjUlLCAjRkZGRjhEIDEwJSwgI0ZGRkY4RCA3NSUsIHRyYW5zcGFyZW50IDMwJSlgLFxuICAgICAgICBib3JkZXJSYWRpdXM6ICc0NSUnLFxuICAgIH0sXG59KTtcblxuLyoqXG4gKiBDb25zdHJ1aXQgdW5lIGNlbGx1bGUgZCdlbnTDqnRlIGF2ZWMgbGUgdGl0cmUsIGNsaWNrYWJsZSwgdHJpYWJsZSBldCBmaWx0cmFibGVcbiAqL1xuY2xhc3MgSGVhZGVyQ2VsbCBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQge1xuICAgIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVc2VmdWwgdG8gZXh0ZW5kIHRoZSBzdHlsZSBhcHBsaWVkIHRvIGNvbXBvbmVudHMuXG4gICAgICAgICAqL1xuICAgICAgICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgICAvKipcbiAgICAgICAgICogUmVjaGVyY2hlIGxvb2t1cCBzdXIgY2V0dGUgY29sb25uZVxuICAgICAgICAgKi9cbiAgICAgICAgbG9va2VkVXA6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogRm9uY3Rpb24gZGUgY2FsbGJhY2sgYXUgY2xpY2sgZHUgc2VsZWN0XG4gICAgICAgICAqL1xuICAgICAgICBvblNlbGVjdDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBam91dGUgdW5lIGNoZWNrYm94XG4gICAgICAgICAqL1xuICAgICAgICBzZWxlY3RhYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIMOJdGF0IGRlIGxhIGNoZWNrYm94XG4gICAgICAgICAqL1xuICAgICAgICBzZWxlY3RlZDogUHJvcFR5cGVzLm9uZU9mKFt0cnVlLCBmYWxzZSwgJ21peGVkJ10pLFxuICAgICAgICAvKipcbiAgICAgICAgICogVGl0cmUgY29uZGVuc8OpXG4gICAgICAgICAqL1xuICAgICAgICBzbWFsbFRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICAvKipcbiAgICAgICAgICogVGl0cmUgZGUgbGEgY29sb25uZVxuICAgICAgICAgKi9cbiAgICAgICAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFR5cGUgZGUgY2VsbHVsZVxuICAgICAgICAgKi9cbiAgICAgICAgdHlwZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgICAvKipcbiAgICAgICAgICogQWpvdXRlIGxhIGZvbmN0aW9uIGRlIHRyaSBhdSBjbGljayBzdXIgbGUgbGFiZWwgJiBkYW5zIGxlIENvbHVtbkZpbHRlclxuICAgICAgICAgKi9cbiAgICAgICAgc29ydGFibGU6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogVHJpIGFjdGlmIC8gaW5hY3RpZlxuICAgICAgICAgKi9cbiAgICAgICAgc29ydGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNlbnMgZHUgdHJpXG4gICAgICAgICAqL1xuICAgICAgICBzb3J0RGlyZWN0aW9uOiBQcm9wVHlwZXMub25lT2YoWydhc2MnLCAnZGVzYyddKSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIGF1IHRyaSAtIHBhc3NlIGxhIGRpcmVjdGlvbiBkdSB0cmlcbiAgICAgICAgICovXG4gICAgICAgIG9uU29ydDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBam91dGUgbGUgY29tcG9zYW50IENvbHVtbkZpbHRlciwgcGFyIGTDqWZhdXQgw6AgVHJ1ZSBzaSBmaWx0ZXJTb3VyY2UgZXN0IGTDqWZpbmllLlxuICAgICAgICAgKi9cbiAgICAgICAgZmlsdGVyYWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMaXN0ZSBmZXJtw6kgZGVzIHZhbGV1cnMgZGlzcG9uaWJsZXMgc3VyIGxlc3F1ZWxsZXMgZmlsdHJlciAoaW5jbHVyZS9leGNsdXJlKVxuICAgICAgICAgKi9cbiAgICAgICAgZmlsdGVyU291cmNlOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayBhdSBjaGFuZ2VtZW50IGR1IGZpbHRyZSAtIHBhc3NlIGxhIGxpc3RlIGRlcyBpZCBkZXMgdmFsZXVycyBpbmNsdXNlc1xuICAgICAgICAgKi9cbiAgICAgICAgb25GaWx0ZXJDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICAvKipcbiAgICAgICAgICogVmlldyAoTC9NL1MpXG4gICAgICAgICAqL1xuICAgICAgICB2aWV3OiBQcm9wVHlwZXMub25lT2YoWydsJywgJ20nLCAncyddKSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlbnNpdMOpLCBkw6lmaW5pIGxhIGhhdXRldXIgZGUgbGEgbGlnbmVcbiAgICAgICAgICovXG4gICAgICAgIGRlbnNlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExhcmdldXIgZGUgbGEgY2VsbHVsZSAoaG9ycyBwYWRkaW5nKSwgZXN0IGTDqWR1aXQgZGUgdmlldyBwYXIgZMOpZmF1dFxuICAgICAgICAgKi9cbiAgICAgICAgd2lkdGg6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsUHJvcFR5cGVzLnN0cmluZ10pLFxuICAgICAgICAvKipcbiAgICAgICAgICogTGEgbGFyZ2V1ciBkZSBsYSBjZWxsdWxlIGVzdCBmaXjDqSAodG91dGVzIGxlcyBjb2xvbm5lcyBzYXVmIHVuZSlcbiAgICAgICAgICovXG4gICAgICAgIGZpeGVkQ29sdW1uV2lkdGg6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogVGl0bGUgYWxpZ25lbWVudCwgZXN0IGTDqWR1aXQgZGUgdHlwZSBwYXIgZMOpZmF1dFxuICAgICAgICAgKi9cbiAgICAgICAgYWxpZ246IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUcnVlIHNpIGxhIGNvbG9ubmUgZXN0IGxhIHByZW1pw6hyZSBjb2xvbm5lIGV0IGRvaXQgYXZvaXIgdW4gY29tcG9ydGVtZW50IFwic3RpY2t5XCIgbG9ycyBkdSBzY3JvbGwgaG9yaXpvbnRhbFxuICAgICAgICAgKi9cbiAgICAgICAgc3RpY2t5OiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFBhZGRpbmcgZGUgbGEgY2VsbHVsZSAocHgpXG4gICAgICAgICAqL1xuICAgICAgICBwYWRkaW5nOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIH07XG5cbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgICBzZWxlY3RhYmxlOiBmYWxzZSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICAgIHNvcnRlZDogZmFsc2UsXG4gICAgICAgIHNvcnREaXJlY3Rpb246ICdhc2MnLFxuICAgICAgICB2aWV3OiAnbCcsXG4gICAgICAgIGRlbnNlOiBmYWxzZSxcbiAgICAgICAgZml4ZWRDb2x1bW5XaWR0aDogdHJ1ZSxcbiAgICAgICAgc3RpY2t5OiB0cnVlLFxuICAgICAgICBwYWRkaW5nOiA4LFxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGZpbHRlck9wZW46IGZhbHNlLFxuICAgICAgICAgICAgYW5jaG9yRWw6IG51bGwsXG4gICAgICAgICAgICBtZW51RmlsdGVyczogW10sXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5vbkZpbHRlckNsaWNrID0gdGhpcy5vbkZpbHRlckNsaWNrLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMub3BlbkZpbHRlck1lbnUgPSB0aGlzLm9wZW5GaWx0ZXJNZW51LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuY2xvc2VGaWx0ZXJNZW51ID0gdGhpcy5jbG9zZUZpbHRlck1lbnUuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVTb3J0ID0gdGhpcy5oYW5kbGVTb3J0LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlRmlsdGVyQ2hhbmdlID0gdGhpcy5oYW5kbGVGaWx0ZXJDaGFuZ2UuYmluZCh0aGlzKTtcbiAgICB9XG5cbiAgICBvbkZpbHRlckNsaWNrID0gKGV2ZW50LCBjb2x1bW5EYXRhc2V0KSA9PiB7XG4gICAgICAgIHRoaXMub3BlbkZpbHRlck1lbnUoZXZlbnQsIGNvbHVtbkRhdGFzZXQpO1xuICAgIH07XG5cbiAgICBvcGVuRmlsdGVyTWVudShldmVudCwgY29sdW1uRGF0YXNldCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIGZpbHRlck9wZW46IHRydWUsXG4gICAgICAgICAgICBhbmNob3JFbDogZXZlbnQuY3VycmVudFRhcmdldCxcbiAgICAgICAgICAgIG1lbnVGaWx0ZXJzOiBjb2x1bW5EYXRhc2V0LFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjbG9zZUZpbHRlck1lbnUoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBmaWx0ZXJPcGVuOiBmYWxzZSwgYW5jaG9yRWw6IG51bGwsIG1lbnVGaWx0ZXJzOiBbXSB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTb3J0IGNvbHVtbiB3aXRoIGRpcmVjdGlvblxuICAgICAqIEBwYXJhbSBkaXJlY3Rpb25cbiAgICAgKi9cbiAgICBoYW5kbGVTb3J0KGRpcmVjdGlvbikge1xuICAgICAgICB0aGlzLnByb3BzLm9uU29ydCh0aGlzLnByb3BzLmNvbElkLCBkaXJlY3Rpb24pO1xuICAgIH1cblxuICAgIGhhbmRsZUZpbHRlckNoYW5nZShpdGVtSWRMaXN0KSB7XG4gICAgICAgIHRoaXMucHJvcHMub25GaWx0ZXJDaGFuZ2UodGhpcy5wcm9wcy5jb2xJZCwgaXRlbUlkTGlzdCk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjbGFzc2VzLFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIHRpdGxlLFxuICAgICAgICAgICAgc21hbGxUaXRsZSxcbiAgICAgICAgICAgIHNlbGVjdGFibGUsXG4gICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgIG9uU2VsZWN0LFxuICAgICAgICAgICAgc29ydGFibGUsXG4gICAgICAgICAgICBzb3J0ZWQsXG4gICAgICAgICAgICBzb3J0RGlyZWN0aW9uLFxuICAgICAgICAgICAgZmlsdGVyYWJsZSxcbiAgICAgICAgICAgIGZpbHRlclNvdXJjZSxcbiAgICAgICAgICAgIHZpZXcsXG4gICAgICAgICAgICBkZW5zZSxcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgZml4ZWRDb2x1bW5XaWR0aCxcbiAgICAgICAgICAgIGFsaWduID0gY3N0LkFMSUdOX1JJR0hUX1RZUEVTLmluY2x1ZGVzKHR5cGUpID8gJ3JpZ2h0JyA6ICdsZWZ0JyxcbiAgICAgICAgICAgIHN0aWNreSxcbiAgICAgICAgICAgIHBhZGRpbmcsXG4gICAgICAgICAgICBsb29rZWRVcCxcbiAgICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3QgeyBmaWx0ZXJPcGVuLCBhbmNob3JFbCwgbWVudUZpbHRlcnMgfSA9IHRoaXMuc3RhdGU7XG5cbiAgICAgICAgbGV0IG9mZnNldCA9IHNlbGVjdGFibGUgPyAoZGVuc2UgPyAzMiA6IDQwKSA6IHBhZGRpbmc7XG5cbiAgICAgICAgLy8gSW5jbHVlIGxlIHBhZGRpbmcgZXQvb3UgbGEgY2hlY2tib3ggZGFucyBsYSBsYXJnZXVyIGRlIGxhIGNlbGx1bGVcbiAgICAgICAgbGV0IF93aWR0aCA9ICh3aWR0aCB8fCBjc3QuREVGQVVMVF9XSURUSFNbdHlwZV1bdmlld10pICsgb2Zmc2V0ICsgcGFkZGluZztcbiAgICAgICAgLy8gTidhZmZpY2hlIHBhcyBsZSB0cmkgc2kgaWwgZXN0IGTDqXNhY3RpdsOpLlxuICAgICAgICBsZXQgX3NvcnRlZCA9IHNvcnRhYmxlICYmIHNvcnRlZDtcbiAgICAgICAgLy8gTidhY3RpdmUgcGFzIGxlIGZpbHRyZSBzaSBpbCBuJ3kgYSBwYXMgZGUgamV1IGRlIGRvbm7DqWUgc3VyIGxlc3F1ZWxsZXMgZmlsdHLDqWVzLlxuICAgICAgICBsZXQgX2ZpbHRlcmFibGUgPVxuICAgICAgICAgICAgZmlsdGVyYWJsZSAmJiB0eXBlb2YgZmlsdGVyU291cmNlICE9PSAndW5kZWZpbmVkJyAmJiBmaWx0ZXJTb3VyY2UubGVuZ3RoID4gMDtcblxuICAgICAgICAvLyBMYSBib3JkdXJlIG4nZXN0IHBhcyBkw6lmaW5pIGVuIGNzcyBjYXIgZWxsZSBzJ2FwcGxpcXVlcmFpdFxuICAgICAgICAvLyBzdXIgbGUgYmFja2dyb3VuZCBldCBuZSBzdXBwb3J0ZXJhaXQgcGFzIGxlIHNjcm9sbCBob3Jpem9udGFsLlxuICAgICAgICBsZXQgc29ydGVkQm9yZGVyRWxlbWVudCA9IF9zb3J0ZWQgPyAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnNvcnRlZEJvcmRlcn1cbiAgICAgICAgICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiBvZmZzZXQsIG1hcmdpblJpZ2h0OiBwYWRkaW5nIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICApIDogbnVsbDtcblxuICAgICAgICBjb25zdCBzb3J0SWNvbkNsYXNzTmFtZSA9IGNsYXNzTmFtZXMoY2xhc3Nlcy5pY29uLCBjbGFzc2VzLnByaW1hcnksIHtcbiAgICAgICAgICAgIFtjbGFzc2VzWydzb3J0JyArIHNvcnREaXJlY3Rpb25dXTogISFzb3J0RGlyZWN0aW9uLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBmaWx0ZXJJY29uQ2xhc3NOYW1lID0gY2xhc3NOYW1lcyhjbGFzc2VzLmljb24sIGNsYXNzZXMucHJpbWFyeSwge1xuICAgICAgICAgICAgW2NsYXNzZXNbJ2ZpbHRlcicgKyBzb3J0RGlyZWN0aW9uXV06ICEhc29ydERpcmVjdGlvbixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IF9pY29ucyA9XG4gICAgICAgICAgICBfZmlsdGVyYWJsZSB8fCBzb3J0YWJsZSA/IChcbiAgICAgICAgICAgICAgICBfZmlsdGVyYWJsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgX3NvcnRlZCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxGaWx0ZXJWYXJpYW50SWNvbiBjbGFzc05hbWU9e2ZpbHRlckljb25DbGFzc05hbWV9IC8+XG4gICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8TWVudUljb24gY2xhc3NOYW1lPXtjbGFzc2VzLmljb259IC8+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICBfc29ydGVkICYmIDxBcnJvd0Rvd253YXJkSWNvbiBjbGFzc05hbWU9e3NvcnRJY29uQ2xhc3NOYW1lfSAvPlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgbG9va2VkVXBDbGFzc05hbWUgPSBjbGFzc05hbWVzKHsgW2NsYXNzZXMubG9va2VkVXBdOiBsb29rZWRVcCB9KTtcblxuICAgICAgICBjb25zdCBjZWxsU3R5bGUgPSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgICAgekluZGV4OiBzdGlja3kgPyAxMyA6IDEyLCAvLyBsYSBjZWxsdWxlIHN0aWNreSBkb2l0IMOqdHJlIGF1IGRlc3N1cyBkZXMgYXV0cmVzIGNlbGx1bGVzIGR1IGhlYWRlclxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnaW5oZXJpdCcsXG4gICAgICAgICAgICB0ZXh0QWxpZ246IGFsaWduLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChmaXhlZENvbHVtbldpZHRoKSB7XG4gICAgICAgICAgICBjZWxsU3R5bGUubWF4V2lkdGggPSBfd2lkdGg7XG4gICAgICAgICAgICBjZWxsU3R5bGUubWluV2lkdGggPSBfd2lkdGg7XG4gICAgICAgICAgICBjZWxsU3R5bGUud2lkdGggPSBfd2lkdGg7XG4gICAgICAgIH0gZWxzZSBpZiAod2lkdGgpIHtcbiAgICAgICAgICAgIGNlbGxTdHlsZS53aWR0aCA9IHdpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxUYWJsZUNlbGwgc3R5bGU9e2NlbGxTdHlsZX0+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgeyEhc2VsZWN0YWJsZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8SGlDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1cImhlYWRlcl9jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcz17eyByb290OiBkZW5zZSA/IGNsYXNzZXMuZGVuc2VDaGVja2JveCA6IGNsYXNzZXMuY2hlY2tib3ggfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsxOH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25TZWxlY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWQgPT09IHRydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXRlcm1pbmF0ZT17c2VsZWN0ZWQgPT09ICdtaXhlZCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wOiBkZW5zZSA/IDExIDogMTUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogZGVuc2UgPyAxMCA6IDE0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdMZWZ0OiBzZWxlY3RhYmxlID8gMCA6IHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1JpZ2h0OiBwYWRkaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17bG9va2VkVXBDbGFzc05hbWV9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtfZmlsdGVyYWJsZSB8fCBzb3J0YWJsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uQmFzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IGFsaWduID09PSAncmlnaHQnID8gJ2ZsZXgtZW5kJyA6ICdmbGV4LXN0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcxcHggMCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9maWx0ZXJhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLm9uRmlsdGVyQ2xpY2soZXZlbnQsIGZpbHRlclNvdXJjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuaGFuZGxlU29ydChzb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/ICdkZXNjJyA6ICdhc2MnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHthbGlnbiA9PT0gJ3JpZ2h0JyAmJiBfaWNvbnN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXMubGFiZWxDb250YWluZXIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfc29ydGVkID8gJyAnICsgY2xhc3Nlcy5sYWJlbENvbnRhaW5lck9yZGVyZWQgOiAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZpZXcgIT09ICdzJyA/IHRpdGxlIDogc21hbGxUaXRsZSA/IHNtYWxsVGl0bGUgOiB0aXRsZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2FsaWduICE9PSAncmlnaHQnICYmIF9pY29uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbkJhc2U+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wOiAzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiBhbGlnbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnaW5pdGlhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzZXMubGFiZWxDb250YWluZXJ9IHN0eWxlPXt7IHdpZHRoOiAnMTAwJScgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmlldyAhPT0gJ3MnID8gdGl0bGUgOiBzbWFsbFRpdGxlID8gc21hbGxUaXRsZSA6IHRpdGxlIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAge3NvcnRlZEJvcmRlckVsZW1lbnR9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICB7ISFmaWx0ZXJPcGVuICYmIChcbiAgICAgICAgICAgICAgICAgICAgPENvbHVtbkZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT17dHlwZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclZhbHVlTGlzdD17bWVudUZpbHRlcnN9XG4gICAgICAgICAgICAgICAgICAgICAgICBpc09wZW49e2ZpbHRlck9wZW59XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXt0aGlzLmNsb3NlRmlsdGVyTWVudX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvckVsPXthbmNob3JFbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlPXtzb3J0YWJsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uU29ydD17dGhpcy5oYW5kbGVTb3J0fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25GaWx0ZXJDaGFuZ2U9e3RoaXMuaGFuZGxlRmlsdGVyQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1RhYmxlQ2VsbD5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZXMoc3R5bGVzLCB7IHdpdGhUaGVtZTogdHJ1ZSwgbmFtZTogJ0htdWlIZWFkZXJDZWxsJyB9KShIZWFkZXJDZWxsKTtcbiJdfQ==
|
134523
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9IaVRhYmxlL0hlYWRlckNlbGwuanMiXSwibmFtZXMiOlsiY3N0Iiwic3R5bGVzIiwiY2hlY2tib3giLCJmbG9hdCIsIm1hcmdpbiIsImRlbnNlQ2hlY2tib3giLCJsYWJlbENvbnRhaW5lciIsIndoaXRlU3BhY2UiLCJvdmVyZmxvdyIsInRleHRPdmVyZmxvdyIsInRoZW1lIiwidHlwb2dyYXBoeSIsImJvZHk0IiwiZm9udFdlaWdodCIsImZvbnRXZWlnaHRMaWdodCIsImNvbG9yIiwicGFsZXR0ZSIsIm5ldXRyYWwiLCJkYXJrIiwibGFiZWxDb250YWluZXJPcmRlcmVkIiwiZm9udFdlaWdodFJlZ3VsYXIiLCJmaWx0ZXIiLCJwb3NpdGlvbiIsInRvcCIsImxlZnQiLCJjdXJzb3IiLCJ3aWR0aCIsImhlaWdodCIsInNvcnRlZEJvcmRlciIsImJhY2tncm91bmRDb2xvciIsImJ1c2luZXNzIiwicHJpbWFyeSIsIm5vcm1hbCIsImljb24iLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJ0cmFuc2l0aW9uIiwidHJhbnNpdGlvbnMiLCJjcmVhdGUiLCJkdXJhdGlvbiIsInNob3J0ZXIiLCJ1c2VyU2VsZWN0Iiwic29ydGRlc2MiLCJ0cmFuc2Zvcm0iLCJzb3J0YXNjIiwiZmlsdGVyZGVzYyIsImZpbHRlcmFzYyIsImxvb2tlZFVwIiwiYmFja2dyb3VuZCIsImJvcmRlclJhZGl1cyIsIkhlYWRlckNlbGwiLCJwcm9wcyIsIm9uRmlsdGVyQ2xpY2siLCJldmVudCIsImNvbHVtbkRhdGFzZXQiLCJvcGVuRmlsdGVyTWVudSIsInN0YXRlIiwiZmlsdGVyT3BlbiIsImFuY2hvckVsIiwibWVudUZpbHRlcnMiLCJiaW5kIiwiaGFuZGxlQ2xvc2UiLCJoYW5kbGVTb3J0IiwiaGFuZGxlRmlsdGVyQ2hhbmdlIiwic2V0U3RhdGUiLCJjdXJyZW50VGFyZ2V0IiwiZGlyZWN0aW9uIiwib25Tb3J0IiwiY29sSWQiLCJpdGVtSWRMaXN0Iiwib25GaWx0ZXJDaGFuZ2UiLCJjbGFzc2VzIiwidHlwZSIsInRpdGxlIiwic21hbGxUaXRsZSIsInNlbGVjdGFibGUiLCJzZWxlY3RlZCIsIm9uU2VsZWN0Iiwic29ydGFibGUiLCJzb3J0ZWQiLCJzb3J0RGlyZWN0aW9uIiwiZmlsdGVyYWJsZSIsImZpbHRlclNvdXJjZSIsInZpZXciLCJkZW5zZSIsImZpeGVkQ29sdW1uV2lkdGgiLCJhbGlnbiIsIkFMSUdOX1JJR0hUX1RZUEVTIiwiaW5jbHVkZXMiLCJzdGlja3kiLCJwYWRkaW5nIiwidHJhbnNsYXRpb25zIiwib2Zmc2V0IiwiX3dpZHRoIiwiREVGQVVMVF9XSURUSFMiLCJfc29ydGVkIiwiX2ZpbHRlcmFibGUiLCJsZW5ndGgiLCJzb3J0ZWRCb3JkZXJFbGVtZW50Iiwic29ydEljb25DbGFzc05hbWUiLCJmaWx0ZXJJY29uQ2xhc3NOYW1lIiwiX2ljb25zIiwibG9va2VkVXBDbGFzc05hbWUiLCJjZWxsU3R5bGUiLCJ6SW5kZXgiLCJ0ZXh0QWxpZ24iLCJtYXhXaWR0aCIsIm1pbldpZHRoIiwicm9vdCIsImRpc3BsYXkiLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJjb2x1bW5GaWx0ZXIiLCJQdXJlQ29tcG9uZW50IiwicHJvcFR5cGVzIiwic3RyaW5nIiwib2JqZWN0IiwiYm9vbCIsImFycmF5IiwibnVtYmVyIiwiZnVuYyIsIm9uZU9mIiwiaXNSZXF1aXJlZCIsIm9uZU9mVHlwZSIsImRlZmF1bHRQcm9wcyIsIndpdGhUaGVtZSIsIm5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOztBQUNBOzs7O0FBQ0E7O0lBQVlBLEc7Ozs7Ozs7Ozs7Ozs7O0FBRUwsSUFBTUMsMEJBQVMsU0FBVEEsTUFBUztBQUFBLFdBQVU7QUFDNUJDLGtCQUFV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QXBFSDtBQXFFZjs7O0FBR0EvQixZQUFRLG9CQUFVK0IsSUF4RUg7QUF5RWY7OztBQUdBL0MsV0FBTyxvQkFBVTZDLE1BQVYsQ0FBaUJPLFVBNUVUO0FBNkVmOzs7QUFHQWxDLGtCQUFjLG9CQUFVNEIsTUFoRlQ7QUFpRmY7OztBQUdBL0MsVUFBTSxvQkFBVThDLE1BQVYsQ0FBaUJPLFVBcEZSO0FBcUZmOzs7QUFHQTFDLFVBQU0sb0JBQVV5QyxLQUFWLENBQWdCLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBVyxHQUFYLENBQWhCLENBeEZTO0FBeUZmOzs7QUFHQWxHLFdBQU8sb0JBQVVvRyxTQUFWLENBQW9CLENBQUMsb0JBQVVKLE1BQVgsRUFBbUIsb0JBQVVKLE1BQTdCLENBQXBCO0FBNUZRLEM7QUFEakJwRSxVLENBZ0dLNkUsWSxHQUFlO0FBQ2xCcEQsZ0JBQVksS0FETTtBQUVsQkMsY0FBVSxLQUZRO0FBR2xCRSxjQUFVLEtBSFE7QUFJbEJDLFlBQVEsS0FKVTtBQUtsQkMsbUJBQWUsS0FMRztBQU1sQkcsVUFBTSxHQU5ZO0FBT2xCQyxXQUFPLEtBUFc7QUFRbEJDLHNCQUFrQixJQVJBO0FBU2xCSSxZQUFRLElBVFU7QUFVbEJDLGFBQVM7QUFWUyxDO2tCQXNPWCx3QkFBV3pGLE1BQVgsRUFBbUIsRUFBRStILFdBQVcsSUFBYixFQUFtQkMsTUFBTSxnQkFBekIsRUFBbkIsRUFBZ0UvRSxVQUFoRSxDIiwiZmlsZSI6IkhlYWRlckNlbGwuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvbWZhemlvL2Rldi9wcm9qZWN0cy9oaXBheS1tYXRlcmlhbC11aSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgVGFibGVDZWxsIH0gZnJvbSAnbWF0ZXJpYWwtdWkvVGFibGUnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgQnV0dG9uQmFzZSBmcm9tICdtYXRlcmlhbC11aS9CdXR0b25CYXNlJztcbmltcG9ydCBGaWx0ZXJWYXJpYW50SWNvbiBmcm9tICdtZGktbWF0ZXJpYWwtdWkvRmlsdGVyVmFyaWFudCc7XG5pbXBvcnQgTWVudUljb24gZnJvbSAnbWRpLW1hdGVyaWFsLXVpL01lbnUnO1xuaW1wb3J0IEFycm93RG93bndhcmRJY29uIGZyb20gJy4uL3N2Zy1pY29ucy9BcnJvd0Rvd253YXJkJztcbmltcG9ydCBIaUNoZWNrYm94IGZyb20gJy4uL0hpQ2hlY2tib3gnO1xuaW1wb3J0IHsgd2l0aFN0eWxlcywgd2l0aFRoZW1lIH0gZnJvbSAnLi4vc3R5bGVzJztcbmltcG9ydCBDb2x1bW5GaWx0ZXIgZnJvbSAnLi9Db2x1bW5GaWx0ZXInO1xuaW1wb3J0ICogYXMgY3N0IGZyb20gJy4vY29uc3RhbnRzJztcblxuZXhwb3J0IGNvbnN0IHN0eWxlcyA9IHRoZW1lID0+ICh7XG4gICAgY2hlY2tib3g6IHtcbiAgICAgICAgZmxvYXQ6ICdsZWZ0JyxcbiAgICAgICAgbWFyZ2luOiAnMTBweCAxMHB4IDBweCAxMHB4JyxcbiAgICB9LFxuICAgIGRlbnNlQ2hlY2tib3g6IHtcbiAgICAgICAgZmxvYXQ6ICdsZWZ0JyxcbiAgICAgICAgbWFyZ2luOiAnOHB4IDhweCAwcHggN3B4JyxcbiAgICB9LFxuICAgIGxhYmVsQ29udGFpbmVyOiB7XG4gICAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgICAgICAgLi4udGhlbWUudHlwb2dyYXBoeS5ib2R5NCxcbiAgICAgICAgZm9udFdlaWdodDogdGhlbWUudHlwb2dyYXBoeS5mb250V2VpZ2h0TGlnaHQsXG4gICAgICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlLm5ldXRyYWwuZGFyayxcbiAgICB9LFxuICAgIGxhYmVsQ29udGFpbmVyT3JkZXJlZDoge1xuICAgICAgICBmb250V2VpZ2h0OiB0aGVtZS50eXBvZ3JhcGh5LmZvbnRXZWlnaHRSZWd1bGFyLFxuICAgIH0sXG4gICAgZmlsdGVyOiB7XG4gICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB0b3A6IDIsXG4gICAgICAgIGxlZnQ6IDIsXG4gICAgICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICAgICB3aWR0aDogMTQsXG4gICAgICAgIGhlaWdodDogMTQsXG4gICAgfSxcbiAgICBzb3J0ZWRCb3JkZXI6IHtcbiAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnBhbGV0dGUuYnVzaW5lc3MucHJpbWFyeS5ub3JtYWwsXG4gICAgfSxcbiAgICBpY29uOiB7XG4gICAgICAgIGhlaWdodDogMTYsXG4gICAgICAgIG1hcmdpblJpZ2h0OiA0LFxuICAgICAgICBtYXJnaW5MZWZ0OiA0LFxuICAgICAgICB0cmFuc2l0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoWydvcGFjaXR5JywgJ3RyYW5zZm9ybSddLCB7XG4gICAgICAgICAgICBkdXJhdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRlcixcbiAgICAgICAgfSksXG4gICAgICAgIHVzZXJTZWxlY3Q6ICdub25lJyxcbiAgICAgICAgd2lkdGg6IDE2LFxuICAgIH0sXG4gICAgcHJpbWFyeToge1xuICAgICAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS5idXNpbmVzcy5wcmltYXJ5Lm5vcm1hbCxcbiAgICB9LFxuICAgIHNvcnRkZXNjOiB7XG4gICAgICAgIHRyYW5zZm9ybTogJ3JvdGF0ZSgwZGVnKScsXG4gICAgfSxcbiAgICBzb3J0YXNjOiB7XG4gICAgICAgIHRyYW5zZm9ybTogJ3JvdGF0ZSgxODBkZWcpJyxcbiAgICB9LFxuICAgIGZpbHRlcmRlc2M6IHtcbiAgICAgICAgdHJhbnNmb3JtOiAnc2NhbGUoMSwxKScsXG4gICAgfSxcbiAgICBmaWx0ZXJhc2M6IHtcbiAgICAgICAgdHJhbnNmb3JtOiAnc2NhbGUoMSwtMSknLFxuICAgIH0sXG4gICAgbG9va2VkVXA6IHtcbiAgICAgICAgYmFja2dyb3VuZDpcbiAgICAgICAgICAgICdsaW5lYXItZ3JhZGllbnQoMGRlZywgdHJhbnNwYXJlbnQgMjUlLCAjRkZGRjhEIDEwJSwgI0ZGRkY4RCA3NSUsIHRyYW5zcGFyZW50IDMwJSknLFxuICAgICAgICBib3JkZXJSYWRpdXM6ICc0NSUnLFxuICAgIH0sXG59KTtcblxuLyoqXG4gKiBDb25zdHJ1aXQgdW5lIGNlbGx1bGUgZCdlbnTDqnRlIGF2ZWMgbGUgdGl0cmUsIGNsaWNrYWJsZSwgdHJpYWJsZSBldCBmaWx0cmFibGVcbiAqL1xuY2xhc3MgSGVhZGVyQ2VsbCBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQge1xuICAgIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaXRsZSBhbGlnbmVtZW50LCBlc3QgZMOpZHVpdCBkZSB0eXBlIHBhciBkw6lmYXV0XG4gICAgICAgICAqL1xuICAgICAgICBhbGlnbjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFVzZWZ1bCB0byBleHRlbmQgdGhlIHN0eWxlIGFwcGxpZWQgdG8gY29tcG9uZW50cy5cbiAgICAgICAgICovXG4gICAgICAgIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZW5zaXTDqSwgZMOpZmluaSBsYSBoYXV0ZXVyIGRlIGxhIGxpZ25lXG4gICAgICAgICAqL1xuICAgICAgICBkZW5zZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBam91dGUgbGUgY29tcG9zYW50IENvbHVtbkZpbHRlciwgcGFyIGTDqWZhdXQgw6AgVHJ1ZSBzaSBmaWx0ZXJTb3VyY2UgZXN0IGTDqWZpbmllLlxuICAgICAgICAgKi9cbiAgICAgICAgZmlsdGVyYWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMaXN0ZSBmZXJtw6kgZGVzIHZhbGV1cnMgZGlzcG9uaWJsZXMgc3VyIGxlc3F1ZWxsZXMgZmlsdHJlciAoaW5jbHVyZS9leGNsdXJlKVxuICAgICAgICAgKi9cbiAgICAgICAgZmlsdGVyU291cmNlOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMYSBsYXJnZXVyIGRlIGxhIGNlbGx1bGUgZXN0IGZpeMOpICh0b3V0ZXMgbGVzIGNvbG9ubmVzIHNhdWYgdW5lKVxuICAgICAgICAgKi9cbiAgICAgICAgZml4ZWRDb2x1bW5XaWR0aDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZWNoZXJjaGUgbG9va3VwIHN1ciBjZXR0ZSBjb2xvbm5lXG4gICAgICAgICAqL1xuICAgICAgICBsb29rZWRVcDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQYWRkaW5nIGRlIGxhIGNlbGx1bGUgKHB4KVxuICAgICAgICAgKi9cbiAgICAgICAgcGFkZGluZzogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIGF1IGNoYW5nZW1lbnQgZHUgZmlsdHJlIC0gcGFzc2UgbGEgbGlzdGUgZGVzIGlkIGRlcyB2YWxldXJzIGluY2x1c2VzXG4gICAgICAgICAqL1xuICAgICAgICBvbkZpbHRlckNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayBhdSBjbGljayBkdSBzZWxlY3RcbiAgICAgICAgICovXG4gICAgICAgIG9uU2VsZWN0OiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIGF1IHRyaSAtIHBhc3NlIGxhIGRpcmVjdGlvbiBkdSB0cmlcbiAgICAgICAgICovXG4gICAgICAgIG9uU29ydDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBam91dGUgdW5lIGNoZWNrYm94XG4gICAgICAgICAqL1xuICAgICAgICBzZWxlY3RhYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIMOJdGF0IGRlIGxhIGNoZWNrYm94XG4gICAgICAgICAqL1xuICAgICAgICBzZWxlY3RlZDogUHJvcFR5cGVzLm9uZU9mKFt0cnVlLCBmYWxzZSwgJ21peGVkJ10pLFxuICAgICAgICAvKipcbiAgICAgICAgICogVGl0cmUgY29uZGVuc8OpXG4gICAgICAgICAqL1xuICAgICAgICBzbWFsbFRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICAvKipcbiAgICAgICAgICogQWpvdXRlIGxhIGZvbmN0aW9uIGRlIHRyaSBhdSBjbGljayBzdXIgbGUgbGFiZWwgJiBkYW5zIGxlIENvbHVtbkZpbHRlclxuICAgICAgICAgKi9cbiAgICAgICAgc29ydGFibGU6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogU2VucyBkdSB0cmlcbiAgICAgICAgICovXG4gICAgICAgIHNvcnREaXJlY3Rpb246IFByb3BUeXBlcy5vbmVPZihbJ2FzYycsICdkZXNjJ10pLFxuICAgICAgICAvKipcbiAgICAgICAgICogVHJpIGFjdGlmIC8gaW5hY3RpZlxuICAgICAgICAgKi9cbiAgICAgICAgc29ydGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRydWUgc2kgbGEgY29sb25uZSBlc3QgbGEgcHJlbWnDqHJlIGNvbG9ubmUgZXQgZG9pdCBhdm9pciB1biBjb21wb3J0ZW1lbnQgXCJzdGlja3lcIiBsb3JzIGR1IHNjcm9sbCBob3Jpem9udGFsXG4gICAgICAgICAqL1xuICAgICAgICBzdGlja3k6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogVGl0cmUgZGUgbGEgY29sb25uZVxuICAgICAgICAgKi9cbiAgICAgICAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRyYWR1Y3Rpb24gZGVzIGNoYcOubmVzIGFmZmljaMOpZXNcbiAgICAgICAgICovXG4gICAgICAgIHRyYW5zbGF0aW9uczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFR5cGUgZGUgY2VsbHVsZVxuICAgICAgICAgKi9cbiAgICAgICAgdHlwZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgICAvKipcbiAgICAgICAgICogVmlldyAoTC9NL1MpXG4gICAgICAgICAqL1xuICAgICAgICB2aWV3OiBQcm9wVHlwZXMub25lT2YoWydsJywgJ20nLCAncyddKSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExhcmdldXIgZGUgbGEgY2VsbHVsZSAoaG9ycyBwYWRkaW5nKSwgZXN0IGTDqWR1aXQgZGUgdmlldyBwYXIgZMOpZmF1dFxuICAgICAgICAgKi9cbiAgICAgICAgd2lkdGg6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgICB9O1xuXG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgICAgc2VsZWN0YWJsZTogZmFsc2UsXG4gICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgICBzb3J0ZWQ6IGZhbHNlLFxuICAgICAgICBzb3J0RGlyZWN0aW9uOiAnYXNjJyxcbiAgICAgICAgdmlldzogJ2wnLFxuICAgICAgICBkZW5zZTogZmFsc2UsXG4gICAgICAgIGZpeGVkQ29sdW1uV2lkdGg6IHRydWUsXG4gICAgICAgIHN0aWNreTogdHJ1ZSxcbiAgICAgICAgcGFkZGluZzogOCxcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICBmaWx0ZXJPcGVuOiBmYWxzZSxcbiAgICAgICAgICAgIGFuY2hvckVsOiBudWxsLFxuICAgICAgICAgICAgbWVudUZpbHRlcnM6IFtdLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMub25GaWx0ZXJDbGljayA9IHRoaXMub25GaWx0ZXJDbGljay5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLm9wZW5GaWx0ZXJNZW51ID0gdGhpcy5vcGVuRmlsdGVyTWVudS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZUNsb3NlID0gdGhpcy5oYW5kbGVDbG9zZS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZVNvcnQgPSB0aGlzLmhhbmRsZVNvcnQuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVGaWx0ZXJDaGFuZ2UgPSB0aGlzLmhhbmRsZUZpbHRlckNoYW5nZS5iaW5kKHRoaXMpO1xuICAgIH1cblxuICAgIG9uRmlsdGVyQ2xpY2sgPSAoZXZlbnQsIGNvbHVtbkRhdGFzZXQpID0+IHtcbiAgICAgICAgdGhpcy5vcGVuRmlsdGVyTWVudShldmVudCwgY29sdW1uRGF0YXNldCk7XG4gICAgfTtcblxuICAgIG9wZW5GaWx0ZXJNZW51KGV2ZW50LCBjb2x1bW5EYXRhc2V0KSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgZmlsdGVyT3BlbjogdHJ1ZSxcbiAgICAgICAgICAgIGFuY2hvckVsOiBldmVudC5jdXJyZW50VGFyZ2V0LFxuICAgICAgICAgICAgbWVudUZpbHRlcnM6IGNvbHVtbkRhdGFzZXQsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGhhbmRsZUNsb3NlKCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgZmlsdGVyT3BlbjogZmFsc2UsIGFuY2hvckVsOiBudWxsLCBtZW51RmlsdGVyczogW10gfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU29ydCBjb2x1bW4gd2l0aCBkaXJlY3Rpb25cbiAgICAgKiBAcGFyYW0gZGlyZWN0aW9uXG4gICAgICovXG4gICAgaGFuZGxlU29ydChkaXJlY3Rpb24pIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vblNvcnQodGhpcy5wcm9wcy5jb2xJZCwgZGlyZWN0aW9uKTtcbiAgICB9XG5cbiAgICBoYW5kbGVGaWx0ZXJDaGFuZ2UoaXRlbUlkTGlzdCkge1xuICAgICAgICB0aGlzLnByb3BzLm9uRmlsdGVyQ2hhbmdlKHRoaXMucHJvcHMuY29sSWQsIGl0ZW1JZExpc3QpO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2xhc3NlcyxcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgIHNtYWxsVGl0bGUsXG4gICAgICAgICAgICBzZWxlY3RhYmxlLFxuICAgICAgICAgICAgc2VsZWN0ZWQsXG4gICAgICAgICAgICBvblNlbGVjdCxcbiAgICAgICAgICAgIHNvcnRhYmxlLFxuICAgICAgICAgICAgc29ydGVkLFxuICAgICAgICAgICAgc29ydERpcmVjdGlvbixcbiAgICAgICAgICAgIGZpbHRlcmFibGUsXG4gICAgICAgICAgICBmaWx0ZXJTb3VyY2UsXG4gICAgICAgICAgICB2aWV3LFxuICAgICAgICAgICAgZGVuc2UsXG4gICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgIGZpeGVkQ29sdW1uV2lkdGgsXG4gICAgICAgICAgICBhbGlnbiA9IGNzdC5BTElHTl9SSUdIVF9UWVBFUy5pbmNsdWRlcyh0eXBlKSA/ICdyaWdodCcgOiAnbGVmdCcsXG4gICAgICAgICAgICBzdGlja3ksXG4gICAgICAgICAgICBwYWRkaW5nLFxuICAgICAgICAgICAgbG9va2VkVXAsXG4gICAgICAgICAgICB0cmFuc2xhdGlvbnMsXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGNvbnN0IHsgZmlsdGVyT3BlbiwgYW5jaG9yRWwsIG1lbnVGaWx0ZXJzIH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHNlbGVjdGFibGUgPyAoZGVuc2UgPyAzMiA6IDQwKSA6IHBhZGRpbmc7XG5cbiAgICAgICAgLy8gSW5jbHVlIGxlIHBhZGRpbmcgZXQvb3UgbGEgY2hlY2tib3ggZGFucyBsYSBsYXJnZXVyIGRlIGxhIGNlbGx1bGVcbiAgICAgICAgY29uc3QgX3dpZHRoID0gKHdpZHRoIHx8IGNzdC5ERUZBVUxUX1dJRFRIU1t0eXBlXVt2aWV3XSkgKyBvZmZzZXQgKyBwYWRkaW5nO1xuICAgICAgICAvLyBOJ2FmZmljaGUgcGFzIGxlIHRyaSBzaSBpbCBlc3QgZMOpc2FjdGl2w6kuXG4gICAgICAgIGNvbnN0IF9zb3J0ZWQgPSBzb3J0YWJsZSAmJiBzb3J0ZWQ7XG4gICAgICAgIC8vIE4nYWN0aXZlIHBhcyBsZSBmaWx0cmUgc2kgaWwgbid5IGEgcGFzIGRlIGpldSBkZSBkb25uw6llIHN1ciBsZXNxdWVsbGVzIGZpbHRyw6llcy5cbiAgICAgICAgY29uc3QgX2ZpbHRlcmFibGUgPVxuICAgICAgICAgICAgZmlsdGVyYWJsZSAmJiB0eXBlb2YgZmlsdGVyU291cmNlICE9PSAndW5kZWZpbmVkJyAmJiBmaWx0ZXJTb3VyY2UubGVuZ3RoID4gMDtcblxuICAgICAgICAvLyBMYSBib3JkdXJlIG4nZXN0IHBhcyBkw6lmaW5pIGVuIGNzcyBjYXIgZWxsZSBzJ2FwcGxpcXVlcmFpdFxuICAgICAgICAvLyBzdXIgbGUgYmFja2dyb3VuZCBldCBuZSBzdXBwb3J0ZXJhaXQgcGFzIGxlIHNjcm9sbCBob3Jpem9udGFsLlxuICAgICAgICBjb25zdCBzb3J0ZWRCb3JkZXJFbGVtZW50ID0gX3NvcnRlZCA/IChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuc29ydGVkQm9yZGVyfVxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IG9mZnNldCwgbWFyZ2luUmlnaHQ6IHBhZGRpbmcgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICkgOiBudWxsO1xuXG4gICAgICAgIGNvbnN0IHNvcnRJY29uQ2xhc3NOYW1lID0gY2xhc3NOYW1lcyhjbGFzc2VzLmljb24sIGNsYXNzZXMucHJpbWFyeSwge1xuICAgICAgICAgICAgW2NsYXNzZXNbYHNvcnQke3NvcnREaXJlY3Rpb259YF1dOiAhIXNvcnREaXJlY3Rpb24sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGZpbHRlckljb25DbGFzc05hbWUgPSBjbGFzc05hbWVzKGNsYXNzZXMuaWNvbiwgY2xhc3Nlcy5wcmltYXJ5LCB7XG4gICAgICAgICAgICBbY2xhc3Nlc1tgZmlsdGVyJHtzb3J0RGlyZWN0aW9ufWBdXTogISFzb3J0RGlyZWN0aW9uLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBfaWNvbnMgPVxuICAgICAgICAgICAgX2ZpbHRlcmFibGUgfHwgc29ydGFibGUgPyAoXG4gICAgICAgICAgICAgICAgX2ZpbHRlcmFibGUgPyAoXG4gICAgICAgICAgICAgICAgICAgIF9zb3J0ZWQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8RmlsdGVyVmFyaWFudEljb24gY2xhc3NOYW1lPXtmaWx0ZXJJY29uQ2xhc3NOYW1lfSAvPlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgPE1lbnVJY29uIGNsYXNzTmFtZT17Y2xhc3Nlcy5pY29ufSAvPlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgX3NvcnRlZCAmJiA8QXJyb3dEb3dud2FyZEljb24gY2xhc3NOYW1lPXtzb3J0SWNvbkNsYXNzTmFtZX0gLz5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICcnXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGxvb2tlZFVwQ2xhc3NOYW1lID0gY2xhc3NOYW1lcyh7IFtjbGFzc2VzLmxvb2tlZFVwXTogbG9va2VkVXAgfSk7XG5cbiAgICAgICAgY29uc3QgY2VsbFN0eWxlID0ge1xuICAgICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICAgIHpJbmRleDogc3RpY2t5ID8gMTMgOiAxMiwgLy8gbGEgY2VsbHVsZSBzdGlja3kgZG9pdCDDqnRyZSBhdSBkZXNzdXMgZGVzIGF1dHJlcyBjZWxsdWxlcyBkdSBoZWFkZXJcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ2luaGVyaXQnLFxuICAgICAgICAgICAgdGV4dEFsaWduOiBhbGlnbixcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoZml4ZWRDb2x1bW5XaWR0aCkge1xuICAgICAgICAgICAgY2VsbFN0eWxlLm1heFdpZHRoID0gX3dpZHRoO1xuICAgICAgICAgICAgY2VsbFN0eWxlLm1pbldpZHRoID0gX3dpZHRoO1xuICAgICAgICAgICAgY2VsbFN0eWxlLndpZHRoID0gX3dpZHRoO1xuICAgICAgICB9IGVsc2UgaWYgKHdpZHRoKSB7XG4gICAgICAgICAgICBjZWxsU3R5bGUud2lkdGggPSB3aWR0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8VGFibGVDZWxsIHN0eWxlPXtjZWxsU3R5bGV9PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIHshIXNlbGVjdGFibGUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEhpQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9XCJoZWFkZXJfY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM9e3sgcm9vdDogZGVuc2UgPyBjbGFzc2VzLmRlbnNlQ2hlY2tib3ggOiBjbGFzc2VzLmNoZWNrYm94IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT17MTh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uU2VsZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkID09PSB0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU9e3NlbGVjdGVkID09PSAnbWl4ZWQnfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ1RvcDogZGVuc2UgPyAxMSA6IDE1LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b206IGRlbnNlID8gMTAgOiAxNCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nTGVmdDogc2VsZWN0YWJsZSA/IDAgOiBwYWRkaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdSaWdodDogcGFkZGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2xvb2tlZFVwQ2xhc3NOYW1lfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7X2ZpbHRlcmFibGUgfHwgc29ydGFibGUgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbkJhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBhbGlnbiA9PT0gJ3JpZ2h0JyA/ICdmbGV4LWVuZCcgOiAnZmxleC1zdGFydCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAnMXB4IDAnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZmlsdGVyYWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5vbkZpbHRlckNsaWNrKGV2ZW50LCBmaWx0ZXJTb3VyY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmhhbmRsZVNvcnQoc29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YWxpZ24gPT09ICdyaWdodCcgJiYgX2ljb25zfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzLmxhYmVsQ29udGFpbmVyICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX3NvcnRlZCA/IGAgJHtjbGFzc2VzLmxhYmVsQ29udGFpbmVyT3JkZXJlZH1gIDogJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2aWV3ICE9PSAncycgPyB0aXRsZSA6IHNtYWxsVGl0bGUgfHwgdGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2FsaWduICE9PSAncmlnaHQnICYmIF9pY29uc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbkJhc2U+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nVG9wOiAzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiBhbGlnbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnaW5pdGlhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzZXMubGFiZWxDb250YWluZXJ9IHN0eWxlPXt7IHdpZHRoOiAnMTAwJScgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmlldyAhPT0gJ3MnID8gdGl0bGUgOiBzbWFsbFRpdGxlIHx8IHRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICB7c29ydGVkQm9yZGVyRWxlbWVudH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIHshIWZpbHRlck9wZW4gJiYgKFxuICAgICAgICAgICAgICAgICAgICA8Q29sdW1uRmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXt0eXBlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyVmFsdWVMaXN0PXttZW51RmlsdGVyc31cbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT3Blbj17ZmlsdGVyT3Blbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9e3RoaXMuaGFuZGxlQ2xvc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JFbD17YW5jaG9yRWx9XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZT17c29ydGFibGV9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblNvcnQ9e3RoaXMuaGFuZGxlU29ydH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uRmlsdGVyQ2hhbmdlPXt0aGlzLmhhbmRsZUZpbHRlckNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9ucz17dHJhbnNsYXRpb25zLmNvbHVtbkZpbHRlcn1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9UYWJsZUNlbGw+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGVzKHN0eWxlcywgeyB3aXRoVGhlbWU6IHRydWUsIG5hbWU6ICdIbXVpSGVhZGVyQ2VsbCcgfSkoSGVhZGVyQ2VsbCk7XG4iXX0=
|
134474
134524
|
|
134475
134525
|
/***/ }),
|
134476
134526
|
/* 2631 */
|
@@ -151922,11 +151972,15 @@ function HiLoader(props) {
|
|
151922
151972
|
loading = props.loading;
|
151923
151973
|
|
151924
151974
|
|
151925
|
-
return _react2.default.createElement(
|
151926
|
-
|
151927
|
-
|
151928
|
-
|
151929
|
-
|
151975
|
+
return _react2.default.createElement(
|
151976
|
+
'div',
|
151977
|
+
{ id: 'hi-loader' },
|
151978
|
+
_react2.default.createElement(_reactSpinners.PropagateLoader, {
|
151979
|
+
loading: loading,
|
151980
|
+
size: 12,
|
151981
|
+
color: theme.palette.business.primary.normal
|
151982
|
+
})
|
151983
|
+
);
|
151930
151984
|
}
|
151931
151985
|
|
151932
151986
|
HiLoader.propTypes = {
|
@@ -151945,7 +151999,7 @@ HiLoader.defaultProps = {
|
|
151945
151999
|
};
|
151946
152000
|
|
151947
152001
|
exports.default = (0, _withStyles2.default)(styles, { withTheme: true, name: 'HmuiHiLoader' })(HiLoader);
|
151948
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
152002
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9IaUxvYWRlci9IaUxvYWRlci5qcyJdLCJuYW1lcyI6WyJzdHlsZXMiLCJIaUxvYWRlciIsInByb3BzIiwidGhlbWUiLCJsb2FkaW5nIiwicGFsZXR0ZSIsImJ1c2luZXNzIiwicHJpbWFyeSIsIm5vcm1hbCIsInByb3BUeXBlcyIsImJvb2wiLCJvYmplY3QiLCJkZWZhdWx0UHJvcHMiLCJ3aXRoVGhlbWUiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOztBQUNBOzs7Ozs7QUFFTyxJQUFNQSwwQkFBUyxTQUFUQSxNQUFTO0FBQUEsV0FBTyxFQUFQO0FBQUEsQ0FBZjs7QUFFUCxTQUFTQyxRQUFULENBQWtCQyxLQUFsQixFQUF5QjtBQUFBLFFBQ2JDLEtBRGEsR0FDTUQsS0FETixDQUNiQyxLQURhO0FBQUEsUUFDTkMsT0FETSxHQUNNRixLQUROLENBQ05FLE9BRE07OztBQUdyQixXQUNJO0FBQUE7QUFBQSxVQUFLLElBQUcsV0FBUjtBQUNJO0FBQ0kscUJBQVNBLE9BRGI7QUFFSSxrQkFBTSxFQUZWO0FBR0ksbUJBQU9ELE1BQU1FLE9BQU4sQ0FBY0MsUUFBZCxDQUF1QkMsT0FBdkIsQ0FBK0JDO0FBSDFDO0FBREosS0FESjtBQVNIOztBQUVEUCxTQUFTUSxTQUFULEdBQXFCO0FBQ2pCOzs7QUFHQUwsYUFBUyxvQkFBVU0sSUFKRjtBQUtqQjs7O0FBR0FQLFdBQU8sb0JBQVVRO0FBUkEsQ0FBckI7O0FBV0FWLFNBQVNXLFlBQVQsR0FBd0I7QUFDcEJSLGFBQVM7QUFEVyxDQUF4Qjs7a0JBSWUsMEJBQVdKLE1BQVgsRUFBbUIsRUFBRWEsV0FBVyxJQUFiLEVBQW1CQyxNQUFNLGNBQXpCLEVBQW5CLEVBQThEYixRQUE5RCxDIiwiZmlsZSI6IkhpTG9hZGVyLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL21mYXppby9kZXYvcHJvamVjdHMvaGlwYXktbWF0ZXJpYWwtdWkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IFByb3BhZ2F0ZUxvYWRlciB9IGZyb20gJ3JlYWN0LXNwaW5uZXJzJztcbmltcG9ydCB3aXRoU3R5bGVzIGZyb20gJy4uL3N0eWxlcy93aXRoU3R5bGVzJztcblxuZXhwb3J0IGNvbnN0IHN0eWxlcyA9ICgpID0+ICh7fSk7XG5cbmZ1bmN0aW9uIEhpTG9hZGVyKHByb3BzKSB7XG4gICAgY29uc3QgeyB0aGVtZSwgbG9hZGluZyB9ID0gcHJvcHM7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGlkPVwiaGktbG9hZGVyXCI+XG4gICAgICAgICAgICA8UHJvcGFnYXRlTG9hZGVyXG4gICAgICAgICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICAgICAgICBzaXplPXsxMn1cbiAgICAgICAgICAgICAgICBjb2xvcj17dGhlbWUucGFsZXR0ZS5idXNpbmVzcy5wcmltYXJ5Lm5vcm1hbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59XG5cbkhpTG9hZGVyLnByb3BUeXBlcyA9IHtcbiAgICAvKipcbiAgICAgKiBEaXNwbGF5cyBsb2FkZXIgaWYgdHJ1ZVxuICAgICAqL1xuICAgIGxvYWRpbmc6IFByb3BUeXBlcy5ib29sLFxuICAgIC8qKlxuICAgICAqIEBpZ25vcmVcbiAgICAgKi9cbiAgICB0aGVtZTogUHJvcFR5cGVzLm9iamVjdCxcbn07XG5cbkhpTG9hZGVyLmRlZmF1bHRQcm9wcyA9IHtcbiAgICBsb2FkaW5nOiBmYWxzZSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZXMoc3R5bGVzLCB7IHdpdGhUaGVtZTogdHJ1ZSwgbmFtZTogJ0htdWlIaUxvYWRlcicgfSkoSGlMb2FkZXIpO1xuIl19
|
151949
152003
|
|
151950
152004
|
/***/ }),
|
151951
152005
|
/* 2866 */
|
@@ -156825,6 +156879,9 @@ var HiTopBar = function (_React$Component) {
|
|
156825
156879
|
}, {
|
156826
156880
|
key: 'handleCollapse',
|
156827
156881
|
value: function handleCollapse() {
|
156882
|
+
if (this.props.onCollapse) {
|
156883
|
+
this.props.onCollapse(!this.state.collapsed);
|
156884
|
+
}
|
156828
156885
|
this.setState({ collapsed: !this.state.collapsed });
|
156829
156886
|
}
|
156830
156887
|
}, {
|
@@ -156952,7 +157009,7 @@ var HiTopBar = function (_React$Component) {
|
|
156952
157009
|
(hideable || hasSettings) && _react2.default.createElement(
|
156953
157010
|
_IconButton2.default,
|
156954
157011
|
{ color: 'inherit', className: classes.iconButton },
|
156955
|
-
hideable && _react2.default.createElement(_mdiMaterialUi.
|
157012
|
+
hideable && _react2.default.createElement(_mdiMaterialUi.ChevronUp, { onClick: this.handleCollapse }),
|
156956
157013
|
hasSettings && _react2.default.createElement(_HiIconBuilder2.default, {
|
156957
157014
|
onClick: this.props.onClickSettings,
|
156958
157015
|
icon: 'fa-gear',
|
@@ -156968,7 +157025,7 @@ var HiTopBar = function (_React$Component) {
|
|
156968
157025
|
color: 'inherit',
|
156969
157026
|
className: classes.showTopBarButton
|
156970
157027
|
},
|
156971
|
-
_react2.default.createElement(_mdiMaterialUi.
|
157028
|
+
_react2.default.createElement(_mdiMaterialUi.ChevronDown, null)
|
156972
157029
|
)
|
156973
157030
|
)
|
156974
157031
|
),
|
@@ -157077,7 +157134,7 @@ HiTopBar.propTypes = {
|
|
157077
157134
|
*/
|
157078
157135
|
hasSettings: _propTypes2.default.bool,
|
157079
157136
|
/**
|
157080
|
-
* La TopBar peut être cachée vie le bouton
|
157137
|
+
* La TopBar peut être cachée vie le bouton chevron
|
157081
157138
|
*/
|
157082
157139
|
hideable: _propTypes2.default.bool,
|
157083
157140
|
/**
|
@@ -157104,6 +157161,10 @@ HiTopBar.propTypes = {
|
|
157104
157161
|
* Fonction de callback au click sur le bouton "Settings" du menu
|
157105
157162
|
*/
|
157106
157163
|
onClickSettings: _propTypes2.default.func,
|
157164
|
+
/**
|
157165
|
+
* Fonction de callback au click sur le bouton chevron
|
157166
|
+
*/
|
157167
|
+
onCollapse: _propTypes2.default.func,
|
157107
157168
|
/**
|
157108
157169
|
* Positionement de la topBar. The behavior of the different options is described
|
157109
157170
|
* [here](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Positioning).
|
@@ -157143,7 +157204,7 @@ HiTopBar.defaultProps = {
|
|
157143
157204
|
}
|
157144
157205
|
};
|
157145
157206
|
exports.default = (0, _withStyles2.default)(styles, { withTheme: true, name: 'HmuiHiTopBar' })(HiTopBar);
|
157146
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9IaVRvcEJhci9IaVRvcEJhci5qcyJdLCJuYW1lcyI6WyJzdHlsZXMiLCJyb290Iiwid2lkdGgiLCJib3hTaGFkb3ciLCJjb2xvclByaW1hcnkiLCJiYWNrZ3JvdW5kQ29sb3IiLCJ0aGVtZSIsInBhbGV0dGUiLCJiYWNrZ3JvdW5kMyIsImNvbG9yIiwiYmFja2dyb3VuZDEiLCJ0ZXh0Iiwic2Vjb25kYXJ5IiwiY29sb3JQcmltYXJ5Rm9jdXMiLCJiYWNrZ3JvdW5kMiIsInRvb2xiYXIiLCJtaW5IZWlnaHQiLCJzcGFjaW5nIiwidW5pdCIsImxlZnRCdXR0b25Nb2JpbGUiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJsZWZ0QnV0dG9uIiwicGFkZGluZ0xlZnQiLCJtaW5XaWR0aCIsImxlZnRCdXR0b25MYWJlbCIsImZvbnRTaXplIiwiaGVpZ2h0IiwiZmxleCIsInJpZ2h0Q29tcG9uZW50TW9iaWxlIiwiYWNjb3VudFNlbGVjdG9yQnV0dG9uIiwiYm9yZGVyTGVmdCIsImJvcmRlckNvbG9yIiwiZGlzcGxheSIsIm1heFdpZHRoIiwiYWNjb3VudFNlbGVjdG9yQnV0dG9uTGFiZWwiLCJ0ZXh0T3ZlcmZsb3ciLCJvdmVyZmxvdyIsIndoaXRlU3BhY2UiLCJpY29uQnV0dG9uIiwic2hvd1RvcEJhckJ1dHRvbiIsInBvc2l0aW9uIiwicmlnaHQiLCJtYXJnaW5Ub3AiLCJub3RpZmljYXRpb25CdXR0b24iLCJiZXRhV2l0aG91dEFjY291bnRTZWxlY3RvciIsInNlYXJjaElucHV0Iiwic2VhcmNoSW5wdXRGb2N1c2VkIiwibm90aWZpY2F0aW9uQmFkZ2UiLCJlbmRBZG9ybm1lbnRCdXR0b24iLCJsaW5lSGVpZ2h0IiwicGFkZGluZyIsIm1hcmdpbiIsInRleHRUcmFuc2Zvcm0iLCJmb250V2VpZ2h0IiwidHlwb2dyYXBoeSIsImZvbnRXZWlnaHRSZWd1bGFyIiwiY29sbGFwc2VPdmVyZmxvdyIsIkhpVG9wQmFyIiwicHJvcHMiLCJzdGF0ZSIsImNvbGxhcHNlZCIsIm1lbnVBbmNob3IiLCJoYW5kbGVDb2xsYXBzZSIsImJpbmQiLCJoYW5kbGVDbGlja01lbnUiLCJoYW5kbGVPcGVuTWVudSIsImhhbmRsZUNsb3NlTWVudSIsImhhbmRsZU1lbnVJdGVtQ2xpY2siLCJldmVudCIsInNldFN0YXRlIiwiY3VycmVudFRhcmdldCIsImNhbGxiYWNrIiwib25DbGlja1JldHVybiIsImNsYXNzZXMiLCJub3RpZmljYXRpb25WYWx1ZSIsImJldGEiLCJoaWRlYWJsZSIsImhhc1NldHRpbmdzIiwiaGFzQWNjb3VudFNlbGVjdG9yIiwidHJhbnNsYXRpb25zIiwib25DbGlja01lbnUiLCJhY2NvdW50U2VsZWN0b3JDb250ZW50IiwicmVmQnV0dG9ucyIsInNlYXJjaEZvY3VzIiwiY29sb3JQcmltYXJ5Q2xhc3MiLCJvbkNsaWNrTm90aWZpY2F0aW9ucyIsImJhY2siLCJtZW51IiwibGFiZWwiLCJvbkNsaWNrQWNjb3VudFNlbGVjdG9yIiwibmV1dHJhbCIsImRhcmsiLCJvbkNsaWNrU2V0dGluZ3MiLCJCb29sZWFuIiwic3R5bGUiLCJDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJvbmVPZlR5cGUiLCJzdHJpbmciLCJub2RlIiwiYm9vbCIsIm9iamVjdCIsIm51bWJlciIsImZ1bmMiLCJpc1JlcXVpcmVkIiwib25lT2YiLCJkZWZhdWx0UHJvcHMiLCJzZWFyY2giLCJhbGxfdHlwZXMiLCJ3aXRoVGhlbWUiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOztBQU9BOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7Ozs7Ozs7OztBQUVPLElBQU1BLDBCQUFTLFNBQVRBLE1BQVM7QUFBQSxXQUFVO0FBQzVCQyxjQUFNO0FBQ0ZDLG1CQUFPLE1BREw7QUFFRkMsdUJBQVc7QUFGVCxTQURzQjtBQUs1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QWIsNEJBQXdCLG9CQUFVYyxJQWhDbkI7QUFpQ2Y7OztBQUdBdkIsaUJBQWEsb0JBQVV1QixJQUFWLENBQWVDLFVBcENiO0FBcUNmOzs7QUFHQW5CLDBCQUFzQixvQkFBVWtCLElBeENqQjtBQXlDZjs7O0FBR0EvQixtQkFBZSxvQkFBVStCLElBQVYsQ0FBZUMsVUE1Q2Y7QUE2Q2Y7OztBQUdBWixxQkFBaUIsb0JBQVVXLElBaERaO0FBaURmOzs7O0FBSUEvRCxjQUFVLG9CQUFVaUUsS0FBVixDQUFnQixDQUFDLE9BQUQsRUFBVSxVQUFWLEVBQXNCLFFBQXRCLEVBQWdDLFFBQWhDLENBQWhCLENBckRLO0FBc0RmOzs7QUFHQXZCLGdCQUFZLG9CQUFVcUIsSUF6RFA7QUEwRGY7OztBQUdBcEIsaUJBQWEsb0JBQVVpQixJQUFWLENBQWVJLFVBN0RiO0FBOERmOzs7QUFHQTNELGlCQUFhLG9CQUFVc0QsSUFBVixDQUFlSyxVQWpFYjtBQWtFZjs7O0FBR0FuRyxXQUFPLG9CQUFVZ0csTUFyRUY7QUFzRWY7OztBQUdBdEIsa0JBQWMsb0JBQVVzQjtBQXpFVCxDO0FBRGpCNUMsUSxDQTRFS2lELFksR0FBZTtBQUNsQjlCLGNBQVUsS0FEUTtBQUVsQkMsaUJBQWEsS0FGSztBQUdsQkMsd0JBQW9CLEtBSEY7QUFJbEJLLGlCQUFhLEtBSks7QUFLbEJKLGtCQUFjO0FBQ1ZPLGNBQU0sTUFESTtBQUVWQyxjQUFNLE1BRkk7QUFHVm9CLGdCQUFRLFFBSEU7QUFJVkMsbUJBQVc7QUFKRDtBQUxJLEM7a0JBd1BYLDBCQUFXN0csTUFBWCxFQUFtQixFQUFFOEcsV0FBVyxJQUFiLEVBQW1CQyxNQUFNLGNBQXpCLEVBQW5CLEVBQThEckQsUUFBOUQsQyIsImZpbGUiOiJIaVRvcEJhci5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9tZmF6aW8vZGV2L3Byb2plY3RzL2hpcGF5LW1hdGVyaWFsLXVpIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgSGlkZGVuIGZyb20gJ21hdGVyaWFsLXVpL0hpZGRlbic7XG5pbXBvcnQgQXBwQmFyIGZyb20gJ21hdGVyaWFsLXVpL0FwcEJhcic7XG5pbXBvcnQgVG9vbGJhciBmcm9tICdtYXRlcmlhbC11aS9Ub29sYmFyJztcbmltcG9ydCBJY29uQnV0dG9uIGZyb20gJ21hdGVyaWFsLXVpL0ljb25CdXR0b24nO1xuaW1wb3J0IENvbGxhcHNlIGZyb20gJ21hdGVyaWFsLXVpL3RyYW5zaXRpb25zL0NvbGxhcHNlJztcbmltcG9ydCB7XG4gICAgQ2hldnJvbkRvdWJsZVVwLFxuICAgIENoZXZyb25Eb3VibGVEb3duLFxuICAgIE1lbnUgYXMgTWVudUljb24sXG4gICAgQXJyb3dMZWZ0LFxuICAgIERvdHNWZXJ0aWNhbCxcbn0gZnJvbSAnbWRpLW1hdGVyaWFsLXVpJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IE1lbnUsIHsgTWVudUl0ZW0gfSBmcm9tICdtYXRlcmlhbC11aS9NZW51JztcbmltcG9ydCB3aXRoU3R5bGVzIGZyb20gJy4uL3N0eWxlcy93aXRoU3R5bGVzJztcbmltcG9ydCBIaUljb25CdWlsZGVyIGZyb20gJy4uL3V0aWxzL0hpSWNvbkJ1aWxkZXInO1xuaW1wb3J0IEhpQmFkZ2UgZnJvbSAnLi4vSGlCYWRnZSc7XG5pbXBvcnQgSGlCdXR0b24gZnJvbSAnLi4vSGlCdXR0b24nO1xuaW1wb3J0IEhpQ29sb3JlZExhYmVsIGZyb20gJy4uL0hpQ29sb3JlZExhYmVsJztcbmltcG9ydCB7IGdldENvbnRyYXN0ZWRUZXh0Q29sb3IsIGZhZGUgfSBmcm9tICcuLi9zdHlsZXMvY29sb3JNYW5pcHVsYXRvcic7XG5cbmV4cG9ydCBjb25zdCBzdHlsZXMgPSB0aGVtZSA9PiAoe1xuICAgIHJvb3Q6IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgYm94U2hhZG93OiAnMHB4IDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE2KScsXG4gICAgfSxcbiAgICBjb2xvclByaW1hcnk6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5wYWxldHRlLmJhY2tncm91bmQzLFxuICAgICAgICBjb2xvcjogZ2V0Q29udHJhc3RlZFRleHRDb2xvcihcbiAgICAgICAgICAgIHRoZW1lLnBhbGV0dGUuYmFja2dyb3VuZDEsXG4gICAgICAgICAgICB0aGVtZS5wYWxldHRlLnRleHQuc2Vjb25kYXJ5LFxuICAgICAgICAgICAgJyNGRkYnLFxuICAgICAgICApLFxuICAgIH0sXG4gICAgY29sb3JQcmltYXJ5Rm9jdXM6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5wYWxldHRlLmJhY2tncm91bmQyLFxuICAgICAgICBjb2xvcjogZ2V0Q29udHJhc3RlZFRleHRDb2xvcihcbiAgICAgICAgICAgIHRoZW1lLnBhbGV0dGUuYmFja2dyb3VuZDIsXG4gICAgICAgICAgICB0aGVtZS5wYWxldHRlLnRleHQuc2Vjb25kYXJ5LFxuICAgICAgICAgICAgJyNGRkYnLFxuICAgICAgICApLFxuICAgIH0sXG4gICAgdG9vbGJhcjoge1xuICAgICAgICBtaW5IZWlnaHQ6IDggKiB0aGVtZS5zcGFjaW5nLnVuaXQsXG4gICAgfSxcbiAgICBsZWZ0QnV0dG9uTW9iaWxlOiB7XG4gICAgICAgIG1hcmdpbkxlZnQ6IC0xLjUgKiB0aGVtZS5zcGFjaW5nLnVuaXQsXG4gICAgICAgIG1hcmdpblJpZ2h0OiAxLjUgKiB0aGVtZS5zcGFjaW5nLnVuaXQsXG4gICAgfSxcbiAgICBsZWZ0QnV0dG9uOiB7XG4gICAgICAgIHBhZGRpbmdMZWZ0OiAwLFxuICAgICAgICBtYXJnaW5MZWZ0OiAtMS41ICogdGhlbWUuc3BhY2luZy51bml0LFxuICAgICAgICBtaW5XaWR0aDogMTYgKiB0aGVtZS5zcGFjaW5nLnVuaXQsXG4gICAgfSxcbiAgICBsZWZ0QnV0dG9uTGFiZWw6IHtcbiAgICAgICAgY29sb3I6IHRoZW1lLnBhbGV0dGUudGV4dC5zZWNvbmRhcnksXG4gICAgICAgIG1hcmdpbkxlZnQ6IDIuNSAqIHRoZW1lLnNwYWNpbmcudW5pdCxcbiAgICAgICAgZm9udFNpemU6IDE0LFxuICAgICAgICBoZWlnaHQ6IDE2LFxuICAgIH0sXG4gICAgZmxleDoge1xuICAgICAgICBmbGV4OiAxLFxuICAgIH0sXG4gICAgcmlnaHRDb21wb25lbnRNb2JpbGU6IHtcbiAgICAgICAgbWFyZ2luUmlnaHQ6IC0xLjUgKiB0aGVtZS5zcGFjaW5nLnVuaXQsXG4gICAgfSxcbiAgICBhY2NvdW50U2VsZWN0b3JCdXR0b246IHtcbiAgICAgICAgbWFyZ2luUmlnaHQ6IDEuNSAqIHRoZW1lLnNwYWNpbmcudW5pdCxcbiAgICAgICAgYm9yZGVyTGVmdDogJ3NvbGlkIDFweCcsXG4gICAgICAgIGJvcmRlckNvbG9yOiBmYWRlKCcjMDAwJywgMC4xMiksXG4gICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgICBtaW5XaWR0aDogMTQ0LFxuICAgICAgICBtYXhXaWR0aDogMjg4LFxuICAgIH0sXG4gICAgYWNjb3VudFNlbGVjdG9yQnV0dG9uTGFiZWw6IHtcbiAgICAgICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIH0sXG4gICAgaWNvbkJ1dHRvbjoge1xuICAgICAgICBtYXJnaW5SaWdodDogLTIgKiB0aGVtZS5zcGFjaW5nLnVuaXQsXG4gICAgfSxcbiAgICBzaG93VG9wQmFyQnV0dG9uOiB7XG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICByaWdodDogMzMsXG4gICAgICAgIG1hcmdpblRvcDogNSxcbiAgICB9LFxuICAgIG5vdGlmaWNhdGlvbkJ1dHRvbjoge1xuICAgICAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS50ZXh0LnNlY29uZGFyeSxcbiAgICAgICAgbWluV2lkdGg6IDMyLFxuICAgIH0sXG4gICAgYmV0YVdpdGhvdXRBY2NvdW50U2VsZWN0b3I6IHtcbiAgICAgICAgbWFyZ2luTGVmdDogMS41ICogdGhlbWUuc3BhY2luZy51bml0LFxuICAgIH0sXG4gICAgc2VhcmNoSW5wdXQ6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBgJHt0aGVtZS5wYWxldHRlLmJhY2tncm91bmQxfSAhaW1wb3J0YW50YCxcbiAgICB9LFxuICAgIHNlYXJjaElucHV0Rm9jdXNlZDoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGAke3RoZW1lLnBhbGV0dGUuYmFja2dyb3VuZDN9ICFpbXBvcnRhbnRgLFxuICAgIH0sXG4gICAgbm90aWZpY2F0aW9uQmFkZ2U6IHtcbiAgICAgICAgbWFyZ2luUmlnaHQ6IDEwLFxuICAgIH0sXG4gICAgZW5kQWRvcm5tZW50QnV0dG9uOiB7XG4gICAgICAgIGhlaWdodDogMzIsXG4gICAgICAgIGxpbmVIZWlnaHQ6IDMyLFxuICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICBtYXJnaW46IDAsXG4gICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgICBjb2xvcjogZmFkZSgnIzAwMCcsIDAuMzgpLFxuICAgICAgICB0ZXh0VHJhbnNmb3JtOiAnY2FwaXRhbGl6ZScsXG4gICAgICAgIGZvbnRXZWlnaHQ6IHRoZW1lLnR5cG9ncmFwaHkuZm9udFdlaWdodFJlZ3VsYXIsXG4gICAgICAgIG1pbldpZHRoOiA1MCxcbiAgICB9LFxuICAgIGNvbGxhcHNlT3ZlcmZsb3c6IHtcbiAgICAgICAgb3ZlcmZsb3c6ICdpbmhlcml0JyxcbiAgICB9LFxufSk7XG5cbmNsYXNzIEhpVG9wQmFyIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogQ29udGVudSBkdSBib3V0b24gw6AgZHJvaXRlIGRlIGwnaW5wdXQgZGUgcmVjaGVyY2hlIChhY2NvdW50U2VsZWN0b3IpXG4gICAgICAgICAqL1xuICAgICAgICBhY2NvdW50U2VsZWN0b3JDb250ZW50OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubm9kZV0pLFxuICAgICAgICAvKipcbiAgICAgICAgICogRMOpZmluaXQgc2kgbCdvbiBkb2l0IGFmZmljaGVyIGxlIGJvdXRvbiBcIkJldGFcIiBvdSBub25cbiAgICAgICAgICovXG4gICAgICAgIGJldGE6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogUGVybWV0IGRlcyBzdXJjaGFyZ2VzIGRlIHN0eWxlXG4gICAgICAgICAqL1xuICAgICAgICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgICAvKipcbiAgICAgICAgICogRMOpZmluaXQgc2kgbCdvbiBkb2l0IGFmZmljaGVyIGxlIGJvdXRvbiBcIkFjY291bnQgc2VsZWN0b3JcIiBvdSBub25cbiAgICAgICAgICovXG4gICAgICAgIGhhc0FjY291bnRTZWxlY3RvcjogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEw6lmaW5pdCBzaSBsJ29uIGRvaXQgYWZmaWNoZXIgbGUgYm91dG9uIFwiU2V0dGluZ3NcIiBvdSBub25cbiAgICAgICAgICovXG4gICAgICAgIGhhc1NldHRpbmdzOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExhIFRvcEJhciBwZXV0IMOqdHJlIGNhY2jDqWUgdmllIGxlIGJvdXRvbiBkb3VibGUgY2hldnJvblxuICAgICAgICAgKi9cbiAgICAgICAgaGlkZWFibGU6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogTGEgdmFsZXVyIGEgYWZmaWNoZXIgZGFucyBsZSBib3V0dG9uIGRlIG5vdGlmaWNhdGlvbi5cbiAgICAgICAgICovXG4gICAgICAgIG5vdGlmaWNhdGlvblZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgICAvKipcbiAgICAgICAgICogRm9uY3Rpb24gZGUgY2FsbGJhY2sgYXUgY2xpY2sgc3VyIGwnYWNjb3VudFNlbGVjdG9yJ1xuICAgICAgICAgKi9cbiAgICAgICAgb25DbGlja0FjY291bnRTZWxlY3RvcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayBhdSBjbGljayBzdXIgbGUgbWVudVxuICAgICAgICAgKi9cbiAgICAgICAgb25DbGlja01lbnU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayBhdSBjbGljayBzdXIgbGUgYm91dG9uIGRlIG5vdGlmaWNhdGlvbnNcbiAgICAgICAgICovXG4gICAgICAgIG9uQ2xpY2tOb3RpZmljYXRpb25zOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIGF1IGNsaWNrIHN1ciBsZSBib3V0b24gXCJSZXRvdXJcIiBkdSBtZW51XG4gICAgICAgICAqL1xuICAgICAgICBvbkNsaWNrUmV0dXJuOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgICAvKipcbiAgICAgICAgICogRm9uY3Rpb24gZGUgY2FsbGJhY2sgYXUgY2xpY2sgc3VyIGxlIGJvdXRvbiBcIlNldHRpbmdzXCIgZHUgbWVudVxuICAgICAgICAgKi9cbiAgICAgICAgb25DbGlja1NldHRpbmdzOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFBvc2l0aW9uZW1lbnQgZGUgbGEgdG9wQmFyLiBUaGUgYmVoYXZpb3Igb2YgdGhlIGRpZmZlcmVudCBvcHRpb25zIGlzIGRlc2NyaWJlZFxuICAgICAgICAgKiBbaGVyZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9MZWFybi9DU1MvQ1NTX2xheW91dC9Qb3NpdGlvbmluZykuXG4gICAgICAgICAqL1xuICAgICAgICBwb3NpdGlvbjogUHJvcFR5cGVzLm9uZU9mKFsnZml4ZWQnLCAnYWJzb2x1dGUnLCAnc3RpY2t5JywgJ3N0YXRpYyddKSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqICBQYXNzZSB1bmUgcmVmIGNhbGxiYWNrIMOgIGxhIGRpdiBjb250ZW5hbnQgbGVzIGJvdXRvbnMgXCJtZW51XCIgZXQgXCJiYWNrXCJcbiAgICAgICAgICovXG4gICAgICAgIHJlZkJ1dHRvbnM6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICAvKipcbiAgICAgICAgICogRXRhdCBkZSBmb2N1cy5cbiAgICAgICAgICovXG4gICAgICAgIHNlYXJjaEZvY3VzOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgICAgICAvKipcbiAgICAgICAgICogSW5wdXQgZGUgcmVjaGVyY2hlXG4gICAgICAgICAqL1xuICAgICAgICBzZWFyY2hJbnB1dDogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBpZ25vcmVcbiAgICAgICAgICovXG4gICAgICAgIHRoZW1lOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgICAvKipcbiAgICAgICAgICogVHJhZHVjdGlvbnNcbiAgICAgICAgICovXG4gICAgICAgIHRyYW5zbGF0aW9uczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICB9O1xuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICAgIGhpZGVhYmxlOiBmYWxzZSxcbiAgICAgICAgaGFzU2V0dGluZ3M6IGZhbHNlLFxuICAgICAgICBoYXNBY2NvdW50U2VsZWN0b3I6IGZhbHNlLFxuICAgICAgICBzZWFyY2hGb2N1czogZmFsc2UsXG4gICAgICAgIHRyYW5zbGF0aW9uczoge1xuICAgICAgICAgICAgYmFjazogJ0JhY2snLFxuICAgICAgICAgICAgbWVudTogJ01lbnUnLFxuICAgICAgICAgICAgc2VhcmNoOiAnc2VhcmNoJyxcbiAgICAgICAgICAgIGFsbF90eXBlczogJ0FsbCBUeXBlcycsXG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcblxuICAgICAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgICAgICAgY29sbGFwc2VkOiBmYWxzZSxcbiAgICAgICAgICAgIG1lbnVBbmNob3I6IG51bGwsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5oYW5kbGVDb2xsYXBzZSA9IHRoaXMuaGFuZGxlQ29sbGFwc2UuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVDbGlja01lbnUgPSB0aGlzLmhhbmRsZUNsaWNrTWVudS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZU9wZW5NZW51ID0gdGhpcy5oYW5kbGVPcGVuTWVudS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZUNsb3NlTWVudSA9IHRoaXMuaGFuZGxlQ2xvc2VNZW51LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlTWVudUl0ZW1DbGljayA9IHRoaXMuaGFuZGxlTWVudUl0ZW1DbGljay5iaW5kKHRoaXMpO1xuICAgIH1cblxuICAgIGhhbmRsZU9wZW5NZW51KGV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBtZW51QW5jaG9yOiBldmVudC5jdXJyZW50VGFyZ2V0IH0pO1xuICAgIH1cblxuICAgIGhhbmRsZUNsb3NlTWVudSgpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IG1lbnVBbmNob3I6IG51bGwgfSk7XG4gICAgfVxuXG4gICAgaGFuZGxlTWVudUl0ZW1DbGljayhjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgbWVudUFuY2hvcjogbnVsbCB9KTtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICBoYW5kbGVDb2xsYXBzZSgpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbGxhcHNlZDogIXRoaXMuc3RhdGUuY29sbGFwc2VkIH0pO1xuICAgIH1cblxuICAgIGhhbmRsZUNsaWNrTWVudSgpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNsaWNrUmV0dXJuKCk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjbGFzc2VzLFxuICAgICAgICAgICAgdGhlbWUsXG4gICAgICAgICAgICBub3RpZmljYXRpb25WYWx1ZSxcbiAgICAgICAgICAgIGJldGEsXG4gICAgICAgICAgICBoaWRlYWJsZSxcbiAgICAgICAgICAgIGhhc1NldHRpbmdzLFxuICAgICAgICAgICAgaGFzQWNjb3VudFNlbGVjdG9yLFxuICAgICAgICAgICAgdHJhbnNsYXRpb25zLFxuICAgICAgICAgICAgb25DbGlja01lbnUsXG4gICAgICAgICAgICBhY2NvdW50U2VsZWN0b3JDb250ZW50LFxuICAgICAgICAgICAgcmVmQnV0dG9ucyxcbiAgICAgICAgICAgIHNlYXJjaElucHV0LFxuICAgICAgICAgICAgc2VhcmNoRm9jdXMsXG4gICAgICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgICAgIGNvbnN0IGNvbG9yUHJpbWFyeUNsYXNzID0gc2VhcmNoRm9jdXMgPyBjbGFzc2VzLmNvbG9yUHJpbWFyeUZvY3VzIDogY2xhc3Nlcy5jb2xvclByaW1hcnk7XG5cbiAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9uQnV0dG9uID1cbiAgICAgICAgICAgIG5vdGlmaWNhdGlvblZhbHVlID4gMCA/IChcbiAgICAgICAgICAgICAgICA8SGlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLm5vdGlmaWNhdGlvbkJ1dHRvbn1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5wcm9wcy5vbkNsaWNrTm90aWZpY2F0aW9uc31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxIaUJhZGdlXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17bm90aWZpY2F0aW9uVmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzPXt7IHJvb3Q6IGNsYXNzZXMubm90aWZpY2F0aW9uQmFkZ2UgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEhpSWNvbkJ1aWxkZXIgaWNvbj1cImZhLWJlbGwtb1wiIHNpemU9ezI1fSAvPlxuICAgICAgICAgICAgICAgICAgICA8L0hpQmFkZ2U+XG4gICAgICAgICAgICAgICAgPC9IaUJ1dHRvbj5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICBjbGFzc2VzPXt7IHJvb3Q6IGNsYXNzZXMucm9vdCwgY29sb3JQcmltYXJ5OiBjb2xvclByaW1hcnlDbGFzcyB9fVxuICAgICAgICAgICAgICAgIHBvc2l0aW9uPXt0aGlzLnByb3BzLnBvc2l0aW9ufVxuICAgICAgICAgICAgICAgIGlkPVwidG9wLWJhclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEhpZGRlbiBzbURvd24+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q29sbGFwc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbj17IXRoaXMuc3RhdGUuY29sbGFwc2VkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc2VzLmNvbGxhcHNlT3ZlcmZsb3ddOiAhaGlkZWFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2xiYXIgY2xhc3NOYW1lPXtjbGFzc2VzLnRvb2xiYXJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17cmVmQnV0dG9uc30gaWQ9XCJtZW51LWJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWFyY2hGb2N1cyA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmxlZnRCdXR0b259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlQ2xpY2tNZW51fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImluaGVyaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycm93TGVmdCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzZXMubGVmdEJ1dHRvbkxhYmVsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2xhdGlvbnMuYmFja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSGlCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMubGVmdEJ1dHRvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b25DbGlja01lbnV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiaW5oZXJpdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TWVudUljb24gc3R5bGU9e3sgaGVpZ2h0OiAyNCB9fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzZXMubGVmdEJ1dHRvbkxhYmVsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2xhdGlvbnMubWVudX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSGlCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cInF1aWNrLXNlYXJjaC1pbnB1dFwiIGNsYXNzTmFtZT17Y2xhc3Nlcy5mbGV4fT57c2VhcmNoSW5wdXR9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtub3RpZmljYXRpb25CdXR0b259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtoYXNBY2NvdW50U2VsZWN0b3IgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJpbmhlcml0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuYWNjb3VudFNlbGVjdG9yQnV0dG9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXM9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGNsYXNzZXMuYWNjb3VudFNlbGVjdG9yQnV0dG9uTGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnByb3BzLm9uQ2xpY2tBY2NvdW50U2VsZWN0b3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhY2NvdW50LXNlbGVjdG9yLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2FjY291bnRTZWxlY3RvckNvbnRlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hpQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YmV0YSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlDb2xvcmVkTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Nlcy5iZXRhV2l0aG91dEFjY291bnRTZWxlY3Rvcl06ICFoYXNBY2NvdW50U2VsZWN0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9eydCRVRBJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e3RoZW1lLnBhbGV0dGUubmV1dHJhbC5kYXJrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhoaWRlYWJsZSB8fCBoYXNTZXR0aW5ncykgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gY29sb3I9XCJpbmhlcml0XCIgY2xhc3NOYW1lPXtjbGFzc2VzLmljb25CdXR0b259PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtoaWRlYWJsZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uRG91YmxlVXAgb25DbGljaz17dGhpcy5oYW5kbGVDb2xsYXBzZX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtoYXNTZXR0aW5ncyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaUljb25CdWlsZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLnByb3BzLm9uQ2xpY2tTZXR0aW5nc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJmYS1nZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9ezI0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ub29sYmFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9Db2xsYXBzZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtoaWRlYWJsZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUuY29sbGFwc2VkICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlQ29sbGFwc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImluaGVyaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnNob3dUb3BCYXJCdXR0b259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uRG91YmxlRG93biAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9IaWRkZW4+XG5cbiAgICAgICAgICAgICAgICA8SGlkZGVuIG1kVXA+XG4gICAgICAgICAgICAgICAgICAgIDxUb29sYmFyIGNsYXNzTmFtZT17Y2xhc3Nlcy50b29sYmFyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgcmVmPXtyZWZCdXR0b25zfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoRm9jdXMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIGNsYXNzTmFtZT17Y2xhc3Nlcy5sZWZ0QnV0dG9uTW9iaWxlfSBjb2xvcj1cImluaGVyaXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJvd0xlZnQgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMubGVmdEJ1dHRvbk1vYmlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xpY2tNZW51fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJpbmhlcml0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE1lbnVJY29uIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5mbGV4fT57c2VhcmNoSW5wdXR9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7bm90aWZpY2F0aW9uQnV0dG9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgeyhoYXNBY2NvdW50U2VsZWN0b3IgfHwgaGFzU2V0dGluZ3MpICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5yaWdodENvbXBvbmVudE1vYmlsZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImluaGVyaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5oYW5kbGVPcGVuTWVudX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtb3ducz17dGhpcy5zdGF0ZS5tZW51QW5jaG9yID8gJ3RvcC1iYXItbW9iaWxlLW1lbnUnIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERvdHNWZXJ0aWNhbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNZW51XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInRvcC1iYXItbW9iaWxlLW1lbnVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yRWw9e3RoaXMuc3RhdGUubWVudUFuY2hvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW49e0Jvb2xlYW4odGhpcy5zdGF0ZS5tZW51QW5jaG9yKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9e3RoaXMuaGFuZGxlQ2xvc2VNZW51fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFwZXJQcm9wcz17eyBzdHlsZTogeyBtYXhXaWR0aDogMjY0IH0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2hhc0FjY291bnRTZWxlY3RvciAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE1lbnVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1cImFjY291bnQtc2VsZWN0b3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVNZW51SXRlbUNsaWNrKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DbGlja0FjY291bnRTZWxlY3RvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzPXt7IHJvb3Q6IGNsYXNzZXMuYWNjb3VudFNlbGVjdG9yQnV0dG9uTGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHthY2NvdW50U2VsZWN0b3JDb250ZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2hhc1NldHRpbmdzICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TWVudUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PVwic2V0dGluZ3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVNZW51SXRlbUNsaWNrKHRoaXMucHJvcHMub25DbGlja1NldHRpbmdzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L1Rvb2xiYXI+XG4gICAgICAgICAgICAgICAgPC9IaWRkZW4+XG4gICAgICAgICAgICA8L0FwcEJhcj5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHdpdGhTdHlsZXMoc3R5bGVzLCB7IHdpdGhUaGVtZTogdHJ1ZSwgbmFtZTogJ0htdWlIaVRvcEJhcicgfSkoSGlUb3BCYXIpO1xuIl19
|
157207
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9IaVRvcEJhci9IaVRvcEJhci5qcyJdLCJuYW1lcyI6WyJzdHlsZXMiLCJyb290Iiwid2lkdGgiLCJib3hTaGFkb3ciLCJjb2xvclByaW1hcnkiLCJiYWNrZ3JvdW5kQ29sb3IiLCJ0aGVtZSIsInBhbGV0dGUiLCJiYWNrZ3JvdW5kMyIsImNvbG9yIiwiYmFja2dyb3VuZDEiLCJ0ZXh0Iiwic2Vjb25kYXJ5IiwiY29sb3JQcmltYXJ5Rm9jdXMiLCJiYWNrZ3JvdW5kMiIsInRvb2xiYXIiLCJtaW5IZWlnaHQiLCJzcGFjaW5nIiwidW5pdCIsImxlZnRCdXR0b25Nb2JpbGUiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJsZWZ0QnV0dG9uIiwicGFkZGluZ0xlZnQiLCJtaW5XaWR0aCIsImxlZnRCdXR0b25MYWJlbCIsImZvbnRTaXplIiwiaGVpZ2h0IiwiZmxleCIsInJpZ2h0Q29tcG9uZW50TW9iaWxlIiwiYWNjb3VudFNlbGVjdG9yQnV0dG9uIiwiYm9yZGVyTGVmdCIsImJvcmRlckNvbG9yIiwiZGlzcGxheSIsIm1heFdpZHRoIiwiYWNjb3VudFNlbGVjdG9yQnV0dG9uTGFiZWwiLCJ0ZXh0T3ZlcmZsb3ciLCJvdmVyZmxvdyIsIndoaXRlU3BhY2UiLCJpY29uQnV0dG9uIiwic2hvd1RvcEJhckJ1dHRvbiIsInBvc2l0aW9uIiwicmlnaHQiLCJtYXJnaW5Ub3AiLCJub3RpZmljYXRpb25CdXR0b24iLCJiZXRhV2l0aG91dEFjY291bnRTZWxlY3RvciIsInNlYXJjaElucHV0Iiwic2VhcmNoSW5wdXRGb2N1c2VkIiwibm90aWZpY2F0aW9uQmFkZ2UiLCJlbmRBZG9ybm1lbnRCdXR0b24iLCJsaW5lSGVpZ2h0IiwicGFkZGluZyIsIm1hcmdpbiIsInRleHRUcmFuc2Zvcm0iLCJmb250V2VpZ2h0IiwidHlwb2dyYXBoeSIsImZvbnRXZWlnaHRSZWd1bGFyIiwiY29sbGFwc2VPdmVyZmxvdyIsIkhpVG9wQmFyIiwicHJvcHMiLCJzdGF0ZSIsImNvbGxhcHNlZCIsIm1lbnVBbmNob3IiLCJoYW5kbGVDb2xsYXBzZSIsImJpbmQiLCJoYW5kbGVDbGlja01lbnUiLCJoYW5kbGVPcGVuTWVudSIsImhhbmRsZUNsb3NlTWVudSIsImhhbmRsZU1lbnVJdGVtQ2xpY2siLCJldmVudCIsInNldFN0YXRlIiwiY3VycmVudFRhcmdldCIsImNhbGxiYWNrIiwib25Db2xsYXBzZSIsIm9uQ2xpY2tSZXR1cm4iLCJjbGFzc2VzIiwibm90aWZpY2F0aW9uVmFsdWUiLCJiZXRhIiwiaGlkZWFibGUiLCJoYXNTZXR0aW5ncyIsImhhc0FjY291bnRTZWxlY3RvciIsInRyYW5zbGF0aW9ucyIsIm9uQ2xpY2tNZW51IiwiYWNjb3VudFNlbGVjdG9yQ29udGVudCIsInJlZkJ1dHRvbnMiLCJzZWFyY2hGb2N1cyIsImNvbG9yUHJpbWFyeUNsYXNzIiwib25DbGlja05vdGlmaWNhdGlvbnMiLCJiYWNrIiwibWVudSIsImxhYmVsIiwib25DbGlja0FjY291bnRTZWxlY3RvciIsIm5ldXRyYWwiLCJkYXJrIiwib25DbGlja1NldHRpbmdzIiwiQm9vbGVhbiIsInN0eWxlIiwiQ29tcG9uZW50IiwicHJvcFR5cGVzIiwib25lT2ZUeXBlIiwic3RyaW5nIiwibm9kZSIsImJvb2wiLCJvYmplY3QiLCJudW1iZXIiLCJmdW5jIiwiaXNSZXF1aXJlZCIsIm9uZU9mIiwiZGVmYXVsdFByb3BzIiwic2VhcmNoIiwiYWxsX3R5cGVzIiwid2l0aFRoZW1lIiwibmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7Ozs7Ozs7QUFFTyxJQUFNQSwwQkFBUyxTQUFUQSxNQUFTO0FBQUEsV0FBVTtBQUM1QkMsY0FBTTtBQUNGQyxtQkFBTyxNQURMO0FBRUZDLHVCQUFXO0FB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QTlELEMiLCJmaWxlIjoiSGlUb3BCYXIuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvbWZhemlvL2Rldi9wcm9qZWN0cy9oaXBheS1tYXRlcmlhbC11aSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IEhpZGRlbiBmcm9tICdtYXRlcmlhbC11aS9IaWRkZW4nO1xuaW1wb3J0IEFwcEJhciBmcm9tICdtYXRlcmlhbC11aS9BcHBCYXInO1xuaW1wb3J0IFRvb2xiYXIgZnJvbSAnbWF0ZXJpYWwtdWkvVG9vbGJhcic7XG5pbXBvcnQgSWNvbkJ1dHRvbiBmcm9tICdtYXRlcmlhbC11aS9JY29uQnV0dG9uJztcbmltcG9ydCBDb2xsYXBzZSBmcm9tICdtYXRlcmlhbC11aS90cmFuc2l0aW9ucy9Db2xsYXBzZSc7XG5pbXBvcnQgeyBDaGV2cm9uVXAsIENoZXZyb25Eb3duLCBNZW51IGFzIE1lbnVJY29uLCBBcnJvd0xlZnQsIERvdHNWZXJ0aWNhbCB9IGZyb20gJ21kaS1tYXRlcmlhbC11aSc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBNZW51LCB7IE1lbnVJdGVtIH0gZnJvbSAnbWF0ZXJpYWwtdWkvTWVudSc7XG5pbXBvcnQgd2l0aFN0eWxlcyBmcm9tICcuLi9zdHlsZXMvd2l0aFN0eWxlcyc7XG5pbXBvcnQgSGlJY29uQnVpbGRlciBmcm9tICcuLi91dGlscy9IaUljb25CdWlsZGVyJztcbmltcG9ydCBIaUJhZGdlIGZyb20gJy4uL0hpQmFkZ2UnO1xuaW1wb3J0IEhpQnV0dG9uIGZyb20gJy4uL0hpQnV0dG9uJztcbmltcG9ydCBIaUNvbG9yZWRMYWJlbCBmcm9tICcuLi9IaUNvbG9yZWRMYWJlbCc7XG5pbXBvcnQgeyBnZXRDb250cmFzdGVkVGV4dENvbG9yLCBmYWRlIH0gZnJvbSAnLi4vc3R5bGVzL2NvbG9yTWFuaXB1bGF0b3InO1xuXG5leHBvcnQgY29uc3Qgc3R5bGVzID0gdGhlbWUgPT4gKHtcbiAgICByb290OiB7XG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGJveFNoYWRvdzogJzBweCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4xNiknLFxuICAgIH0sXG4gICAgY29sb3JQcmltYXJ5OiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUucGFsZXR0ZS5iYWNrZ3JvdW5kMyxcbiAgICAgICAgY29sb3I6IGdldENvbnRyYXN0ZWRUZXh0Q29sb3IoXG4gICAgICAgICAgICB0aGVtZS5wYWxldHRlLmJhY2tncm91bmQxLFxuICAgICAgICAgICAgdGhlbWUucGFsZXR0ZS50ZXh0LnNlY29uZGFyeSxcbiAgICAgICAgICAgICcjRkZGJyxcbiAgICAgICAgKSxcbiAgICB9LFxuICAgIGNvbG9yUHJpbWFyeUZvY3VzOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUucGFsZXR0ZS5iYWNrZ3JvdW5kMixcbiAgICAgICAgY29sb3I6IGdldENvbnRyYXN0ZWRUZXh0Q29sb3IoXG4gICAgICAgICAgICB0aGVtZS5wYWxldHRlLmJhY2tncm91bmQyLFxuICAgICAgICAgICAgdGhlbWUucGFsZXR0ZS50ZXh0LnNlY29uZGFyeSxcbiAgICAgICAgICAgICcjRkZGJyxcbiAgICAgICAgKSxcbiAgICB9LFxuICAgIHRvb2xiYXI6IHtcbiAgICAgICAgbWluSGVpZ2h0OiA4ICogdGhlbWUuc3BhY2luZy51bml0LFxuICAgIH0sXG4gICAgbGVmdEJ1dHRvbk1vYmlsZToge1xuICAgICAgICBtYXJnaW5MZWZ0OiAtMS41ICogdGhlbWUuc3BhY2luZy51bml0LFxuICAgICAgICBtYXJnaW5SaWdodDogMS41ICogdGhlbWUuc3BhY2luZy51bml0LFxuICAgIH0sXG4gICAgbGVmdEJ1dHRvbjoge1xuICAgICAgICBwYWRkaW5nTGVmdDogMCxcbiAgICAgICAgbWFyZ2luTGVmdDogLTEuNSAqIHRoZW1lLnNwYWNpbmcudW5pdCxcbiAgICAgICAgbWluV2lkdGg6IDE2ICogdGhlbWUuc3BhY2luZy51bml0LFxuICAgIH0sXG4gICAgbGVmdEJ1dHRvbkxhYmVsOiB7XG4gICAgICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlLnRleHQuc2Vjb25kYXJ5LFxuICAgICAgICBtYXJnaW5MZWZ0OiAyLjUgKiB0aGVtZS5zcGFjaW5nLnVuaXQsXG4gICAgICAgIGZvbnRTaXplOiAxNCxcbiAgICAgICAgaGVpZ2h0OiAxNixcbiAgICB9LFxuICAgIGZsZXg6IHtcbiAgICAgICAgZmxleDogMSxcbiAgICB9LFxuICAgIHJpZ2h0Q29tcG9uZW50TW9iaWxlOiB7XG4gICAgICAgIG1hcmdpblJpZ2h0OiAtMS41ICogdGhlbWUuc3BhY2luZy51bml0LFxuICAgIH0sXG4gICAgYWNjb3VudFNlbGVjdG9yQnV0dG9uOiB7XG4gICAgICAgIG1hcmdpblJpZ2h0OiAxLjUgKiB0aGVtZS5zcGFjaW5nLnVuaXQsXG4gICAgICAgIGJvcmRlckxlZnQ6ICdzb2xpZCAxcHgnLFxuICAgICAgICBib3JkZXJDb2xvcjogZmFkZSgnIzAwMCcsIDAuMTIpLFxuICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgICAgbWluV2lkdGg6IDE0NCxcbiAgICAgICAgbWF4V2lkdGg6IDI4OCxcbiAgICB9LFxuICAgIGFjY291bnRTZWxlY3RvckJ1dHRvbkxhYmVsOiB7XG4gICAgICAgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICB9LFxuICAgIGljb25CdXR0b246IHtcbiAgICAgICAgbWFyZ2luUmlnaHQ6IC0yICogdGhlbWUuc3BhY2luZy51bml0LFxuICAgIH0sXG4gICAgc2hvd1RvcEJhckJ1dHRvbjoge1xuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgcmlnaHQ6IDMzLFxuICAgICAgICBtYXJnaW5Ub3A6IDUsXG4gICAgfSxcbiAgICBub3RpZmljYXRpb25CdXR0b246IHtcbiAgICAgICAgY29sb3I6IHRoZW1lLnBhbGV0dGUudGV4dC5zZWNvbmRhcnksXG4gICAgICAgIG1pbldpZHRoOiAzMixcbiAgICB9LFxuICAgIGJldGFXaXRob3V0QWNjb3VudFNlbGVjdG9yOiB7XG4gICAgICAgIG1hcmdpbkxlZnQ6IDEuNSAqIHRoZW1lLnNwYWNpbmcudW5pdCxcbiAgICB9LFxuICAgIHNlYXJjaElucHV0OiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogYCR7dGhlbWUucGFsZXR0ZS5iYWNrZ3JvdW5kMX0gIWltcG9ydGFudGAsXG4gICAgfSxcbiAgICBzZWFyY2hJbnB1dEZvY3VzZWQ6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBgJHt0aGVtZS5wYWxldHRlLmJhY2tncm91bmQzfSAhaW1wb3J0YW50YCxcbiAgICB9LFxuICAgIG5vdGlmaWNhdGlvbkJhZGdlOiB7XG4gICAgICAgIG1hcmdpblJpZ2h0OiAxMCxcbiAgICB9LFxuICAgIGVuZEFkb3JubWVudEJ1dHRvbjoge1xuICAgICAgICBoZWlnaHQ6IDMyLFxuICAgICAgICBsaW5lSGVpZ2h0OiAzMixcbiAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgbWFyZ2luOiAwLFxuICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgICAgY29sb3I6IGZhZGUoJyMwMDAnLCAwLjM4KSxcbiAgICAgICAgdGV4dFRyYW5zZm9ybTogJ2NhcGl0YWxpemUnLFxuICAgICAgICBmb250V2VpZ2h0OiB0aGVtZS50eXBvZ3JhcGh5LmZvbnRXZWlnaHRSZWd1bGFyLFxuICAgICAgICBtaW5XaWR0aDogNTAsXG4gICAgfSxcbiAgICBjb2xsYXBzZU92ZXJmbG93OiB7XG4gICAgICAgIG92ZXJmbG93OiAnaW5oZXJpdCcsXG4gICAgfSxcbn0pO1xuXG5jbGFzcyBIaVRvcEJhciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvbnRlbnUgZHUgYm91dG9uIMOgIGRyb2l0ZSBkZSBsJ2lucHV0IGRlIHJlY2hlcmNoZSAoYWNjb3VudFNlbGVjdG9yKVxuICAgICAgICAgKi9cbiAgICAgICAgYWNjb3VudFNlbGVjdG9yQ29udGVudDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm5vZGVdKSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIETDqWZpbml0IHNpIGwnb24gZG9pdCBhZmZpY2hlciBsZSBib3V0b24gXCJCZXRhXCIgb3Ugbm9uXG4gICAgICAgICAqL1xuICAgICAgICBiZXRhOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFBlcm1ldCBkZXMgc3VyY2hhcmdlcyBkZSBzdHlsZVxuICAgICAgICAgKi9cbiAgICAgICAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIETDqWZpbml0IHNpIGwnb24gZG9pdCBhZmZpY2hlciBsZSBib3V0b24gXCJBY2NvdW50IHNlbGVjdG9yXCIgb3Ugbm9uXG4gICAgICAgICAqL1xuICAgICAgICBoYXNBY2NvdW50U2VsZWN0b3I6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogRMOpZmluaXQgc2kgbCdvbiBkb2l0IGFmZmljaGVyIGxlIGJvdXRvbiBcIlNldHRpbmdzXCIgb3Ugbm9uXG4gICAgICAgICAqL1xuICAgICAgICBoYXNTZXR0aW5nczogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMYSBUb3BCYXIgcGV1dCDDqnRyZSBjYWNow6llIHZpZSBsZSBib3V0b24gY2hldnJvblxuICAgICAgICAgKi9cbiAgICAgICAgaGlkZWFibGU6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICAvKipcbiAgICAgICAgICogTGEgdmFsZXVyIGEgYWZmaWNoZXIgZGFucyBsZSBib3V0dG9uIGRlIG5vdGlmaWNhdGlvbi5cbiAgICAgICAgICovXG4gICAgICAgIG5vdGlmaWNhdGlvblZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgICAvKipcbiAgICAgICAgICogRm9uY3Rpb24gZGUgY2FsbGJhY2sgYXUgY2xpY2sgc3VyIGwnYWNjb3VudFNlbGVjdG9yJ1xuICAgICAgICAgKi9cbiAgICAgICAgb25DbGlja0FjY291bnRTZWxlY3RvcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayBhdSBjbGljayBzdXIgbGUgbWVudVxuICAgICAgICAgKi9cbiAgICAgICAgb25DbGlja01lbnU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb25jdGlvbiBkZSBjYWxsYmFjayBhdSBjbGljayBzdXIgbGUgYm91dG9uIGRlIG5vdGlmaWNhdGlvbnNcbiAgICAgICAgICovXG4gICAgICAgIG9uQ2xpY2tOb3RpZmljYXRpb25zOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIGF1IGNsaWNrIHN1ciBsZSBib3V0b24gXCJSZXRvdXJcIiBkdSBtZW51XG4gICAgICAgICAqL1xuICAgICAgICBvbkNsaWNrUmV0dXJuOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgICAvKipcbiAgICAgICAgICogRm9uY3Rpb24gZGUgY2FsbGJhY2sgYXUgY2xpY2sgc3VyIGxlIGJvdXRvbiBcIlNldHRpbmdzXCIgZHUgbWVudVxuICAgICAgICAgKi9cbiAgICAgICAgb25DbGlja1NldHRpbmdzOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvbmN0aW9uIGRlIGNhbGxiYWNrIGF1IGNsaWNrIHN1ciBsZSBib3V0b24gY2hldnJvblxuICAgICAgICAgKi9cbiAgICAgICAgb25Db2xsYXBzZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQb3NpdGlvbmVtZW50IGRlIGxhIHRvcEJhci4gVGhlIGJlaGF2aW9yIG9mIHRoZSBkaWZmZXJlbnQgb3B0aW9ucyBpcyBkZXNjcmliZWRcbiAgICAgICAgICogW2hlcmVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTGVhcm4vQ1NTL0NTU19sYXlvdXQvUG9zaXRpb25pbmcpLlxuICAgICAgICAgKi9cbiAgICAgICAgcG9zaXRpb246IFByb3BUeXBlcy5vbmVPZihbJ2ZpeGVkJywgJ2Fic29sdXRlJywgJ3N0aWNreScsICdzdGF0aWMnXSksXG4gICAgICAgIC8qKlxuICAgICAgICAgKiAgUGFzc2UgdW5lIHJlZiBjYWxsYmFjayDDoCBsYSBkaXYgY29udGVuYW50IGxlcyBib3V0b25zIFwibWVudVwiIGV0IFwiYmFja1wiXG4gICAgICAgICAqL1xuICAgICAgICByZWZCdXR0b25zOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEV0YXQgZGUgZm9jdXMuXG4gICAgICAgICAqL1xuICAgICAgICBzZWFyY2hGb2N1czogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElucHV0IGRlIHJlY2hlcmNoZVxuICAgICAgICAgKi9cbiAgICAgICAgc2VhcmNoSW5wdXQ6IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWQsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAaWdub3JlXG4gICAgICAgICAqL1xuICAgICAgICB0aGVtZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRyYWR1Y3Rpb25zXG4gICAgICAgICAqL1xuICAgICAgICB0cmFuc2xhdGlvbnM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgfTtcbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgICBoaWRlYWJsZTogZmFsc2UsXG4gICAgICAgIGhhc1NldHRpbmdzOiBmYWxzZSxcbiAgICAgICAgaGFzQWNjb3VudFNlbGVjdG9yOiBmYWxzZSxcbiAgICAgICAgc2VhcmNoRm9jdXM6IGZhbHNlLFxuICAgICAgICB0cmFuc2xhdGlvbnM6IHtcbiAgICAgICAgICAgIGJhY2s6ICdCYWNrJyxcbiAgICAgICAgICAgIG1lbnU6ICdNZW51JyxcbiAgICAgICAgICAgIHNlYXJjaDogJ3NlYXJjaCcsXG4gICAgICAgICAgICBhbGxfdHlwZXM6ICdBbGwgVHlwZXMnLFxuICAgICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIGNvbGxhcHNlZDogZmFsc2UsXG4gICAgICAgICAgICBtZW51QW5jaG9yOiBudWxsLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuaGFuZGxlQ29sbGFwc2UgPSB0aGlzLmhhbmRsZUNvbGxhcHNlLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2xpY2tNZW51ID0gdGhpcy5oYW5kbGVDbGlja01lbnUuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVPcGVuTWVudSA9IHRoaXMuaGFuZGxlT3Blbk1lbnUuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5oYW5kbGVDbG9zZU1lbnUgPSB0aGlzLmhhbmRsZUNsb3NlTWVudS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmhhbmRsZU1lbnVJdGVtQ2xpY2sgPSB0aGlzLmhhbmRsZU1lbnVJdGVtQ2xpY2suYmluZCh0aGlzKTtcbiAgICB9XG5cbiAgICBoYW5kbGVPcGVuTWVudShldmVudCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgbWVudUFuY2hvcjogZXZlbnQuY3VycmVudFRhcmdldCB9KTtcbiAgICB9XG5cbiAgICBoYW5kbGVDbG9zZU1lbnUoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBtZW51QW5jaG9yOiBudWxsIH0pO1xuICAgIH1cblxuICAgIGhhbmRsZU1lbnVJdGVtQ2xpY2soY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IG1lbnVBbmNob3I6IG51bGwgfSk7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgfVxuXG4gICAgaGFuZGxlQ29sbGFwc2UoKSB7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLm9uQ29sbGFwc2UpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25Db2xsYXBzZSghdGhpcy5zdGF0ZS5jb2xsYXBzZWQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2xsYXBzZWQ6ICF0aGlzLnN0YXRlLmNvbGxhcHNlZCB9KTtcbiAgICB9XG5cbiAgICBoYW5kbGVDbGlja01lbnUoKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25DbGlja1JldHVybigpO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2xhc3NlcyxcbiAgICAgICAgICAgIHRoZW1lLFxuICAgICAgICAgICAgbm90aWZpY2F0aW9uVmFsdWUsXG4gICAgICAgICAgICBiZXRhLFxuICAgICAgICAgICAgaGlkZWFibGUsXG4gICAgICAgICAgICBoYXNTZXR0aW5ncyxcbiAgICAgICAgICAgIGhhc0FjY291bnRTZWxlY3RvcixcbiAgICAgICAgICAgIHRyYW5zbGF0aW9ucyxcbiAgICAgICAgICAgIG9uQ2xpY2tNZW51LFxuICAgICAgICAgICAgYWNjb3VudFNlbGVjdG9yQ29udGVudCxcbiAgICAgICAgICAgIHJlZkJ1dHRvbnMsXG4gICAgICAgICAgICBzZWFyY2hJbnB1dCxcbiAgICAgICAgICAgIHNlYXJjaEZvY3VzLFxuICAgICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgICBjb25zdCBjb2xvclByaW1hcnlDbGFzcyA9IHNlYXJjaEZvY3VzID8gY2xhc3Nlcy5jb2xvclByaW1hcnlGb2N1cyA6IGNsYXNzZXMuY29sb3JQcmltYXJ5O1xuXG4gICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbkJ1dHRvbiA9XG4gICAgICAgICAgICBub3RpZmljYXRpb25WYWx1ZSA+IDAgPyAoXG4gICAgICAgICAgICAgICAgPEhpQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5ub3RpZmljYXRpb25CdXR0b259XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMucHJvcHMub25DbGlja05vdGlmaWNhdGlvbnN9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8SGlCYWRnZVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e25vdGlmaWNhdGlvblZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcz17eyByb290OiBjbGFzc2VzLm5vdGlmaWNhdGlvbkJhZGdlIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxIaUljb25CdWlsZGVyIGljb249XCJmYS1iZWxsLW9cIiBzaXplPXsyNX0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9IaUJhZGdlPlxuICAgICAgICAgICAgICAgIDwvSGlCdXR0b24+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICcnXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXBwQmFyXG4gICAgICAgICAgICAgICAgY2xhc3Nlcz17eyByb290OiBjbGFzc2VzLnJvb3QsIGNvbG9yUHJpbWFyeTogY29sb3JQcmltYXJ5Q2xhc3MgfX1cbiAgICAgICAgICAgICAgICBwb3NpdGlvbj17dGhpcy5wcm9wcy5wb3NpdGlvbn1cbiAgICAgICAgICAgICAgICBpZD1cInRvcC1iYXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxIaWRkZW4gc21Eb3duPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPENvbGxhcHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW49eyF0aGlzLnN0YXRlLmNvbGxhcHNlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Nlcy5jb2xsYXBzZU92ZXJmbG93XTogIWhpZGVhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sYmFyIGNsYXNzTmFtZT17Y2xhc3Nlcy50b29sYmFyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiByZWY9e3JlZkJ1dHRvbnN9IGlkPVwibWVudS1idXR0b24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2VhcmNoRm9jdXMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5sZWZ0QnV0dG9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLmhhbmRsZUNsaWNrTWVudX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJpbmhlcml0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJvd0xlZnQgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc2VzLmxlZnRCdXR0b25MYWJlbH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNsYXRpb25zLmJhY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hpQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmxlZnRCdXR0b259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xpY2tNZW51fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImluaGVyaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE1lbnVJY29uIHN0eWxlPXt7IGhlaWdodDogMjQgfX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc2VzLmxlZnRCdXR0b25MYWJlbH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNsYXRpb25zLm1lbnV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hpQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJxdWljay1zZWFyY2gtaW5wdXRcIiBjbGFzc05hbWU9e2NsYXNzZXMuZmxleH0+e3NlYXJjaElucHV0fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bm90aWZpY2F0aW9uQnV0dG9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aGFzQWNjb3VudFNlbGVjdG9yICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxIaUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiaW5oZXJpdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmFjY291bnRTZWxlY3RvckJ1dHRvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiBjbGFzc2VzLmFjY291bnRTZWxlY3RvckJ1dHRvbkxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5wcm9wcy5vbkNsaWNrQWNjb3VudFNlbGVjdG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWNjb3VudC1zZWxlY3Rvci1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHthY2NvdW50U2VsZWN0b3JDb250ZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9IaUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2JldGEgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhpQ29sb3JlZExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzZXMuYmV0YVdpdGhvdXRBY2NvdW50U2VsZWN0b3JdOiAhaGFzQWNjb3VudFNlbGVjdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXsnQkVUQSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmV0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPXt0aGVtZS5wYWxldHRlLm5ldXRyYWwuZGFya31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoaGlkZWFibGUgfHwgaGFzU2V0dGluZ3MpICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIGNvbG9yPVwiaW5oZXJpdFwiIGNsYXNzTmFtZT17Y2xhc3Nlcy5pY29uQnV0dG9ufT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aGlkZWFibGUgJiYgPENoZXZyb25VcCBvbkNsaWNrPXt0aGlzLmhhbmRsZUNvbGxhcHNlfSAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aGFzU2V0dGluZ3MgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SGlJY29uQnVpbGRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5wcm9wcy5vbkNsaWNrU2V0dGluZ3N9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwiZmEtZ2VhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPXsyNH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbGJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQ29sbGFwc2U+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aGlkZWFibGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlLmNvbGxhcHNlZCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLmhhbmRsZUNvbGxhcHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJpbmhlcml0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5zaG93VG9wQmFyQnV0dG9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hldnJvbkRvd24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvSGlkZGVuPlxuXG4gICAgICAgICAgICAgICAgPEhpZGRlbiBtZFVwPlxuICAgICAgICAgICAgICAgICAgICA8VG9vbGJhciBjbGFzc05hbWU9e2NsYXNzZXMudG9vbGJhcn0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJlZj17cmVmQnV0dG9uc30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3NlYXJjaEZvY3VzID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBjbGFzc05hbWU9e2NsYXNzZXMubGVmdEJ1dHRvbk1vYmlsZX0gY29sb3I9XCJpbmhlcml0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyb3dMZWZ0IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmxlZnRCdXR0b25Nb2JpbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkNsaWNrTWVudX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiaW5oZXJpdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNZW51SWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuZmxleH0+e3NlYXJjaElucHV0fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge25vdGlmaWNhdGlvbkJ1dHRvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHsoaGFzQWNjb3VudFNlbGVjdG9yIHx8IGhhc1NldHRpbmdzKSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMucmlnaHRDb21wb25lbnRNb2JpbGV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJpbmhlcml0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuaGFuZGxlT3Blbk1lbnV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLW93bnM9e3RoaXMuc3RhdGUubWVudUFuY2hvciA/ICd0b3AtYmFyLW1vYmlsZS1tZW51JyA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEb3RzVmVydGljYWwgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ0b3AtYmFyLW1vYmlsZS1tZW51XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvckVsPXt0aGlzLnN0YXRlLm1lbnVBbmNob3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuPXtCb29sZWFuKHRoaXMuc3RhdGUubWVudUFuY2hvcil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXt0aGlzLmhhbmRsZUNsb3NlTWVudX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcGVyUHJvcHM9e3sgc3R5bGU6IHsgbWF4V2lkdGg6IDI2NCB9IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtoYXNBY2NvdW50U2VsZWN0b3IgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNZW51SXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9XCJhY2NvdW50LXNlbGVjdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlTWVudUl0ZW1DbGljayhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2xpY2tBY2NvdW50U2VsZWN0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nlcz17eyByb290OiBjbGFzc2VzLmFjY291bnRTZWxlY3RvckJ1dHRvbkxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YWNjb3VudFNlbGVjdG9yQ29udGVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtoYXNTZXR0aW5ncyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE1lbnVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1cInNldHRpbmdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlTWVudUl0ZW1DbGljayh0aGlzLnByb3BzLm9uQ2xpY2tTZXR0aW5ncylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NZW51PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sYmFyPlxuICAgICAgICAgICAgICAgIDwvSGlkZGVuPlxuICAgICAgICAgICAgPC9BcHBCYXI+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB3aXRoU3R5bGVzKHN0eWxlcywgeyB3aXRoVGhlbWU6IHRydWUsIG5hbWU6ICdIbXVpSGlUb3BCYXInIH0pKEhpVG9wQmFyKTtcbiJdfQ==
|
157147
157208
|
|
157148
157209
|
/***/ }),
|
157149
157210
|
/* 2899 */
|