@wavemaker/app-ng-runtime 11.4.0-next.24560 → 11.4.0-next.24562

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. app-ng-runtime/components/base/bundles/index.umd.js +16 -0
  2. app-ng-runtime/components/base/bundles/index.umd.js.map +1 -1
  3. app-ng-runtime/components/base/esm2015/public_api.js +2 -2
  4. app-ng-runtime/components/base/esm2015/utils/widget-utils.js +16 -1
  5. app-ng-runtime/components/base/fesm2015/index.js +16 -1
  6. app-ng-runtime/components/base/fesm2015/index.js.map +1 -1
  7. app-ng-runtime/components/base/index.metadata.json +1 -1
  8. app-ng-runtime/components/base/public_api.d.ts +1 -1
  9. app-ng-runtime/components/base/utils/widget-utils.d.ts +7 -0
  10. app-ng-runtime/components/data/list/bundles/index.umd.js +1 -1
  11. app-ng-runtime/components/data/list/bundles/index.umd.js.map +1 -1
  12. app-ng-runtime/components/data/list/esm2015/list.component.js +2 -2
  13. app-ng-runtime/components/data/list/fesm2015/index.js +1 -1
  14. app-ng-runtime/components/data/list/fesm2015/index.js.map +1 -1
  15. app-ng-runtime/components/data/pagination/bundles/index.umd.js +1 -1
  16. app-ng-runtime/components/data/pagination/bundles/index.umd.js.map +1 -1
  17. app-ng-runtime/components/data/pagination/esm2015/pagination.component.js +2 -2
  18. app-ng-runtime/components/data/pagination/fesm2015/index.js +1 -1
  19. app-ng-runtime/components/data/pagination/fesm2015/index.js.map +1 -1
  20. app-ng-runtime/components/data/table/bundles/index.umd.js +46 -8
  21. app-ng-runtime/components/data/table/bundles/index.umd.js.map +1 -1
  22. app-ng-runtime/components/data/table/esm2015/table.component.js +45 -9
  23. app-ng-runtime/components/data/table/esm2015/table.props.js +3 -1
  24. app-ng-runtime/components/data/table/fesm2015/index.js +46 -8
  25. app-ng-runtime/components/data/table/fesm2015/index.js.map +1 -1
  26. app-ng-runtime/components/data/table/index.metadata.json +1 -1
  27. app-ng-runtime/components/data/table/table.component.d.ts +9 -0
  28. app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +1 -0
  29. app-ng-runtime/components/input/epoch/bundles/index.umd.js +12 -6
  30. app-ng-runtime/components/input/epoch/bundles/index.umd.js.map +1 -1
  31. app-ng-runtime/components/input/epoch/esm2015/base-date-time.component.js +13 -7
  32. app-ng-runtime/components/input/epoch/fesm2015/index.js +12 -6
  33. app-ng-runtime/components/input/epoch/fesm2015/index.js.map +1 -1
  34. app-ng-runtime/components/input/epoch/index.metadata.json +1 -1
  35. app-ng-runtime/components/navigation/menu/bundles/index.umd.js +25 -19
  36. app-ng-runtime/components/navigation/menu/bundles/index.umd.js.map +1 -1
  37. app-ng-runtime/components/navigation/menu/esm2015/menu-dropdown-item/menu-dropdown-item.component.js +15 -5
  38. app-ng-runtime/components/navigation/menu/esm2015/menu.component.js +14 -19
  39. app-ng-runtime/components/navigation/menu/fesm2015/index.js +25 -20
  40. app-ng-runtime/components/navigation/menu/fesm2015/index.js.map +1 -1
  41. app-ng-runtime/components/navigation/menu/index.metadata.json +1 -1
  42. app-ng-runtime/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +7 -4
  43. app-ng-runtime/components/navigation/menu/menu.component.d.ts +3 -7
  44. app-ng-runtime/core/bundles/index.umd.js +1 -1
  45. app-ng-runtime/core/bundles/index.umd.js.map +1 -1
  46. app-ng-runtime/core/esm2015/services/pagination.service.js +2 -2
  47. app-ng-runtime/core/fesm2015/index.js +1 -1
  48. app-ng-runtime/core/fesm2015/index.js.map +1 -1
  49. app-ng-runtime/package.json +1 -1
  50. app-ng-runtime/scripts/datatable/datatable.js +63 -13
@@ -2,7 +2,7 @@ export * from './components.module';
2
2
  export { Live_Operations, ALLFIELDS, LIVE_CONSTANTS, performDataOperation, refreshDataSource, fetchRelatedFieldData, interpolateBindExpressions, getDistinctFieldProperties, getDistinctValues, fetchDistinctValues, getDistinctValuesForField, getRangeFieldValue, getRangeMatchMode, getEnableEmptyFilter, getEmptyMatchMode, createArrayFrom, applyFilterOnField, transformData } from './utils/data-utils';
3
3
  export { getOrderedDataset, transformDataWithKeys, extractDataAsArray, convertDataToObject, transformFormData, getUniqObjsByDataField, setItemByCompare, groupData, filterDate, toggleAllHeaders, handleHeaderClick, configureDnD, DataSetItem } from './utils/form-utils';
4
4
  export { EDIT_MODE, setHeaderConfig, setHeaderConfigForTable, getRowOperationsColumn, getFieldLayoutConfig, getDefaultViewModeWidget, parseValueByType, getFieldTypeWidgetTypesMap, getDataTableFilterWidget, getEditModeWidget, getDefaultValue } from './utils/live-utils';
5
- export { getObjValueByKey, getEvaluatedData, isActiveNavItem, getOrderByExpr, isDataSetWidget, getImageUrl, getBackGroundImageUrl, provideAs, provideAsWidgetRef, provideAsDialogRef, unsupportedStatePersistenceTypes, NAVIGATION_TYPE, INPUTMODE, AUTOCLOSE_TYPE, getWatchIdentifier, getMatchModeTypesMap, getMatchModeMsgs, getConditionalClasses, prepareFieldDefs, getContainerTargetClass, extractDataSourceName, setFocusTrap, getKeyboardFocusableElements } from './utils/widget-utils';
5
+ export { getObjValueByKey, getEvaluatedData, isActiveNavItem, hasLinkToCurrentPage, getOrderByExpr, isDataSetWidget, getImageUrl, getBackGroundImageUrl, provideAs, provideAsWidgetRef, provideAsDialogRef, unsupportedStatePersistenceTypes, NAVIGATION_TYPE, INPUTMODE, AUTOCLOSE_TYPE, getWatchIdentifier, getMatchModeTypesMap, getMatchModeMsgs, getConditionalClasses, prepareFieldDefs, getContainerTargetClass, extractDataSourceName, setFocusTrap, getKeyboardFocusableElements } from './utils/widget-utils';
6
6
  export { BaseComponent } from './widgets/common/base/base.component';
7
7
  export * from './widgets/common/base/base-container.component';
8
8
  export { DatasetAwareNavComponent } from './widgets/common/base/dataset-aware-nav.component';
@@ -31,4 +31,4 @@ export * from './widgets/common/partial-param/partial-param.directive';
31
31
  export * from './widgets/common/smooth-scroll/smooth-scroll.directive';
32
32
  export * from './widgets/common/base/text-content.directive';
33
33
  export * from './directives/show-in-device.directive';
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLE9BQU8sRUFDSCxlQUFlLEVBQ2YsU0FBUyxFQUNULGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIsMEJBQTBCLEVBQzFCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGFBQWEsRUFDaEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixzQkFBc0IsRUFDdEIsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osV0FBVyxFQUNkLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNILFNBQVMsRUFDVCxlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsd0JBQXdCLEVBQ3hCLGdCQUFnQixFQUNoQiwwQkFBMEIsRUFDMUIsd0JBQXdCLEVBQ3hCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2xCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNILGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLGNBQWMsRUFDZCxlQUFlLEVBQ2YsV0FBVyxFQUNYLHFCQUFxQixFQUNyQixTQUFTLEVBQ1Qsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixnQ0FBZ0MsRUFDaEMsZUFBZSxFQUNmLFNBQVMsRUFDVCxjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLFlBQVksRUFDWiw0QkFBNEIsRUFDL0IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0gsYUFBYSxFQUNoQixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsT0FBTyxFQUNILHdCQUF3QixFQUUzQixNQUFNLG1EQUFtRCxDQUFDO0FBQzNELGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsT0FBTyxFQUNILGdCQUFnQixFQUNuQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLFFBQVEsRUFDUixrQkFBa0IsRUFDbEIsU0FBUyxFQUNULFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFFBQVEsRUFDWCxNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsT0FBTyxFQUNILFVBQVUsRUFDVixZQUFZLEVBQ1osY0FBYyxFQUNkLFVBQVUsRUFDVixVQUFVLEVBQ1YsVUFBVSxFQUNWLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLFVBQVUsRUFDVixZQUFZLEVBQ1osaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCx5QkFBeUIsRUFDekIsdUJBQXVCLEVBQzFCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsdUNBQXVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaXZlX09wZXJhdGlvbnMgfSBmcm9tICcuL3V0aWxzL2RhdGEtdXRpbHMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMubW9kdWxlJztcbmV4cG9ydCB7XG4gICAgTGl2ZV9PcGVyYXRpb25zLFxuICAgIEFMTEZJRUxEUyxcbiAgICBMSVZFX0NPTlNUQU5UUyxcbiAgICBwZXJmb3JtRGF0YU9wZXJhdGlvbixcbiAgICByZWZyZXNoRGF0YVNvdXJjZSxcbiAgICBmZXRjaFJlbGF0ZWRGaWVsZERhdGEsXG4gICAgaW50ZXJwb2xhdGVCaW5kRXhwcmVzc2lvbnMsXG4gICAgZ2V0RGlzdGluY3RGaWVsZFByb3BlcnRpZXMsXG4gICAgZ2V0RGlzdGluY3RWYWx1ZXMsXG4gICAgZmV0Y2hEaXN0aW5jdFZhbHVlcyxcbiAgICBnZXREaXN0aW5jdFZhbHVlc0ZvckZpZWxkLFxuICAgIGdldFJhbmdlRmllbGRWYWx1ZSxcbiAgICBnZXRSYW5nZU1hdGNoTW9kZSxcbiAgICBnZXRFbmFibGVFbXB0eUZpbHRlcixcbiAgICBnZXRFbXB0eU1hdGNoTW9kZSxcbiAgICBjcmVhdGVBcnJheUZyb20sXG4gICAgYXBwbHlGaWx0ZXJPbkZpZWxkLFxuICAgIHRyYW5zZm9ybURhdGFcbn0gZnJvbSAnLi91dGlscy9kYXRhLXV0aWxzJztcbmV4cG9ydCB7XG4gICAgZ2V0T3JkZXJlZERhdGFzZXQsXG4gICAgdHJhbnNmb3JtRGF0YVdpdGhLZXlzLFxuICAgIGV4dHJhY3REYXRhQXNBcnJheSxcbiAgICBjb252ZXJ0RGF0YVRvT2JqZWN0LFxuICAgIHRyYW5zZm9ybUZvcm1EYXRhLFxuICAgIGdldFVuaXFPYmpzQnlEYXRhRmllbGQsXG4gICAgc2V0SXRlbUJ5Q29tcGFyZSxcbiAgICBncm91cERhdGEsXG4gICAgZmlsdGVyRGF0ZSxcbiAgICB0b2dnbGVBbGxIZWFkZXJzLFxuICAgIGhhbmRsZUhlYWRlckNsaWNrLFxuICAgIGNvbmZpZ3VyZURuRCxcbiAgICBEYXRhU2V0SXRlbVxufSBmcm9tICcuL3V0aWxzL2Zvcm0tdXRpbHMnO1xuZXhwb3J0IHtcbiAgICBFRElUX01PREUsXG4gICAgc2V0SGVhZGVyQ29uZmlnLFxuICAgIHNldEhlYWRlckNvbmZpZ0ZvclRhYmxlLFxuICAgIGdldFJvd09wZXJhdGlvbnNDb2x1bW4sXG4gICAgZ2V0RmllbGRMYXlvdXRDb25maWcsXG4gICAgZ2V0RGVmYXVsdFZpZXdNb2RlV2lkZ2V0LFxuICAgIHBhcnNlVmFsdWVCeVR5cGUsXG4gICAgZ2V0RmllbGRUeXBlV2lkZ2V0VHlwZXNNYXAsXG4gICAgZ2V0RGF0YVRhYmxlRmlsdGVyV2lkZ2V0LFxuICAgIGdldEVkaXRNb2RlV2lkZ2V0LFxuICAgIGdldERlZmF1bHRWYWx1ZVxufSBmcm9tICcuL3V0aWxzL2xpdmUtdXRpbHMnO1xuZXhwb3J0IHtcbiAgICBnZXRPYmpWYWx1ZUJ5S2V5LFxuICAgIGdldEV2YWx1YXRlZERhdGEsXG4gICAgaXNBY3RpdmVOYXZJdGVtLFxuICAgIGdldE9yZGVyQnlFeHByLFxuICAgIGlzRGF0YVNldFdpZGdldCxcbiAgICBnZXRJbWFnZVVybCxcbiAgICBnZXRCYWNrR3JvdW5kSW1hZ2VVcmwsXG4gICAgcHJvdmlkZUFzLFxuICAgIHByb3ZpZGVBc1dpZGdldFJlZixcbiAgICBwcm92aWRlQXNEaWFsb2dSZWYsXG4gICAgdW5zdXBwb3J0ZWRTdGF0ZVBlcnNpc3RlbmNlVHlwZXMsXG4gICAgTkFWSUdBVElPTl9UWVBFLFxuICAgIElOUFVUTU9ERSxcbiAgICBBVVRPQ0xPU0VfVFlQRSxcbiAgICBnZXRXYXRjaElkZW50aWZpZXIsXG4gICAgZ2V0TWF0Y2hNb2RlVHlwZXNNYXAsXG4gICAgZ2V0TWF0Y2hNb2RlTXNncyxcbiAgICBnZXRDb25kaXRpb25hbENsYXNzZXMsXG4gICAgcHJlcGFyZUZpZWxkRGVmcyAsXG4gICAgZ2V0Q29udGFpbmVyVGFyZ2V0Q2xhc3MsXG4gICAgZXh0cmFjdERhdGFTb3VyY2VOYW1lLFxuICAgIHNldEZvY3VzVHJhcCxcbiAgICBnZXRLZXlib2FyZEZvY3VzYWJsZUVsZW1lbnRzXG59IGZyb20gJy4vdXRpbHMvd2lkZ2V0LXV0aWxzJztcbmV4cG9ydCB7XG4gICAgQmFzZUNvbXBvbmVudFxufSBmcm9tICcuL3dpZGdldHMvY29tbW9uL2Jhc2UvYmFzZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9iYXNlL2Jhc2UtY29udGFpbmVyLmNvbXBvbmVudCc7XG5leHBvcnQge1xuICAgIERhdGFzZXRBd2FyZU5hdkNvbXBvbmVudCxcbiAgICBOYXZOb2RlXG59IGZyb20gJy4vd2lkZ2V0cy9jb21tb24vYmFzZS9kYXRhc2V0LWF3YXJlLW5hdi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9iYXNlL3BhcnRpYWwtY29udGFpbmVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2Jhc2UvYmFzZS1maWVsZC12YWxpZGF0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2l0ZW0tdGVtcGxhdGUvaXRlbS10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9yZXBlYXQtdGVtcGxhdGUvcmVwZWF0LXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2Jhc2Uvc3R5bGFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vbWVzc2FnZS9tZXNzYWdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL3B1bGwtdG8tcmVmcmVzaC9wdWxsLXRvLXJlZnJlc2gnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9wYXJ0aWFsL3BhcnRpYWwuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vcmVkcmF3L3JlZHJhd2FibGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9mcmFtZXdvcmsvY29uc3RhbnRzJztcbmV4cG9ydCB7XG4gICAgdXBkYXRlRGV2aWNlVmlld1xufSBmcm9tICcuL3dpZGdldHMvZnJhbWV3b3JrL2RldmljZXZpZXcnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2ZyYW1ld29yay9zdHlsZXInO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2ZyYW1ld29yay90eXBlcyc7XG5leHBvcnQge1xuICAgIGdldFdpZGdldFByb3BzQnlUeXBlLFxuICAgIHJlZ2lzdGVyLFxuICAgIHJlZ2lzdGVyRm9ybVdpZGdldCxcbiAgICBQUk9QX1RZUEUsXG4gICAgUFJPUF9TVFJJTkcsXG4gICAgUFJPUF9OVU1CRVIsXG4gICAgUFJPUF9CT09MRUFOLFxuICAgIFBST1BfQU5ZXG59IGZyb20gJy4vd2lkZ2V0cy9mcmFtZXdvcmsvd2lkZ2V0LXByb3BzJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vZGlhbG9nL2RpYWxvZy5zZXJ2aWNlJztcbmV4cG9ydCB7XG4gICAgVG9EYXRlUGlwZSxcbiAgICBUb051bWJlclBpcGUsXG4gICAgVG9DdXJyZW5jeVBpcGUsXG4gICAgUHJlZml4UGlwZSxcbiAgICBTdWZmaXhQaXBlLFxuICAgIEN1c3RvbVBpcGUsXG4gICAgVGltZUZyb21Ob3dQaXBlLFxuICAgIE51bWJlclRvU3RyaW5nUGlwZSxcbiAgICBTdHJpbmdUb051bWJlclBpcGUsXG4gICAgRmlsdGVyUGlwZSxcbiAgICBGaWxlU2l6ZVBpcGUsXG4gICAgRmlsZUljb25DbGFzc1BpcGUsXG4gICAgU3RhdGVDbGFzc1BpcGUsXG4gICAgRmlsZUV4dGVuc2lvbkZyb21NaW1lUGlwZSxcbiAgICBUcmFpbGluZ1plcm9EZWNpbWFsUGlwZVxufSBmcm9tICcuL3BpcGVzL2N1c3RvbS1waXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3RydXN0LWFzLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9zYW5pdGl6ZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvaW1hZ2UucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2NvbnRhaW5lci9jb250YWluZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vbGF6eS1sb2FkL2xhenktbG9hZC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9wYXJ0aWFsLXBhcmFtL3BhcnRpYWwtcGFyYW0uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vc21vb3RoLXNjcm9sbC9zbW9vdGgtc2Nyb2xsLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2Jhc2UvdGV4dC1jb250ZW50LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvc2hvdy1pbi1kZXZpY2UuZGlyZWN0aXZlJztcbiJdfQ==
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLE9BQU8sRUFDSCxlQUFlLEVBQ2YsU0FBUyxFQUNULGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQiwwQkFBMEIsRUFDMUIsMEJBQTBCLEVBQzFCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGFBQWEsRUFDaEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixzQkFBc0IsRUFDdEIsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osV0FBVyxFQUNkLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNILFNBQVMsRUFDVCxlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsd0JBQXdCLEVBQ3hCLGdCQUFnQixFQUNoQiwwQkFBMEIsRUFDMUIsd0JBQXdCLEVBQ3hCLGlCQUFpQixFQUNqQixlQUFlLEVBQ2xCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNILGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsZUFBZSxFQUNmLFdBQVcsRUFDWCxxQkFBcUIsRUFDckIsU0FBUyxFQUNULGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsZ0NBQWdDLEVBQ2hDLGVBQWUsRUFDZixTQUFTLEVBQ1QsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixZQUFZLEVBQ1osNEJBQTRCLEVBQy9CLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNILGFBQWEsRUFDaEIsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5QyxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELE9BQU8sRUFDSCx3QkFBd0IsRUFFM0IsTUFBTSxtREFBbUQsQ0FBQztBQUMzRCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLE9BQU8sRUFDSCxnQkFBZ0IsRUFDbkIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsT0FBTyxFQUNILG9CQUFvQixFQUNwQixRQUFRLEVBQ1Isa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsV0FBVyxFQUNYLFlBQVksRUFDWixRQUFRLEVBQ1gsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELE9BQU8sRUFDSCxVQUFVLEVBQ1YsWUFBWSxFQUNaLGNBQWMsRUFDZCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFVBQVUsRUFDVixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QseUJBQXlCLEVBQ3pCLHVCQUF1QixFQUMxQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHVDQUF1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGl2ZV9PcGVyYXRpb25zIH0gZnJvbSAnLi91dGlscy9kYXRhLXV0aWxzJztcblxuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzLm1vZHVsZSc7XG5leHBvcnQge1xuICAgIExpdmVfT3BlcmF0aW9ucyxcbiAgICBBTExGSUVMRFMsXG4gICAgTElWRV9DT05TVEFOVFMsXG4gICAgcGVyZm9ybURhdGFPcGVyYXRpb24sXG4gICAgcmVmcmVzaERhdGFTb3VyY2UsXG4gICAgZmV0Y2hSZWxhdGVkRmllbGREYXRhLFxuICAgIGludGVycG9sYXRlQmluZEV4cHJlc3Npb25zLFxuICAgIGdldERpc3RpbmN0RmllbGRQcm9wZXJ0aWVzLFxuICAgIGdldERpc3RpbmN0VmFsdWVzLFxuICAgIGZldGNoRGlzdGluY3RWYWx1ZXMsXG4gICAgZ2V0RGlzdGluY3RWYWx1ZXNGb3JGaWVsZCxcbiAgICBnZXRSYW5nZUZpZWxkVmFsdWUsXG4gICAgZ2V0UmFuZ2VNYXRjaE1vZGUsXG4gICAgZ2V0RW5hYmxlRW1wdHlGaWx0ZXIsXG4gICAgZ2V0RW1wdHlNYXRjaE1vZGUsXG4gICAgY3JlYXRlQXJyYXlGcm9tLFxuICAgIGFwcGx5RmlsdGVyT25GaWVsZCxcbiAgICB0cmFuc2Zvcm1EYXRhXG59IGZyb20gJy4vdXRpbHMvZGF0YS11dGlscyc7XG5leHBvcnQge1xuICAgIGdldE9yZGVyZWREYXRhc2V0LFxuICAgIHRyYW5zZm9ybURhdGFXaXRoS2V5cyxcbiAgICBleHRyYWN0RGF0YUFzQXJyYXksXG4gICAgY29udmVydERhdGFUb09iamVjdCxcbiAgICB0cmFuc2Zvcm1Gb3JtRGF0YSxcbiAgICBnZXRVbmlxT2Jqc0J5RGF0YUZpZWxkLFxuICAgIHNldEl0ZW1CeUNvbXBhcmUsXG4gICAgZ3JvdXBEYXRhLFxuICAgIGZpbHRlckRhdGUsXG4gICAgdG9nZ2xlQWxsSGVhZGVycyxcbiAgICBoYW5kbGVIZWFkZXJDbGljayxcbiAgICBjb25maWd1cmVEbkQsXG4gICAgRGF0YVNldEl0ZW1cbn0gZnJvbSAnLi91dGlscy9mb3JtLXV0aWxzJztcbmV4cG9ydCB7XG4gICAgRURJVF9NT0RFLFxuICAgIHNldEhlYWRlckNvbmZpZyxcbiAgICBzZXRIZWFkZXJDb25maWdGb3JUYWJsZSxcbiAgICBnZXRSb3dPcGVyYXRpb25zQ29sdW1uLFxuICAgIGdldEZpZWxkTGF5b3V0Q29uZmlnLFxuICAgIGdldERlZmF1bHRWaWV3TW9kZVdpZGdldCxcbiAgICBwYXJzZVZhbHVlQnlUeXBlLFxuICAgIGdldEZpZWxkVHlwZVdpZGdldFR5cGVzTWFwLFxuICAgIGdldERhdGFUYWJsZUZpbHRlcldpZGdldCxcbiAgICBnZXRFZGl0TW9kZVdpZGdldCxcbiAgICBnZXREZWZhdWx0VmFsdWVcbn0gZnJvbSAnLi91dGlscy9saXZlLXV0aWxzJztcbmV4cG9ydCB7XG4gICAgZ2V0T2JqVmFsdWVCeUtleSxcbiAgICBnZXRFdmFsdWF0ZWREYXRhLFxuICAgIGlzQWN0aXZlTmF2SXRlbSxcbiAgICBoYXNMaW5rVG9DdXJyZW50UGFnZSxcbiAgICBnZXRPcmRlckJ5RXhwcixcbiAgICBpc0RhdGFTZXRXaWRnZXQsXG4gICAgZ2V0SW1hZ2VVcmwsXG4gICAgZ2V0QmFja0dyb3VuZEltYWdlVXJsLFxuICAgIHByb3ZpZGVBcyxcbiAgICBwcm92aWRlQXNXaWRnZXRSZWYsXG4gICAgcHJvdmlkZUFzRGlhbG9nUmVmLFxuICAgIHVuc3VwcG9ydGVkU3RhdGVQZXJzaXN0ZW5jZVR5cGVzLFxuICAgIE5BVklHQVRJT05fVFlQRSxcbiAgICBJTlBVVE1PREUsXG4gICAgQVVUT0NMT1NFX1RZUEUsXG4gICAgZ2V0V2F0Y2hJZGVudGlmaWVyLFxuICAgIGdldE1hdGNoTW9kZVR5cGVzTWFwLFxuICAgIGdldE1hdGNoTW9kZU1zZ3MsXG4gICAgZ2V0Q29uZGl0aW9uYWxDbGFzc2VzLFxuICAgIHByZXBhcmVGaWVsZERlZnMgLFxuICAgIGdldENvbnRhaW5lclRhcmdldENsYXNzLFxuICAgIGV4dHJhY3REYXRhU291cmNlTmFtZSxcbiAgICBzZXRGb2N1c1RyYXAsXG4gICAgZ2V0S2V5Ym9hcmRGb2N1c2FibGVFbGVtZW50c1xufSBmcm9tICcuL3V0aWxzL3dpZGdldC11dGlscyc7XG5leHBvcnQge1xuICAgIEJhc2VDb21wb25lbnRcbn0gZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9iYXNlL2Jhc2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vYmFzZS9iYXNlLWNvbnRhaW5lci5jb21wb25lbnQnO1xuZXhwb3J0IHtcbiAgICBEYXRhc2V0QXdhcmVOYXZDb21wb25lbnQsXG4gICAgTmF2Tm9kZVxufSBmcm9tICcuL3dpZGdldHMvY29tbW9uL2Jhc2UvZGF0YXNldC1hd2FyZS1uYXYuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vYmFzZS9wYXJ0aWFsLWNvbnRhaW5lci5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9iYXNlL2Jhc2UtZmllbGQtdmFsaWRhdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9pdGVtLXRlbXBsYXRlL2l0ZW0tdGVtcGxhdGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vcmVwZWF0LXRlbXBsYXRlL3JlcGVhdC10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9iYXNlL3N0eWxhYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL21lc3NhZ2UvbWVzc2FnZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9wdWxsLXRvLXJlZnJlc2gvcHVsbC10by1yZWZyZXNoJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vcGFydGlhbC9wYXJ0aWFsLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL3JlZHJhdy9yZWRyYXdhYmxlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvZnJhbWV3b3JrL2NvbnN0YW50cyc7XG5leHBvcnQge1xuICAgIHVwZGF0ZURldmljZVZpZXdcbn0gZnJvbSAnLi93aWRnZXRzL2ZyYW1ld29yay9kZXZpY2V2aWV3JztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9mcmFtZXdvcmsvc3R5bGVyJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9mcmFtZXdvcmsvdHlwZXMnO1xuZXhwb3J0IHtcbiAgICBnZXRXaWRnZXRQcm9wc0J5VHlwZSxcbiAgICByZWdpc3RlcixcbiAgICByZWdpc3RlckZvcm1XaWRnZXQsXG4gICAgUFJPUF9UWVBFLFxuICAgIFBST1BfU1RSSU5HLFxuICAgIFBST1BfTlVNQkVSLFxuICAgIFBST1BfQk9PTEVBTixcbiAgICBQUk9QX0FOWVxufSBmcm9tICcuL3dpZGdldHMvZnJhbWV3b3JrL3dpZGdldC1wcm9wcyc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XG5leHBvcnQge1xuICAgIFRvRGF0ZVBpcGUsXG4gICAgVG9OdW1iZXJQaXBlLFxuICAgIFRvQ3VycmVuY3lQaXBlLFxuICAgIFByZWZpeFBpcGUsXG4gICAgU3VmZml4UGlwZSxcbiAgICBDdXN0b21QaXBlLFxuICAgIFRpbWVGcm9tTm93UGlwZSxcbiAgICBOdW1iZXJUb1N0cmluZ1BpcGUsXG4gICAgU3RyaW5nVG9OdW1iZXJQaXBlLFxuICAgIEZpbHRlclBpcGUsXG4gICAgRmlsZVNpemVQaXBlLFxuICAgIEZpbGVJY29uQ2xhc3NQaXBlLFxuICAgIFN0YXRlQ2xhc3NQaXBlLFxuICAgIEZpbGVFeHRlbnNpb25Gcm9tTWltZVBpcGUsXG4gICAgVHJhaWxpbmdaZXJvRGVjaW1hbFBpcGVcbn0gZnJvbSAnLi9waXBlcy9jdXN0b20tcGlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy90cnVzdC1hcy5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvc2FuaXRpemUucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2ltYWdlLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9jb250YWluZXIvY29udGFpbmVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL2xhenktbG9hZC9sYXp5LWxvYWQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21tb24vcGFydGlhbC1wYXJhbS9wYXJ0aWFsLXBhcmFtLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tbW9uL3Ntb290aC1zY3JvbGwvc21vb3RoLXNjcm9sbC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2NvbW1vbi9iYXNlL3RleHQtY29udGVudC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL3Nob3ctaW4tZGV2aWNlLmRpcmVjdGl2ZSc7XG4iXX0=
@@ -118,6 +118,21 @@ export const isActiveNavItem = (link, routeName) => {
118
118
  const routeRegex = new RegExp('^(#\/|#)' + routeName + '$');
119
119
  return routeRegex.test(link);
120
120
  };
121
+ /**
122
+ * returns true if the menu has link to the current page.
123
+ * @param nodes
124
+ * @param routeUrl
125
+ */
126
+ export const hasLinkToCurrentPage = (nodes, routeUrl) => {
127
+ return nodes.some(node => {
128
+ if (isActiveNavItem(node.link, routeUrl)) {
129
+ return true;
130
+ }
131
+ if (node.children) {
132
+ return hasLinkToCurrentPage(node.children, routeUrl);
133
+ }
134
+ });
135
+ };
121
136
  /**
122
137
  * Returns the orderBy Expression based on the 'sort 'option in pageable object
123
138
  * returned by backend
@@ -463,4 +478,4 @@ export const getKeyboardFocusableElements = (element) => {
463
478
  })[0];
464
479
  };
465
480
  export { ɵ0, ɵ1, ɵ2, ɵ3 };
466
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9iYXNlL3NyYy91dGlscy93aWRnZXQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN0TCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUl4RSxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsUUFBUTtJQUN2RyxjQUFjLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2hJOzs7O0dBSUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO0lBQ3BDLElBQUksT0FBTyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixDQUFDO0lBRWpHLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWpELEtBQUssQ0FBQyxHQUFH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RyxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQzNELGlCQUFpQixFQUFFLGlCQUFpQjtRQUNwQyxjQUFjLEVBQUUscUJBQXFCO0tBQ3hDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQTtBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLE9BQW9CLEVBQUUsRUFBRTtJQUNqRSxPQUFPLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUM1QiwwS0FBMEssQ0FDN0ssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUNYLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDVixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGVuY29kZVVybCwgaXNWYWxpZFdlYlVSTCwgc3RyaW5nU3RhcnRzV2l0aCwgRm9ybVdpZGdldFR5cGUsICRwYXJzZUV4cHIsIGdldENsb25lZE9iamVjdCwgcHJldHRpZnlMYWJlbCwgaW5pdENhcHMsIGRlSHlwaGVuYXRlLCBjaGVja0lzQ3VzdG9tUGlwZUV4cHJlc3Npb24gfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBEaWFsb2dSZWYsIFdpZGdldFJlZiB9IGZyb20gJy4uL3dpZGdldHMvZnJhbWV3b3JrL3R5cGVzJztcbmltcG9ydCB7IGNyZWF0ZUZvY3VzVHJhcCB9IGZyb20gJ0B3YXZlbWFrZXIvZm9jdXMtdHJhcC9kaXN0L2ZvY3VzLXRyYXAnO1xuXG5kZWNsYXJlIGNvbnN0IF87XG5cbmNvbnN0IERBVEFTRVRfV0lER0VUUyA9IG5ldyBTZXQoW0Zvcm1XaWRnZXRUeXBlLlNFTEVDVCwgRm9ybVdpZGdldFR5cGUuQ0hFQ0tCT1hTRVQsIEZvcm1XaWRnZXRUeXBlLlJBRElPU0VULFxuICAgIEZvcm1XaWRnZXRUeXBlLlNXSVRDSCwgRm9ybVdpZGdldFR5cGUuQVVUT0NPTVBMRVRFLCBGb3JtV2lkZ2V0VHlwZS5DSElQUywgRm9ybVdpZGdldFR5cGUuVFlQRUFIRUFELCBGb3JtV2lkZ2V0VHlwZS5SQVRJTkddKTtcbi8qKlxuICogUmV0dXJucyB0aGUgcGFyc2VkLCB1cGRhdGVkIGJvdW5kIGV4cHJlc3Npb25cbiAqIGlmIHRoZSBleHByZXNzaW9uIGlzICRbZGF0YVskaV1bZmlyc3ROYW1lXV0gKyAnLS0nICsgJFtsYXN0TmFtZV0gKyAnLS0nICsgJFsnQElEQCddXG4gKiByZXR1cm5zIF9fMS5maXJzdE5hbWUgKyAnLS0nICsgbGFzdE5hbWUgKyAnLS0nICsgX18xWydASURAJ11cbiAqL1xuY29uc3QgZ2V0VXBkYXRlZEV4cHIgPSAoZXhwcjogc3RyaW5nKSA9PiB7XG4gICAgbGV0IHVwZGF0ZWQgPSAnJywgY2gsIG5leHQsIGksIGosIG1hdGNoQ2gsIG1hdGNoQ291bnQsIGlzUXVvdGVkU3RyLCBzdWJTdHIsIGlzUXVvdGVkU3RyRXZhbHVhdGVkO1xuXG4gICAgZXhwciA9IGV4cHIucmVwbGFjZSgvXFwkXFxbZGF0YVxcW1xcJGlcXF0vZywgJyRbX18xJyk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgZXhwci5sZW5ndGg7IGkrKykge1xuICAgICAgICBjaCA9IGV4cHJbaV07XG4gICAgICAgIG5leHQgPSBleHByW2kgKyAxXTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogaWYgdGhlIGV4cHJlc3Npb24gc3RhcnRzIHdpdGggJFssIGNoZWNrIHRoZSBuZXh0KGNoKSBjaGFyYWN0ZXIsXG4gICAgICAgICAqICAgIGlmIGNoIGlzIGEgcXVvdGUoJywgXCIpIGNoYW5nZSB0aGUgZXhwciB0byBfX1tcbiAgICAgICAgICogICAgaWYgY2ggaXMgYSB3aGl0ZVNwYWNlLCByZW1vdmUgaXRcbiAgICAgICAgICogICAgZWxzZSByZW1vdmUgJFtcbiAgICAgICAgICovXG4gICAgICAgIGlmIChjaCA9PT0gJyQnICYmIG5leHQgPT09ICdbJykge1xuICAgICAgICAgICAgbWF0Y2hDb3VudCA9IDE7XG4gICAgICAgICAgICBpc1F1b3RlZFN0ckV2YWx1YXRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgaXNRdW90ZWRTdHIgPSBmYWxzZTtcblxuICAgICAgICAgICAgZm9yIChqID0gaSArIDI7IGogPCBleHByLmxlbmd0aDsgaisrKSB7XG5cbiAgICAgICAgICAgICAgICBtYXRjaENoID0gZXhwcltqXTtcblxuICAgICAgICAgICAgICAgIGlmIChtYXRjaENoID09PSAnICcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFpc1F1b3RlZFN0ckV2YWx1YXRlZCkge1xuICAgICAgICAgICAgICAgICAgICBpc1F1b3RlZFN0ciA9IGV4cHJbal0gPT09ICdcIicgfHwgZXhwcltqXSA9PT0gJ1xcJyc7XG4gICAgICAgICAgICAgICAgICAgIGlzUXVvdGVkU3RyRXZhbHVhdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobWF0Y2hDaCA9PT0gJ1snKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoQ291bnQrKztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1hdGNoQ2ggPT09ICddJykge1xuICAgICAgICAgICAgICAgICAgICBtYXRjaENvdW50LS07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFtYXRjaENvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHN1YlN0ciA9IGV4cHIuc3Vic3RyaW5nKGkgKyAyLCBqKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUXVvdGVkU3RyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkICs9ICdfXzFbJyArIHN1YlN0ciArICddJztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWQgKz0gc3ViU3RyO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaSA9IGo7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1cGRhdGVkICs9IGNoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVwZGF0ZWQ7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHZhbHVlIGZvciB0aGUgcHJvdmlkZWQga2V5IGluIHRoZSBvYmplY3RcbiAqL1xuZXhwb3J0IGNvbnN0IGdldE9ialZhbHVlQnlLZXkgPSAob2JqOiBhbnksIHN0cktleTogc3RyaW5nKSA9PiB7XG4gICAgLyogY2hlY2sgZm9yIHRoZSBrZXktc3RyaW5nICovXG4gICAgaWYgKHN0cktleSkge1xuICAgICAgICBsZXQgdmFsO1xuICAgICAgICAvKiBjb252ZXJ0IGluZGV4ZXMgdG8gcHJvcGVydGllcywgc28gYXMgdG8gd29yayBmb3IgZXZlbiAna2V5MVswXS5jaGlsZDEnKi9cbiAgICAgICAgc3RyS2V5LnJlcGxhY2UoL1xcWyhcXHcrKVxcXS9nLCAnLiQxJykuc3BsaXQoJy4nKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAvLyBJZiBvYmogaXMgbnVsbCwgdGhlbiBhc3NpZ24gdmFsIHRvIG51bGwuXG4gICAgICAgICAgICB2YWwgPSAodmFsICYmIHZhbFtrZXldKSB8fCAoXy5pc051bGwob2JqKSA/IG9iaiA6IG9ialtrZXldKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG59O1xuXG4vKipcbiAqIHJldHVybnMgdGhlIGRpc3BsYXkgZmllbGQgZGF0YSBmb3IgYW55IGRhdGFzZXQgd2lkZ2V0c1xuICogQmFzZWQgb24gdGhlIGJpbmQgZGlzcGxheSBleHByZXNzaW9uIG9yIGRpc3BsYXkgZXhwcmVzc2lvbiBvciBkaXNwbGF5IG5hbWUsXG4gKiBkYXRhIGlzIGV4dHJhY3RlZCBhbmQgZm9ybWF0dGVkIGZyb20gdGhlIHBhc3NlZCBvcHRpb24gb2JqZWN0XG4gKiBJZiB0aGVyZSBpcyBmaWVsZCBpcyBzcGVjaWZpZWQsIGZpZWxkIHZhbHVlIGlzIG9idGFpbmVkIGZyb20gdGhlIGRhdGFPYmouXG4gKiBJZiBleHByZXNzaW9uIGlzIGdpdmVuLCBldmFsdWF0ZXMgdGhlIGV4cHJlc3Npb24gdmFsdWUuXG4gKiBlbHNlIGNoZWNrIGZvciBiaW5kRXhwcmVzc2lvbiwgZXh0cmFjdCB0aGUgdmFsdWUgZnJvbSB0aGUgZGF0YU9ialxuICovXG5leHBvcnQgY29uc3QgZ2V0RXZhbHVhdGVkRGF0YSA9IChkYXRhT2JqOiBhbnksIG9wdGlvbnM6IGFueSwgY29udGV4dD86IGFueSkgPT4ge1xuICAgIGxldCBleHByZXNzaW9uVmFsdWU7XG4gICAgY29uc3QgZmllbGQgPSBvcHRpb25zLmZpZWxkLFxuICAgICAgICBleHByID0gb3B0aW9ucy5leHByZXNzaW9uLFxuICAgICAgICBiaW5kRXhwciA9IG9wdGlvbnMuYmluZEV4cHJlc3Npb247XG5cbiAgICAvLyBpZiBrZXkgaXMgYm91bmQgZXhwcmVzc2lvblxuICAgIGlmIChiaW5kRXhwcikge1xuICAgICAgICAvLyByZW1vdmUgJ2JpbmQ6JyBwcmVmaXggZnJvbSB0aGUgYm91bmRFeHByZXNzaW9uTmFtZVxuICAgICAgICBleHByZXNzaW9uVmFsdWUgPSBiaW5kRXhwci5yZXBsYWNlKCdiaW5kOicsICcnKTtcblxuICAgICAgICAvLyBGb3IgYmluZCBleHByZXNzaW9uIHBhc3NpbmcgdGhlIGxhc3QgYXJndW1lbnQgdGhhdCB0aGUgb2JqZWN0IG9mIGRhdGFzZXQgaXRlbS5cbiAgICAgICAgLy8gTm90ZTogRm9yIHBhcnNlIGV4cHJlc3Npb24gd2UgYXJlIHNlbmRpbmcgZGF0YU9iaiB3aXRoIHRoZSBwcm9wZXJ5IG5hbWUgXCJfXzFcIiwgd2UgdXNlZCB0aGUgc2FtZSBwcm9wZXJ5IHRvIHNlbmQgdGhlIGxhc3QgYXJndW1lbnQgYXMgZGF0YXNldCBpdGVtXG4gICAgICAgIGlmKGNoZWNrSXNDdXN0b21QaXBlRXhwcmVzc2lvbihleHByZXNzaW9uVmFsdWUpKXtcbiAgICAgICAgICAgIGV4cHJlc3Npb25WYWx1ZSA9IGV4cHJlc3Npb25WYWx1ZSsnOiBfXzEnO1xuICAgICAgICB9XG4gICAgICAgIC8vIHBhcnNlIHRoZSBleHByZXNzaW9uVmFsdWUgZm9yIHJlcGxhY2luZyBhbGwgdGhlIGV4cHJlc3Npb25zIHdpdGggdmFsdWVzIGluIHRoZSBvYmplY3RcbiAgICAgICAgZXhwcmVzc2lvblZhbHVlID0gZ2V0VXBkYXRlZEV4cHIoZXhwcmVzc2lvblZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBleHByZXNzaW9uVmFsdWUgPSBleHByID8gZXhwciA6IGZpZWxkO1xuICAgIH1cblxuICAgIC8vIEhhbmRsaW5nIGZpZWxkIG5hbWUgd2l0aCBzcGVjaWFsIGNoYXJlY3RlcnNcbiAgICAvLyBFeDogZmllbGQgPSBcImYgbmFtZVwiXG4gICAgaWYgKCFiaW5kRXhwciAmJiAhZXhwcikge1xuICAgICAgICByZXR1cm4gXy5nZXQoZGF0YU9iaiwgZmllbGQpO1xuICAgIH1cblxuICAgIHJldHVybiAkcGFyc2VFeHByKGV4cHJlc3Npb25WYWx1ZSkoY29udGV4dCwgT2JqZWN0LmFzc2lnbih7fSwgZGF0YU9iaiwge19fMTogZGF0YU9ian0pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0FjdGl2ZU5hdkl0ZW0gPSAobGluaywgcm91dGVOYW1lKSA9PiB7XG4gICAgaWYgKCFsaW5rIHx8ICFyb3V0ZU5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByb3V0ZU5hbWUgPSByb3V0ZU5hbWUuaW5kZXhPZignPycpID09PSAtMSA/IHJvdXRlTmFtZSA6IHJvdXRlTmFtZS5zdWJzdHJpbmcoMCwgcm91dGVOYW1lLmluZGV4T2YoJz8nKSk7XG4gICAgbGluayA9IGxpbmsuaW5kZXhPZignPycpID09PSAtMSA/IGxpbmsgOiBsaW5rLnN1YnN0cmluZygwLCBsaW5rLmluZGV4T2YoJz8nKSk7XG4gICAgY29uc3Qgcm91dGVSZWdleCA9IG5ldyBSZWdFeHAoJ14oI1xcL3wjKScgKyByb3V0ZU5hbWUgKyAnJCcpO1xuICAgIHJldHVybiByb3V0ZVJlZ2V4LnRlc3QobGluayk7XG59O1xuXG5cbi8qKlxuICogUmV0dXJucyB0aGUgb3JkZXJCeSBFeHByZXNzaW9uIGJhc2VkIG9uIHRoZSAnc29ydCAnb3B0aW9uIGluIHBhZ2VhYmxlIG9iamVjdFxuICogcmV0dXJuZWQgYnkgYmFja2VuZFxuICogQHBhcmFtIHBhZ2VhYmxlT2JqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgY29uc3QgZ2V0T3JkZXJCeUV4cHIgPSBwYWdlYWJsZU9iaiA9PiB7XG4gICAgcGFnZWFibGVPYmogPSBwYWdlYWJsZU9iaiB8fCBbXTtcbiAgICBjb25zdCBleHByZXNzaW9ucyAgICAgICA9IFtdLFxuICAgICAgICBLRVlfVkFMX1NFUEFSQVRPUiA9ICcgJyxcbiAgICAgICAgRklFTERfU0VQQVJBVE9SICAgPSAnLCc7XG4gICAgXy5mb3JFYWNoKHBhZ2VhYmxlT2JqLCBvYmogPT4ge1xuICAgICAgICBpZiAob2JqLmRpcmVjdGlvbikge1xuICAgICAgICAgICAgZXhwcmVzc2lvbnMucHVzaChvYmoucHJvcGVydHkgKyBLRVlfVkFMX1NFUEFSQVRPUiArIG9iai5kaXJlY3Rpb24udG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBfLmpvaW4oZXhwcmVzc2lvbnMsIEZJRUxEX1NFUEFSQVRPUik7XG59O1xuXG5leHBvcnQgY29uc3QgaXNEYXRhU2V0V2lkZ2V0ID0gd2lkZ2V0ID0+IHtcbiAgICByZXR1cm4gREFUQVNFVF9XSURHRVRTLmhhcyh3aWRnZXQpO1xufTtcblxuLypUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHVybCB0byB0aGUgaW1hZ2UgYWZ0ZXIgY2hlY2tpbmcgdGhlIHZhbGlkaXR5IG9mIHVybCovXG5leHBvcnQgY29uc3QgZ2V0SW1hZ2VVcmwgPSAodXJsU3RyaW5nLCBzaG91bGRFbmNvZGU/LCBkZWZhdWx0VXJsPykgPT4ge1xuICAgIC8qSW4gc3R1ZGlvIG1vZGUgYmVmb3JlIHNldHRpbmcgcGljdHVyZXNvdXJjZSwgY2hlY2sgaWYgdGhlIHN0dWRpb0NvbnRyb2xsZXIgaXMgbG9hZGVkIGFuZCBuZXcgcGljdHVyZXNvdXJjZSBpcyBpbiAnc3R5bGVzL2ltYWdlcy8nIHBhdGggb3Igbm90LlxuICAgICAqIFdoZW4gcGFnZSBpcyByZWZyZXNoZWQsIGxvYWRlci5naWYgd2lsbCBiZSBsb2FkZWQgZmlyc3QgYW5kIGl0IHdpbGwgYmUgaW4gJ3N0eWxlL2ltYWdlcy8nLlxuICAgICAqIFByZXBlbmQgJ3NlcnZpY2VzL3Byb2plY3RzLycgKyAkcm9vdFNjb3BlLnByb2plY3QuaWQgKyAnL3dlYi9yZXNvdXJjZXMvaW1hZ2VzL2ltYWdlbGlzdHMvJyAgaWYgdGhlIGltYWdlIHVybCBpcyBqdXN0IGltYWdlIG5hbWUgaW4gdGhlIHByb2plY3Qgcm9vdCxcbiAgICAgKiBhbmQgaWYgdGhlIHVybCBwb2ludGluZyB0byByZXNvdXJjZXMvaW1hZ2VzLyB0aGVuICdzZXJ2aWNlcy9wcm9qZWN0cy8nICsgJHJvb3RTY29wZS5wcm9qZWN0LmlkICsgJy93ZWIvJyovXG4gICAgaWYgKGlzVmFsaWRXZWJVUkwodXJsU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gdXJsU3RyaW5nO1xuICAgIH1cblxuICAgIC8vIElmIG5vIHZhbHVlIGlzIHByb3ZpZGVkIGZvciBwaWN0dXJlc291cmNlIGFzc2lnbiBwaWN0dXJlcGxhY2Vob2xkZXIgb3IgZGVmYXVsdC1pbWFnZVxuICAgIGlmICghdXJsU3RyaW5nKSB7XG4gICAgICAgIHVybFN0cmluZyA9IGRlZmF1bHRVcmwgfHwgJ3Jlc291cmNlcy9pbWFnZXMvaW1hZ2VsaXN0cy9kZWZhdWx0LWltYWdlLnBuZyc7XG4gICAgfVxuXG4gICAgdXJsU3RyaW5nID0gc2hvdWxkRW5jb2RlID8gZW5jb2RlVXJsKHVybFN0cmluZykgOiB1cmxTdHJpbmc7XG5cbiAgICAvLyBpZiB0aGUgcmVzb3VyY2UgdG8gYmUgbG9hZGVkIGlzIGluc2lkZSBhIHByZWZhYlxuICAgIGlmIChzdHJpbmdTdGFydHNXaXRoKHVybFN0cmluZywgJ3NlcnZpY2VzL3ByZWZhYnMnKSkge1xuICAgICAgICByZXR1cm4gdXJsU3RyaW5nO1xuICAgIH1cblxuICAgIHJldHVybiB1cmxTdHJpbmc7XG59O1xuXG4vKlRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHVybCB0byB0aGUgYmFja2dyb3VuZEltYWdlKi9cbmV4cG9ydCBjb25zdCBnZXRCYWNrR3JvdW5kSW1hZ2VVcmwgPSAodXJsU3RyaW5nKSA9PiB7XG4gICAgaWYgKHVybFN0cmluZyA9PT0gJycgfHwgdXJsU3RyaW5nID09PSAnbm9uZScpIHtcbiAgICAgICAgcmV0dXJuIHVybFN0cmluZztcbiAgICB9XG4gICAgcmV0dXJuICd1cmwoJyArIGdldEltYWdlVXJsKHVybFN0cmluZykgKyAnKSc7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUFzKHJlZmVyZW5jZTogYW55LCBrZXk6IGFueSwgbXVsdGk/OiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcHJvdmlkZToga2V5LFxuICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiByZWZlcmVuY2UpLFxuICAgICAgICBtdWx0aTogbXVsdGlcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUFzV2lkZ2V0UmVmKHJlZmVyZW5jZTogYW55KSB7XG4gICAgcmV0dXJuIHByb3ZpZGVBcyhyZWZlcmVuY2UsIFdpZGdldFJlZik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQXNEaWFsb2dSZWYocmVmZXJlbmNlOiBhbnkpIHtcbiAgICByZXR1cm4gcHJvdmlkZUFzKHJlZmVyZW5jZSwgRGlhbG9nUmVmKTtcbn1cblxuZXhwb3J0IGNvbnN0IE5BVklHQVRJT05fVFlQRSA9IHtcbiAgICBBRFZBTkNFRDogJ0FkdmFuY2VkJyxcbiAgICBCQVNJQzogJ0Jhc2ljJyxcbiAgICBDTEFTU0lDOiAnQ2xhc3NpYycsXG4gICAgSU5MSU5FOiAnSW5saW5lJyxcbiAgICBOT05FOiAnTm9uZScsXG4gICAgT05ERU1BTkQ6ICdPbi1EZW1hbmQnLFxuICAgIFBBR0VSOiAnUGFnZXInLFxuICAgIFNDUk9MTDogJ1Njcm9sbCdcbn07XG5cbmV4cG9ydCBjb25zdCBJTlBVVE1PREUgPSB7XG4gICAgRklOQU5DSUFMOiAnZmluYW5jaWFsJyxcbiAgICBOQVRVUkFMOiAnbmF0dXJhbCdcbn07XG5cbmV4cG9ydCBjb25zdCBBVVRPQ0xPU0VfVFlQRSA9IHtcbiAgICBPVVRTSURFQ0xJQ0s6ICdvdXRzaWRlQ2xpY2snLFxuICAgIEFMV0FZUzogJ2Fsd2F5cycsXG4gICAgRElTQUJMRUQ6ICdkaXNhYmxlZCdcbn1cblxuZXhwb3J0IGNvbnN0IHVuc3VwcG9ydGVkU3RhdGVQZXJzaXN0ZW5jZVR5cGVzID0gWydPbi1EZW1hbmQnLCAnU2Nyb2xsJ107XG5cbmV4cG9ydCBjb25zdCBnZXRXYXRjaElkZW50aWZpZXIgPSAoLi4uYXJncykgPT4gYXJncy5qb2luKCdfJyk7XG5cbmNvbnN0IHR5cGVzTWFwID0ge1xuICAgIG51bWJlcjogWydudW1iZXInLCAnaW50ZWdlcicsICdiaWdfaW50ZWdlcicsICdzaG9ydCcsICdmbG9hdCcsICdiaWdfZGVjaW1hbCcsICdkb3VibGUnLCAnbG9uZycsICdieXRlJ10sXG4gICAgc3RyaW5nOiBbJ3N0cmluZycsICd0ZXh0J10sXG4gICAgY2hhcmFjdGVyOiBbJ2NoYXJhY3RlciddLFxuICAgIGRhdGU6IFsnZGF0ZScsICd0aW1lJywgICd0aW1lc3RhbXAnLCAnZGF0ZXRpbWUnXVxufTtcbmNvbnN0IG1vZGVzID0ge1xuICAgIG51bWJlcjogWydleGFjdCcsICdub3RlcXVhbHMnLCAnbGVzc3RoYW4nLCAnbGVzc3RoYW5lcXVhbCcsICdncmVhdGVydGhhbicsICdncmVhdGVydGhhbmVxdWFsJywgJ251bGwnLCAnaXNub3RudWxsJ10sXG4gICAgc3RyaW5nOiBbJ2FueXdoZXJlaWdub3JlY2FzZScsICdhbnl3aGVyZScsICdzdGFydGlnbm9yZWNhc2UnLCAnc3RhcnQnLCAnZW5kaWdub3JlY2FzZScsICdlbmQnLCAnZXhhY3RpZ25vcmVjYXNlJywgJ2V4YWN0JywgJ25vdGVxdWFsc2lnbm9yZWNhc2UnLCAnbm90ZXF1YWxzJywgJ251bGwnLCAnaXNub3RudWxsJywgJ2VtcHR5JywgJ2lzbm90ZW1wdHknLCAnbnVsbG9yZW1wdHknXSxcbiAgICBjaGFyYWN0ZXI6IFsnZXhhY3RpZ25vcmVjYXNlJywgJ2V4YWN0JywgJ25vdGVxdWFsc2lnbm9yZWNhc2UnLCAnbm90ZXF1YWxzJywgJ251bGwnLCAnaXNub3RudWxsJywgJ2VtcHR5JywgJ2lzbm90ZW1wdHknLCAnbnVsbG9yZW1wdHknXSxcbiAgICBkYXRlOiBbJ2V4YWN0JywgJ2xlc3N0aGFuJywgJ2xlc3N0aGFuZXF1YWwnLCAnZ3JlYXRlcnRoYW4nLCAnZ3JlYXRlcnRoYW5lcXVhbCcsICdudWxsJywgJ25vdGVxdWFscycsICdpc25vdG51bGwnXVxufTtcbmNvbnN0IG1hdGNoTW9kZVR5cGVzTWFwID0ge1xuICAgIGJvb2xlYW46IFsnZXhhY3QnLCAnbnVsbCcsICdpc25vdG51bGwnXSxcbiAgICBjbG9iOiBbXSxcbiAgICBibG9iOiBbXVxufTtcbmV4cG9ydCBjb25zdCBnZXRNYXRjaE1vZGVUeXBlc01hcCA9IChtdWx0aU1vZGU/KSA9PiB7XG4gICAgaWYgKG11bHRpTW9kZSkge1xuICAgICAgICBtb2Rlcy5udW1iZXIucHVzaCgnaW4nLCAnbm90aW4nLCAnYmV0d2VlbicpO1xuICAgICAgICBtb2Rlcy5kYXRlLnB1c2goJ2JldHdlZW4nKTtcbiAgICAgICAgbW9kZXMuc3RyaW5nLnB1c2goJ2luJywgJ25vdGluJyk7XG4gICAgICAgIG1vZGVzLmNoYXJhY3Rlci5wdXNoKCdpbicsICdub3RpbicpO1xuICAgIH1cblxuICAgIF8uZm9yRWFjaCh0eXBlc01hcCwgKHR5cGVzLCBwcmltVHlwZSkgPT4ge1xuICAgICAgICBfLmZvckVhY2godHlwZXMsIHR5cGUgPT4ge1xuICAgICAgICAgICAgbWF0Y2hNb2RlVHlwZXNNYXBbdHlwZV0gPSBtb2Rlc1twcmltVHlwZV07XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIHRoaXMgaXMgdXNlZCBpbiBmaWx0ZXIgY3JpdGVyaWEgd2hlbiB0aGUgdXNlciB0eXBlcyB0aGUgY29sdW1uIG5hbWUgbWFudWFsbHkgYW5kIHdoZXJlIHdlIGRvbnQga25vdyB0aGUgdHlwZSBvZiB0aGUgY29sdW1uXG4gICAgbWF0Y2hNb2RlVHlwZXNNYXBbJ2RlZmF1bHQnXSA9IF8udW5pb24obW9kZXNbJ251bWJlciddLCBtb2Rlc1snc3RyaW5nJ10sIG1vZGVzWydjaGFyYWN0ZXInXSwgbW9kZXNbJ2RhdGUnXSwgbW9kZXNbJ2RhdGUnXSk7XG4gICAgcmV0dXJuIG1hdGNoTW9kZVR5cGVzTWFwO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1hdGNoTW9kZU1zZ3MgPSAoYXBwTG9jYWxlKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3RhcnQgICAgICAgICAgICA6IGFwcExvY2FsZS5MQUJFTF9TVEFSVFNfV0lUSCxcbiAgICAgICAgc3RhcnRpZ25vcmVjYXNlICA6IGFwcExvY2FsZS5MQUJFTF9TVEFSVFNfV0lUSF9JR05PUkVDQVNFLFxuICAgICAgICBlbmQgICAgICAgICAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0VORFNfV0lUSCxcbiAgICAgICAgZW5kaWdub3JlY2FzZSAgICA6IGFwcExvY2FsZS5MQUJFTF9FTkRTX1dJVEhfSUdOT1JFQ0FTRSxcbiAgICAgICAgYW55d2hlcmUgICAgICAgICA6IGFwcExvY2FsZS5MQUJFTF9DT05UQUlOUyxcbiAgICAgICAgYW55d2hlcmVpZ25vcmVjYXNlOiBhcHBMb2NhbGUuTEFCRUxfQ09OVEFJTlNfSUdOT1JFQ0FTRSxcbiAgICAgICAgZXhhY3QgICAgICAgICAgICA6IGFwcExvY2FsZS5MQUJFTF9JU19FUVVBTF9UTyxcbiAgICAgICAgZXhhY3RpZ25vcmVjYXNlICA6IGFwcExvY2FsZS5MQUJFTF9JU19FUVVBTF9UT19JR05PUkVDQVNFLFxuICAgICAgICBub3RlcXVhbHMgICAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0lTX05PVF9FUVVBTF9UTyxcbiAgICAgICAgbm90ZXF1YWxzaWdub3JlY2FzZTogYXBwTG9jYWxlLkxBQkVMX0lTX05PVF9FUVVBTF9UT19JR05PUkVDQVNFLFxuICAgICAgICBsZXNzdGhhbiAgICAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0xFU1NfVEhBTixcbiAgICAgICAgbGVzc3RoYW5lcXVhbCAgICA6IGFwcExvY2FsZS5MQUJFTF9MRVNTX1RIQU5fT1JfRVFVQUxTX1RPLFxuICAgICAgICBncmVhdGVydGhhbiAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0dSRUFURVJfVEhBTixcbiAgICAgICAgZ3JlYXRlcnRoYW5lcXVhbCA6IGFwcExvY2FsZS5MQUJFTF9HUkVBVEVSX1RIQU5fT1JfRVFVQUxTX1RPLFxuICAgICAgICBudWxsICAgICAgICAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0lTX05VTEwsXG4gICAgICAgIGlzbm90bnVsbCAgICAgICAgOiBhcHBMb2NhbGUuTEFCRUxfSVNfTk9UX05VTEwsXG4gICAgICAgIGVtcHR5ICAgICAgICAgICAgOiBhcHBMb2NhbGUuTEFCRUxfSVNfRU1QVFksXG4gICAgICAgIGlzbm90ZW1wdHkgICAgICAgOiBhcHBMb2NhbGUuTEFCRUxfSVNfTk9UX0VNUFRZLFxuICAgICAgICBudWxsb3JlbXB0eSAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0lTX05VTExfT1JfRU1QVFksXG4gICAgICAgIGluICAgICAgICAgICAgICAgOiBhcHBMb2NhbGUuTEFCRUxfSU4sXG4gICAgICAgIG5vdGluICAgICAgICAgICAgOiBhcHBMb2NhbGUuTEFCRUxfTk9UX0lOLFxuICAgICAgICBiZXR3ZWVuICAgICAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0JFVFdFRU5cbiAgICB9O1xufTtcblxuLy8gUmV0dXJucyBhcnJheSBvZiBjbGFzc2VzIHRoYXQgYXJlIGV2YWx1YXRlZCB0cnVlIGZvciBnaXZlbiBvYmplY3Qgb3IgYXJyYXlcbmNvbnN0IGdldENsYXNzZXNBcnJheSA9IGNsYXNzVmFsID0+IHtcbiAgICBsZXQgY2xhc3NlcyA9IFtdO1xuXG4gICAgaWYgKF8uaXNBcnJheShjbGFzc1ZhbCkpIHtcbiAgICAgICAgY2xhc3NWYWwuZm9yRWFjaCh2ID0+IHtcbiAgICAgICAgICAgIGNsYXNzZXMgPSBjbGFzc2VzLmNvbmNhdChnZXRDbGFzc2VzQXJyYXkodikpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNsYXNzZXM7XG4gICAgfVxuICAgIGlmIChfLmlzT2JqZWN0KGNsYXNzVmFsKSkge1xuICAgICAgICBfLmZvckVhY2goY2xhc3NWYWwsICh2YWwsIGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgICAgICAgIGNsYXNzZXMgPSBjbGFzc2VzLmNvbmNhdChrZXkuc3BsaXQoJyAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY2xhc3NlcztcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29uZGl0aW9uYWxDbGFzc2VzID0gKG52LCBvdj8pID0+IHtcbiAgICBsZXQgdG9BZGQ7XG4gICAgbGV0IHRvUmVtb3ZlO1xuICAgIC8vIGlmIHRoZSBjb25kaXRpb25hbCBjbGFzcyBwcm9wZXJ0eSBoYXMgYWxyZWFkeSB0b0FkZCBhbmQgdG9SZW1vdmUgYXJyYXlzIHRoZW4gdGFrZSB0aGF0IG90aGVyd2lzZSBidWlsZCB0aG9zZSBhcnJheXNcbiAgICBjb25zdCBjbGFzc1RvQWRkID0gbnYudG9BZGQgfHwgbnY7XG4gICAgY29uc3QgY2xhc3NUb1JlbW92ZSA9IG52LnRvUmVtb3ZlIHx8IG92O1xuICAgIGlmIChfLmlzT2JqZWN0KG52KSkge1xuICAgICAgICB0b0FkZCA9IF8uaXNBcnJheShjbGFzc1RvQWRkKSA/IGNsYXNzVG9BZGQgOiBnZXRDbGFzc2VzQXJyYXkoY2xhc3NUb0FkZCB8fCBbXSk7XG4gICAgICAgIHRvUmVtb3ZlID0gY2xhc3NUb1JlbW92ZSA/IChfLmlzQXJyYXkoY2xhc3NUb1JlbW92ZSkgPyBjbGFzc1RvUmVtb3ZlIDogZ2V0Q2xhc3Nlc0FycmF5KGNsYXNzVG9SZW1vdmUpKSA6IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRvQWRkID0gY2xhc3NUb0FkZCA/IFtjbGFzc1RvQWRkXSA6IFtdO1xuICAgICAgICB0b1JlbW92ZSA9IGNsYXNzVG9SZW1vdmUgPyBbY2xhc3NUb1JlbW92ZV0gOiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHt0b0FkZCwgdG9SZW1vdmV9O1xufTtcblxuLypoZWxwZXIgZnVuY3Rpb24gZm9yIHByZXBhcmVGaWVsZERlZnMqL1xuY29uc3QgcHVzaEZpZWxkRGVmID0gKGRhdGFPYmplY3QsIGNvbHVtbkRlZk9iaiwgbmFtZVByZWZpeCwgb3B0aW9ucykgPT4ge1xuICAgIC8qbG9vcCBvdmVyIHRoZSBmaWVsZHMgaW4gdGhlIGRhdGFPYmplY3QgdG8gcHJvY2VzcyB0aGVtKi9cbiAgICBsZXQgbW9kaWZpZWRUaXRsZSxcbiAgICAgICAgcmVsYXRlZFRhYmxlLFxuICAgICAgICByZWxhdGVkRmllbGQsXG4gICAgICAgIHJlbGF0ZWRJbmZvLFxuICAgICAgICBmaWVsZE5hbWUsXG4gICAgICAgIGlzUmVsYXRlZDtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgICAgb3B0aW9ucyA9IHt9O1xuICAgIH1cbiAgICBfLmZvckVhY2goZGF0YU9iamVjdCwgKHZhbHVlLCB0aXRsZSkgPT4ge1xuICAgICAgICBpZiAoXy5pbmNsdWRlcyh0aXRsZSwgJy4nKSkge1xuICAgICAgICAgICAgcmVsYXRlZEluZm8gID0gXy5zcGxpdCh0aXRsZSwgJy4nKTtcbiAgICAgICAgICAgIHJlbGF0ZWRUYWJsZSA9IHJlbGF0ZWRJbmZvWzBdO1xuICAgICAgICAgICAgcmVsYXRlZEZpZWxkID0gcmVsYXRlZEluZm9bMV07XG4gICAgICAgICAgICBpc1JlbGF0ZWQgICAgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLm5vTW9kaWZ5VGl0bGUpIHtcbiAgICAgICAgICAgIG1vZGlmaWVkVGl0bGUgPSB0aXRsZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChfLmlzU3RyaW5nKHRpdGxlKSkge1xuICAgICAgICAgICAgICAgIG1vZGlmaWVkVGl0bGUgPSBwcmV0dGlmeUxhYmVsKHRpdGxlKTtcbiAgICAgICAgICAgICAgICBtb2RpZmllZFRpdGxlID0gZGVIeXBoZW5hdGUobW9kaWZpZWRUaXRsZSk7XG4gICAgICAgICAgICAgICAgbW9kaWZpZWRUaXRsZSA9IG5hbWVQcmVmaXggPyBpbml0Q2FwcyhuYW1lUHJlZml4KSArICcgJyArIG1vZGlmaWVkVGl0bGUgOiBtb2RpZmllZFRpdGxlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb2RpZmllZFRpdGxlID0gdGl0bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGl0bGUgPSBuYW1lUHJlZml4ID8gbmFtZVByZWZpeCArICcuJyArIHRpdGxlIDogdGl0bGU7XG4gICAgICAgIGlmIChpc1JlbGF0ZWQpIHtcbiAgICAgICAgICAgIC8vIEZvciByZWxhdGVkIGNvbHVtbnMsIHNob3J0ZW4gdGhlIHRpdGxlIHRvIGxhc3QgdHdvIHdvcmRzXG4gICAgICAgICAgICBmaWVsZE5hbWUgPSBfLnNwbGl0KG1vZGlmaWVkVGl0bGUsICcgJyk7XG4gICAgICAgICAgICBmaWVsZE5hbWUgPSBmaWVsZE5hbWUubGVuZ3RoID4gMSA/IGZpZWxkTmFtZVtmaWVsZE5hbWUubGVuZ3RoIC0gMl0gKyAnICcgKyBmaWVsZE5hbWVbZmllbGROYW1lLmxlbmd0aCAtIDFdIDogZmllbGROYW1lWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmllbGROYW1lID0gbW9kaWZpZWRUaXRsZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkZWZPYmogPSBvcHRpb25zLnNldEJpbmRpbmdGaWVsZCA/IHsnZGlzcGxheU5hbWUnOiBmaWVsZE5hbWUsICdmaWVsZCc6IHRpdGxlLCAncmVsYXRlZFRhYmxlJzogcmVsYXRlZFRhYmxlLCAncmVsYXRlZEZpZWxkJzogcmVsYXRlZEZpZWxkIHx8IG1vZGlmaWVkVGl0bGV9XG4gICAgICAgIDogeydkaXNwbGF5TmFtZSc6IGZpZWxkTmFtZSwgJ3JlbGF0ZWRUYWJsZSc6IHJlbGF0ZWRUYWJsZSwgJ3JlbGF0ZWRGaWVsZCc6IHJlbGF0ZWRGaWVsZCB8fCBtb2RpZmllZFRpdGxlfTtcbiAgICAgICAgLyppZiBmaWVsZCBpcyBhIGxlYWYgbm9kZSwgcHVzaCBpdCBpbiB0aGUgY29sdW1uRGVmcyovXG4gICAgICAgIGlmICghXy5pc09iamVjdCh2YWx1ZSkgfHwgKF8uaXNBcnJheSh2YWx1ZSkgJiYgIXZhbHVlWzBdKSkge1xuICAgICAgICAgICAgLyppZiB0aGUgY29sdW1uIGNvdW50ZXIgaGFzIHJlYWNoZWQgdXBwZXJCb3VuZCByZXR1cm4qL1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMudXBwZXJCb3VuZCAmJiBvcHRpb25zLmNvbHVtbkNvdW50ID09PSBvcHRpb25zLnVwcGVyQm91bmQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb2x1bW5EZWZPYmoudGVybWluYWxzLnB1c2goZGVmT2JqKTtcbiAgICAgICAgICAgIC8qaW5jcmVtZW50IHRoZSBjb2x1bW4gY291bnRlciovXG4gICAgICAgICAgICBvcHRpb25zLmNvbHVtbkNvdW50ICs9IDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKmVsc2UgZmllbGQgaXMgYW4gb2JqZWN0LCBwcm9jZXNzIGl0IHJlY3Vyc2l2ZWx5Ki9cbiAgICAgICAgICAgIC8qIGlmIHBhcmVudCBub2RlIHRvIGJlIGluY2x1ZGVkLCBpbmNsdWRlIGl0ICovXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5jb2x1bW5Db3VudCAhPT0gb3B0aW9ucy51cHBlckJvdW5kKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uRGVmT2JqLm9iamVjdHMucHVzaChkZWZPYmopO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvKiBpZiBmaWVsZCBpcyBhbiBhcnJheSBub2RlLCBwcm9jZXNzIGl0cyBmaXJzdCBjaGlsZCAqL1xuICAgICAgICAgICAgaWYgKF8uaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWVbMF0pIHtcbiAgICAgICAgICAgICAgICBwdXNoRmllbGREZWYodmFsdWVbMF0sIGNvbHVtbkRlZk9iaiwgdGl0bGUgKyAnWzBdJywgb3B0aW9ucyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHB1c2hGaWVsZERlZih2YWx1ZSwgY29sdW1uRGVmT2JqLCB0aXRsZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldE1ldGFEYXRhRnJvbURhdGEgPSAoZGF0YSkgPT4ge1xuICAgIGxldCBkYXRhT2JqZWN0O1xuICAgIGlmIChfLmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgaWYgKF8uaXNPYmplY3QoZGF0YVswXSkpIHtcbiAgICAgICAgICAgIGRhdGFPYmplY3QgPSBnZXRDbG9uZWRPYmplY3QoZGF0YVswXSk7XG4gICAgICAgICAgICAvKkxvb3Agb3ZlciB0aGUgb2JqZWN0IHRvIGZpbmQgb3V0IGFueSBudWxsIHZhbHVlcy4gSWYgYW55IG51bGwgdmFsdWVzIGFyZSBwcmVzZW50IGluIHRoZSBmaXJzdCByb3csIGNoZWNrIGFuZCBhc3NpZ24gdGhlIHZhbHVlcyBmcm9tIG90aGVyIHJvdy5cbiAgICAgICAgICAgICAqIEFzIGNvbHVtbiBnZW5lcmF0aW9uIGlzIGRlcGVuZGVudCBvbiBkYXRhLCBmb3IgcmVsYXRlZCBmaWVsZHMgaWYgZmlyc3Qgcm93IHZhbHVlIGlzIG51bGwsIGNvbHVtbnMgYXJlIG5vdCBnZW5lcmF0ZWQuXG4gICAgICAgICAgICAgKiBUbyBwcmV2ZW50IHRoaXMsIGNoZWNrIHRoZSBkYXRhIGluIG90aGVyIHJvd3MgYW5kIGdlbmVyYXRlIHRoZSBjb2x1bW5zLiBOZXcga2V5cyBmcm9tIG90aGVycyByb3dzIGFyZSBhbHNvIGFkZGVkKi9cbiAgICAgICAgICAgIF8uZm9yRWFjaChkYXRhLCAocm93LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICgoaW5kZXggKyAxKSA+PSAxMCkgeyAvLyBMaW1pdCB0aGUgZGF0YSBzZWFyY2ggdG8gZmlyc3QgMTAgcmVjb3Jkc1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF8uYXNzaWduV2l0aChkYXRhT2JqZWN0LCByb3csIChvYmpWYWx1ZSwgc3JjVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChvYmpWYWx1ZSA9PT0gbnVsbCB8fCBvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkKSA/IHNyY1ZhbHVlIDogb2JqVmFsdWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRhdGFPYmplY3QgPSBkYXRhWzBdO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZGF0YU9iamVjdCA9IGRhdGE7XG4gICAgfVxuICAgIHJldHVybiBkYXRhT2JqZWN0O1xufTtcblxuZXhwb3J0IGNvbnN0IHByZXBhcmVGaWVsZERlZnMgPSAoZGF0YSwgb3B0aW9ucz8pID0+IHtcbiAgICBsZXQgZGF0YU9iamVjdDtcbiAgICBjb25zdCBjb2x1bW5EZWYgPSB7XG4gICAgICAgICAgICAnb2JqZWN0cycgOiBbXSxcbiAgICAgICAgICAgICd0ZXJtaW5hbHMnIDogW11cbiAgICAgICAgfTtcbiAgICAvKmlmIG5vIGRhdGEgcHJvdmlkZWQsIGluaXRpYWxpemUgZGVmYXVsdCBjb2x1bW4gZGVmaW5pdGlvbnMqL1xuICAgIGlmICghZGF0YSkge1xuICAgICAgICBkYXRhID0gW107XG4gICAgfVxuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICBvcHRpb25zID0ge307XG4gICAgfVxuICAgIG9wdGlvbnMuc2V0QmluZGluZ0ZpZWxkID0gdHJ1ZTtcbiAgICBvcHRpb25zLmNvbHVtbkNvdW50ID0gMDtcbiAgICBkYXRhT2JqZWN0ID0gZ2V0TWV0YURhdGFGcm9tRGF0YShkYXRhKTtcbiAgICAvKmZpcnN0IG9mIHRoZSBtYW55IGRhdGEgb2JqZWN0cyBmcm9tIGdyaWQgZGF0YSovXG4gICAgcHVzaEZpZWxkRGVmKGRhdGFPYmplY3QsIGNvbHVtbkRlZiwgJycsIG9wdGlvbnMpO1xuICAgIGlmICghb3B0aW9ucyB8fCAob3B0aW9ucyAmJiAhb3B0aW9ucy5maWx0ZXIpKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW5EZWYudGVybWluYWxzO1xuICAgIH1cbiAgICBzd2l0Y2ggKG9wdGlvbnMuZmlsdGVyKSB7XG4gICAgICAgIGNhc2UgJ2FsbCc6XG4gICAgICAgICAgICByZXR1cm4gY29sdW1uRGVmO1xuICAgICAgICBjYXNlICdvYmplY3RzJzpcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW5EZWYub2JqZWN0cztcbiAgICAgICAgY2FzZSAndGVybWluYWxzJzpcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW5EZWYudGVybWluYWxzO1xuICAgIH1cbiAgICByZXR1cm4gY29sdW1uRGVmO1xufTtcblxuXG4vKipcbiAqIFRvIGdldCBjb250YWluZXIgdGFyZ2V0IGVsZW1lbnQgdG8gYXBwZW5kIHRoZSBsaXN0IGZvciBzZWFyY2ggYW5kIGRhdGVwaWNrZXIgcGFuZWwgd2hlbiBmaWVsZCBwcmVzZW50IGluIGRpYWxvZ1xuICovXG5leHBvcnQgY29uc3QgZ2V0Q29udGFpbmVyVGFyZ2V0Q2xhc3MgPSAoZWxlbWVudCkgPT4ge1xuICAgIHJldHVybiAnLndtLWFwcCc7XG5cbiAgICAvLyBCZWxvdyBjb2RlIGlzIG5vdCB3b3JraW5nIHdoZW4gd2UgaGF2ZSBuZXN0ZWQgZGlhbG9ncy5cbiAgICAvLyBOZXN0ZWQgZGlhbG9ncyBjYXNlIHdlIHdpbGwgaGF2ZSAgbXVsdGlwbGUgJy5tb2RhbC1jb250ZW50JyBjbGFzc2VzIG9uIERPTSBkdWUgdG8gdGhhdCBjb250YWluZXIgcG9zaXRpb25zIGlzIG5vdCB3b3JraW5nIGFzIGV4cGVjdGVkLlxuICAgIC8vIEJlbG93IGNvZGUgdG8gZml4IHRoZSBpc3N1ZSA9PT4gV01TLTE4NzUxXG4gICAgLy8gQXMgcmVncmVzc2lvbiB3ZSBnb3QgPT0+IFdNUy0xOTgzNVxuXG4gICAgLy8gaWYgKGVsZW1lbnQuY2xvc2VzdCgnLm1vZGFsLWRpYWxvZycpKSB7XG4gICAgLy8gICAgIHJldHVybiAnLm1vZGFsLWNvbnRlbnQnO1xuICAgIC8vIH0gZWxzZSB7XG4gICAgLy8gICAgIHJldHVybiAnYm9keSc7XG4gICAgLy8gfVxuXG59XG5cbi8qKlxuICogVG8gZXh0cmFjdCB0aGUgVmFyaWFibGUgTmFtZSBmcm9tIGEgV2lkZ2V0J3MgYmluZGRhdGFzb3VyY2UgYXR0cmlidXRlXG4gKi9cbmV4cG9ydCBjb25zdCBleHRyYWN0RGF0YVNvdXJjZU5hbWUgPSAoYmluZERhdGFTb3VyY2UpID0+IHtcbiAgICBpZiAoIWJpbmREYXRhU291cmNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGRhdGFTb3VyY2VOYW1lO1xuICAgIGNvbnN0IHBhcnRzID0gYmluZERhdGFTb3VyY2Uuc3BsaXQoJy4nKTtcbiAgICBpZiAocGFydHMubGVuZ3RoID4gMSAmJiBwYXJ0c1swXSA9PT0gJ1ZhcmlhYmxlcycpIHtcbiAgICAgICAgZGF0YVNvdXJjZU5hbWUgPSBwYXJ0c1sxXTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFTb3VyY2VOYW1lO1xufVxuXG5leHBvcnQgY29uc3Qgc2V0Rm9jdXNUcmFwID0gKGNvbnRhaW5lciwgYWxsb3dPdXRzaWRlQ2xpY2ssIHNldFJldHVybkZvY3VzRWxlbWVudD8pID0+IHtcbiAgICByZXR1cm4gY3JlYXRlRm9jdXNUcmFwKGNvbnRhaW5lciwge1xuICAgICAgICBvbkFjdGl2YXRlOiAoKSA9PiBjb250YWluZXIuY2xhc3NMaXN0LmFkZCgnaXMtYWN0aXZlJyksXG4gICAgICAgIG9uRGVhY3RpdmF0ZTogKCkgPT4gY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWFjdGl2ZScpLFxuICAgICAgICBhbGxvd091dHNpZGVDbGljazogYWxsb3dPdXRzaWRlQ2xpY2ssXG4gICAgICAgIHNldFJldHVybkZvY3VzOiBzZXRSZXR1cm5Gb2N1c0VsZW1lbnQsXG4gICAgfSk7XG59XG5cbi8qKlxuICogR2V0cyBrZXlib2FyZCBmb2N1c2FibGUgZWxlbWVudHMgd2l0aGluIGEgc3BlY2lmaWVkIGVsZW1lbnRcbiAqIEBwYXJhbSBlbGVtZW50IHtIVE1MRWxlbWVudH1cbiAqIEByZXR1cm5zIHtBcnJheX1cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEtleWJvYXJkRm9jdXNhYmxlRWxlbWVudHMgPSAoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gW2VsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgJ2EsIGJ1dHRvbiwgaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIGRldGFpbHMsIGlmcmFtZSwgZW1iZWQsIG9iamVjdCwgc3VtbWFyeSBkaWFsb2csIGF1ZGlvW2NvbnRyb2xzXSwgdmlkZW9bY29udHJvbHNdLCBbY29udGVudGVkaXRhYmxlXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJ1xuICAgICldLmZpbHRlcihlbCA9PiB7XG4gICAgICAgIHJldHVybiAoIWVsWzBdLmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSAmJiAhZWxbMF0uaGFzQXR0cmlidXRlKCdoaWRkZW4nKSk7XG4gICAgfSlbMF07XG59XG4iXX0=
481
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9iYXNlL3NyYy91dGlscy93aWRnZXQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN0TCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUt4RSxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsUUFBUTtJQUN2RyxjQUFjLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2hJOzs7O0dBSUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFO0lBQ3BDLElBQUksT0FBTyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixDQUFDO0lBRWpHLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWpELEtBQUssQ0FBQyxHQUFH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QUFNLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxXQUFXLEVBQUU7UUFDOUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUM3QjtJQUNELE9BQU8sY0FBYyxDQUFDO0FBQzFCLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxxQkFBc0IsRUFBRSxFQUFFO0lBQ2pGLE9BQU8sZUFBZSxDQUFDLFNBQVMsRUFBRTtRQUM5QixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO1FBQ3RELFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDM0QsaUJBQWlCLEVBQUUsaUJBQWlCO1FBQ3BDLGNBQWMsRUFBRSxxQkFBcUI7S0FDeEMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFBO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQUMsT0FBb0IsRUFBRSxFQUFFO0lBQ2pFLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQzVCLDBLQUEwSyxDQUM3SyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1FBQ1gsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNWLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgZW5jb2RlVXJsLCBpc1ZhbGlkV2ViVVJMLCBzdHJpbmdTdGFydHNXaXRoLCBGb3JtV2lkZ2V0VHlwZSwgJHBhcnNlRXhwciwgZ2V0Q2xvbmVkT2JqZWN0LCBwcmV0dGlmeUxhYmVsLCBpbml0Q2FwcywgZGVIeXBoZW5hdGUsIGNoZWNrSXNDdXN0b21QaXBlRXhwcmVzc2lvbiB9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IERpYWxvZ1JlZiwgV2lkZ2V0UmVmIH0gZnJvbSAnLi4vd2lkZ2V0cy9mcmFtZXdvcmsvdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlRm9jdXNUcmFwIH0gZnJvbSAnQHdhdmVtYWtlci9mb2N1cy10cmFwL2Rpc3QvZm9jdXMtdHJhcCc7XG5pbXBvcnQgeyBOYXZOb2RlIH0gZnJvbSBcIi4uL3dpZGdldHMvY29tbW9uL2Jhc2UvZGF0YXNldC1hd2FyZS1uYXYuY29tcG9uZW50XCI7XG5cbmRlY2xhcmUgY29uc3QgXztcblxuY29uc3QgREFUQVNFVF9XSURHRVRTID0gbmV3IFNldChbRm9ybVdpZGdldFR5cGUuU0VMRUNULCBGb3JtV2lkZ2V0VHlwZS5DSEVDS0JPWFNFVCwgRm9ybVdpZGdldFR5cGUuUkFESU9TRVQsXG4gICAgRm9ybVdpZGdldFR5cGUuU1dJVENILCBGb3JtV2lkZ2V0VHlwZS5BVVRPQ09NUExFVEUsIEZvcm1XaWRnZXRUeXBlLkNISVBTLCBGb3JtV2lkZ2V0VHlwZS5UWVBFQUhFQUQsIEZvcm1XaWRnZXRUeXBlLlJBVElOR10pO1xuLyoqXG4gKiBSZXR1cm5zIHRoZSBwYXJzZWQsIHVwZGF0ZWQgYm91bmQgZXhwcmVzc2lvblxuICogaWYgdGhlIGV4cHJlc3Npb24gaXMgJFtkYXRhWyRpXVtmaXJzdE5hbWVdXSArICctLScgKyAkW2xhc3ROYW1lXSArICctLScgKyAkWydASURAJ11cbiAqIHJldHVybnMgX18xLmZpcnN0TmFtZSArICctLScgKyBsYXN0TmFtZSArICctLScgKyBfXzFbJ0BJREAnXVxuICovXG5jb25zdCBnZXRVcGRhdGVkRXhwciA9IChleHByOiBzdHJpbmcpID0+IHtcbiAgICBsZXQgdXBkYXRlZCA9ICcnLCBjaCwgbmV4dCwgaSwgaiwgbWF0Y2hDaCwgbWF0Y2hDb3VudCwgaXNRdW90ZWRTdHIsIHN1YlN0ciwgaXNRdW90ZWRTdHJFdmFsdWF0ZWQ7XG5cbiAgICBleHByID0gZXhwci5yZXBsYWNlKC9cXCRcXFtkYXRhXFxbXFwkaVxcXS9nLCAnJFtfXzEnKTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBleHByLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNoID0gZXhwcltpXTtcbiAgICAgICAgbmV4dCA9IGV4cHJbaSArIDFdO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBpZiB0aGUgZXhwcmVzc2lvbiBzdGFydHMgd2l0aCAkWywgY2hlY2sgdGhlIG5leHQoY2gpIGNoYXJhY3RlcixcbiAgICAgICAgICogICAgaWYgY2ggaXMgYSBxdW90ZSgnLCBcIikgY2hhbmdlIHRoZSBleHByIHRvIF9fW1xuICAgICAgICAgKiAgICBpZiBjaCBpcyBhIHdoaXRlU3BhY2UsIHJlbW92ZSBpdFxuICAgICAgICAgKiAgICBlbHNlIHJlbW92ZSAkW1xuICAgICAgICAgKi9cbiAgICAgICAgaWYgKGNoID09PSAnJCcgJiYgbmV4dCA9PT0gJ1snKSB7XG4gICAgICAgICAgICBtYXRjaENvdW50ID0gMTtcbiAgICAgICAgICAgIGlzUXVvdGVkU3RyRXZhbHVhdGVkID0gZmFsc2U7XG4gICAgICAgICAgICBpc1F1b3RlZFN0ciA9IGZhbHNlO1xuXG4gICAgICAgICAgICBmb3IgKGogPSBpICsgMjsgaiA8IGV4cHIubGVuZ3RoOyBqKyspIHtcblxuICAgICAgICAgICAgICAgIG1hdGNoQ2ggPSBleHByW2pdO1xuXG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoQ2ggPT09ICcgJykge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIWlzUXVvdGVkU3RyRXZhbHVhdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzUXVvdGVkU3RyID0gZXhwcltqXSA9PT0gJ1wiJyB8fCBleHByW2pdID09PSAnXFwnJztcbiAgICAgICAgICAgICAgICAgICAgaXNRdW90ZWRTdHJFdmFsdWF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChtYXRjaENoID09PSAnWycpIHtcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hDb3VudCsrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWF0Y2hDaCA9PT0gJ10nKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoQ291bnQtLTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIW1hdGNoQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgc3ViU3RyID0gZXhwci5zdWJzdHJpbmcoaSArIDIsIGopO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNRdW90ZWRTdHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWQgKz0gJ19fMVsnICsgc3ViU3RyICsgJ10nO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZCArPSBzdWJTdHI7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpID0gajtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVwZGF0ZWQgKz0gY2g7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdXBkYXRlZDtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgdmFsdWUgZm9yIHRoZSBwcm92aWRlZCBrZXkgaW4gdGhlIG9iamVjdFxuICovXG5leHBvcnQgY29uc3QgZ2V0T2JqVmFsdWVCeUtleSA9IChvYmo6IGFueSwgc3RyS2V5OiBzdHJpbmcpID0+IHtcbiAgICAvKiBjaGVjayBmb3IgdGhlIGtleS1zdHJpbmcgKi9cbiAgICBpZiAoc3RyS2V5KSB7XG4gICAgICAgIGxldCB2YWw7XG4gICAgICAgIC8qIGNvbnZlcnQgaW5kZXhlcyB0byBwcm9wZXJ0aWVzLCBzbyBhcyB0byB3b3JrIGZvciBldmVuICdrZXkxWzBdLmNoaWxkMScqL1xuICAgICAgICBzdHJLZXkucmVwbGFjZSgvXFxbKFxcdyspXFxdL2csICcuJDEnKS5zcGxpdCgnLicpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIC8vIElmIG9iaiBpcyBudWxsLCB0aGVuIGFzc2lnbiB2YWwgdG8gbnVsbC5cbiAgICAgICAgICAgIHZhbCA9ICh2YWwgJiYgdmFsW2tleV0pIHx8IChfLmlzTnVsbChvYmopID8gb2JqIDogb2JqW2tleV0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbn07XG5cbi8qKlxuICogcmV0dXJucyB0aGUgZGlzcGxheSBmaWVsZCBkYXRhIGZvciBhbnkgZGF0YXNldCB3aWRnZXRzXG4gKiBCYXNlZCBvbiB0aGUgYmluZCBkaXNwbGF5IGV4cHJlc3Npb24gb3IgZGlzcGxheSBleHByZXNzaW9uIG9yIGRpc3BsYXkgbmFtZSxcbiAqIGRhdGEgaXMgZXh0cmFjdGVkIGFuZCBmb3JtYXR0ZWQgZnJvbSB0aGUgcGFzc2VkIG9wdGlvbiBvYmplY3RcbiAqIElmIHRoZXJlIGlzIGZpZWxkIGlzIHNwZWNpZmllZCwgZmllbGQgdmFsdWUgaXMgb2J0YWluZWQgZnJvbSB0aGUgZGF0YU9iai5cbiAqIElmIGV4cHJlc3Npb24gaXMgZ2l2ZW4sIGV2YWx1YXRlcyB0aGUgZXhwcmVzc2lvbiB2YWx1ZS5cbiAqIGVsc2UgY2hlY2sgZm9yIGJpbmRFeHByZXNzaW9uLCBleHRyYWN0IHRoZSB2YWx1ZSBmcm9tIHRoZSBkYXRhT2JqXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFdmFsdWF0ZWREYXRhID0gKGRhdGFPYmo6IGFueSwgb3B0aW9uczogYW55LCBjb250ZXh0PzogYW55KSA9PiB7XG4gICAgbGV0IGV4cHJlc3Npb25WYWx1ZTtcbiAgICBjb25zdCBmaWVsZCA9IG9wdGlvbnMuZmllbGQsXG4gICAgICAgIGV4cHIgPSBvcHRpb25zLmV4cHJlc3Npb24sXG4gICAgICAgIGJpbmRFeHByID0gb3B0aW9ucy5iaW5kRXhwcmVzc2lvbjtcblxuICAgIC8vIGlmIGtleSBpcyBib3VuZCBleHByZXNzaW9uXG4gICAgaWYgKGJpbmRFeHByKSB7XG4gICAgICAgIC8vIHJlbW92ZSAnYmluZDonIHByZWZpeCBmcm9tIHRoZSBib3VuZEV4cHJlc3Npb25OYW1lXG4gICAgICAgIGV4cHJlc3Npb25WYWx1ZSA9IGJpbmRFeHByLnJlcGxhY2UoJ2JpbmQ6JywgJycpO1xuXG4gICAgICAgIC8vIEZvciBiaW5kIGV4cHJlc3Npb24gcGFzc2luZyB0aGUgbGFzdCBhcmd1bWVudCB0aGF0IHRoZSBvYmplY3Qgb2YgZGF0YXNldCBpdGVtLlxuICAgICAgICAvLyBOb3RlOiBGb3IgcGFyc2UgZXhwcmVzc2lvbiB3ZSBhcmUgc2VuZGluZyBkYXRhT2JqIHdpdGggdGhlIHByb3BlcnkgbmFtZSBcIl9fMVwiLCB3ZSB1c2VkIHRoZSBzYW1lIHByb3BlcnkgdG8gc2VuZCB0aGUgbGFzdCBhcmd1bWVudCBhcyBkYXRhc2V0IGl0ZW1cbiAgICAgICAgaWYoY2hlY2tJc0N1c3RvbVBpcGVFeHByZXNzaW9uKGV4cHJlc3Npb25WYWx1ZSkpe1xuICAgICAgICAgICAgZXhwcmVzc2lvblZhbHVlID0gZXhwcmVzc2lvblZhbHVlKyc6IF9fMSc7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcGFyc2UgdGhlIGV4cHJlc3Npb25WYWx1ZSBmb3IgcmVwbGFjaW5nIGFsbCB0aGUgZXhwcmVzc2lvbnMgd2l0aCB2YWx1ZXMgaW4gdGhlIG9iamVjdFxuICAgICAgICBleHByZXNzaW9uVmFsdWUgPSBnZXRVcGRhdGVkRXhwcihleHByZXNzaW9uVmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGV4cHJlc3Npb25WYWx1ZSA9IGV4cHIgPyBleHByIDogZmllbGQ7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxpbmcgZmllbGQgbmFtZSB3aXRoIHNwZWNpYWwgY2hhcmVjdGVyc1xuICAgIC8vIEV4OiBmaWVsZCA9IFwiZiBuYW1lXCJcbiAgICBpZiAoIWJpbmRFeHByICYmICFleHByKSB7XG4gICAgICAgIHJldHVybiBfLmdldChkYXRhT2JqLCBmaWVsZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuICRwYXJzZUV4cHIoZXhwcmVzc2lvblZhbHVlKShjb250ZXh0LCBPYmplY3QuYXNzaWduKHt9LCBkYXRhT2JqLCB7X18xOiBkYXRhT2JqfSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzQWN0aXZlTmF2SXRlbSA9IChsaW5rLCByb3V0ZU5hbWUpID0+IHtcbiAgICBpZiAoIWxpbmsgfHwgIXJvdXRlTmFtZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJvdXRlTmFtZSA9IHJvdXRlTmFtZS5pbmRleE9mKCc/JykgPT09IC0xID8gcm91dGVOYW1lIDogcm91dGVOYW1lLnN1YnN0cmluZygwLCByb3V0ZU5hbWUuaW5kZXhPZignPycpKTtcbiAgICBsaW5rID0gbGluay5pbmRleE9mKCc/JykgPT09IC0xID8gbGluayA6IGxpbmsuc3Vic3RyaW5nKDAsIGxpbmsuaW5kZXhPZignPycpKTtcbiAgICBjb25zdCByb3V0ZVJlZ2V4ID0gbmV3IFJlZ0V4cCgnXigjXFwvfCMpJyArIHJvdXRlTmFtZSArICckJyk7XG4gICAgcmV0dXJuIHJvdXRlUmVnZXgudGVzdChsaW5rKTtcbn07XG5cbi8qKlxuKiByZXR1cm5zIHRydWUgaWYgdGhlIG1lbnUgaGFzIGxpbmsgdG8gdGhlIGN1cnJlbnQgcGFnZS5cbiogQHBhcmFtIG5vZGVzXG4qIEBwYXJhbSByb3V0ZVVybFxuKi9cbmV4cG9ydCBjb25zdCBoYXNMaW5rVG9DdXJyZW50UGFnZSA9IChub2RlczogQXJyYXk8TmF2Tm9kZT4sIHJvdXRlVXJsKSA9PiB7XG4gICAgcmV0dXJuIG5vZGVzLnNvbWUobm9kZSA9PiB7XG4gICAgICAgIGlmIChpc0FjdGl2ZU5hdkl0ZW0obm9kZS5saW5rLCByb3V0ZVVybCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICByZXR1cm4gaGFzTGlua1RvQ3VycmVudFBhZ2Uobm9kZS5jaGlsZHJlbiwgcm91dGVVcmwpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb3JkZXJCeSBFeHByZXNzaW9uIGJhc2VkIG9uIHRoZSAnc29ydCAnb3B0aW9uIGluIHBhZ2VhYmxlIG9iamVjdFxuICogcmV0dXJuZWQgYnkgYmFja2VuZFxuICogQHBhcmFtIHBhZ2VhYmxlT2JqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgY29uc3QgZ2V0T3JkZXJCeUV4cHIgPSBwYWdlYWJsZU9iaiA9PiB7XG4gICAgcGFnZWFibGVPYmogPSBwYWdlYWJsZU9iaiB8fCBbXTtcbiAgICBjb25zdCBleHByZXNzaW9ucyAgICAgICA9IFtdLFxuICAgICAgICBLRVlfVkFMX1NFUEFSQVRPUiA9ICcgJyxcbiAgICAgICAgRklFTERfU0VQQVJBVE9SICAgPSAnLCc7XG4gICAgXy5mb3JFYWNoKHBhZ2VhYmxlT2JqLCBvYmogPT4ge1xuICAgICAgICBpZiAob2JqLmRpcmVjdGlvbikge1xuICAgICAgICAgICAgZXhwcmVzc2lvbnMucHVzaChvYmoucHJvcGVydHkgKyBLRVlfVkFMX1NFUEFSQVRPUiArIG9iai5kaXJlY3Rpb24udG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBfLmpvaW4oZXhwcmVzc2lvbnMsIEZJRUxEX1NFUEFSQVRPUik7XG59O1xuXG5leHBvcnQgY29uc3QgaXNEYXRhU2V0V2lkZ2V0ID0gd2lkZ2V0ID0+IHtcbiAgICByZXR1cm4gREFUQVNFVF9XSURHRVRTLmhhcyh3aWRnZXQpO1xufTtcblxuLypUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHVybCB0byB0aGUgaW1hZ2UgYWZ0ZXIgY2hlY2tpbmcgdGhlIHZhbGlkaXR5IG9mIHVybCovXG5leHBvcnQgY29uc3QgZ2V0SW1hZ2VVcmwgPSAodXJsU3RyaW5nLCBzaG91bGRFbmNvZGU/LCBkZWZhdWx0VXJsPykgPT4ge1xuICAgIC8qSW4gc3R1ZGlvIG1vZGUgYmVmb3JlIHNldHRpbmcgcGljdHVyZXNvdXJjZSwgY2hlY2sgaWYgdGhlIHN0dWRpb0NvbnRyb2xsZXIgaXMgbG9hZGVkIGFuZCBuZXcgcGljdHVyZXNvdXJjZSBpcyBpbiAnc3R5bGVzL2ltYWdlcy8nIHBhdGggb3Igbm90LlxuICAgICAqIFdoZW4gcGFnZSBpcyByZWZyZXNoZWQsIGxvYWRlci5naWYgd2lsbCBiZSBsb2FkZWQgZmlyc3QgYW5kIGl0IHdpbGwgYmUgaW4gJ3N0eWxlL2ltYWdlcy8nLlxuICAgICAqIFByZXBlbmQgJ3NlcnZpY2VzL3Byb2plY3RzLycgKyAkcm9vdFNjb3BlLnByb2plY3QuaWQgKyAnL3dlYi9yZXNvdXJjZXMvaW1hZ2VzL2ltYWdlbGlzdHMvJyAgaWYgdGhlIGltYWdlIHVybCBpcyBqdXN0IGltYWdlIG5hbWUgaW4gdGhlIHByb2plY3Qgcm9vdCxcbiAgICAgKiBhbmQgaWYgdGhlIHVybCBwb2ludGluZyB0byByZXNvdXJjZXMvaW1hZ2VzLyB0aGVuICdzZXJ2aWNlcy9wcm9qZWN0cy8nICsgJHJvb3RTY29wZS5wcm9qZWN0LmlkICsgJy93ZWIvJyovXG4gICAgaWYgKGlzVmFsaWRXZWJVUkwodXJsU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gdXJsU3RyaW5nO1xuICAgIH1cblxuICAgIC8vIElmIG5vIHZhbHVlIGlzIHByb3ZpZGVkIGZvciBwaWN0dXJlc291cmNlIGFzc2lnbiBwaWN0dXJlcGxhY2Vob2xkZXIgb3IgZGVmYXVsdC1pbWFnZVxuICAgIGlmICghdXJsU3RyaW5nKSB7XG4gICAgICAgIHVybFN0cmluZyA9IGRlZmF1bHRVcmwgfHwgJ3Jlc291cmNlcy9pbWFnZXMvaW1hZ2VsaXN0cy9kZWZhdWx0LWltYWdlLnBuZyc7XG4gICAgfVxuXG4gICAgdXJsU3RyaW5nID0gc2hvdWxkRW5jb2RlID8gZW5jb2RlVXJsKHVybFN0cmluZykgOiB1cmxTdHJpbmc7XG5cbiAgICAvLyBpZiB0aGUgcmVzb3VyY2UgdG8gYmUgbG9hZGVkIGlzIGluc2lkZSBhIHByZWZhYlxuICAgIGlmIChzdHJpbmdTdGFydHNXaXRoKHVybFN0cmluZywgJ3NlcnZpY2VzL3ByZWZhYnMnKSkge1xuICAgICAgICByZXR1cm4gdXJsU3RyaW5nO1xuICAgIH1cblxuICAgIHJldHVybiB1cmxTdHJpbmc7XG59O1xuXG4vKlRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHVybCB0byB0aGUgYmFja2dyb3VuZEltYWdlKi9cbmV4cG9ydCBjb25zdCBnZXRCYWNrR3JvdW5kSW1hZ2VVcmwgPSAodXJsU3RyaW5nKSA9PiB7XG4gICAgaWYgKHVybFN0cmluZyA9PT0gJycgfHwgdXJsU3RyaW5nID09PSAnbm9uZScpIHtcbiAgICAgICAgcmV0dXJuIHVybFN0cmluZztcbiAgICB9XG4gICAgcmV0dXJuICd1cmwoJyArIGdldEltYWdlVXJsKHVybFN0cmluZykgKyAnKSc7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUFzKHJlZmVyZW5jZTogYW55LCBrZXk6IGFueSwgbXVsdGk/OiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcHJvdmlkZToga2V5LFxuICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiByZWZlcmVuY2UpLFxuICAgICAgICBtdWx0aTogbXVsdGlcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUFzV2lkZ2V0UmVmKHJlZmVyZW5jZTogYW55KSB7XG4gICAgcmV0dXJuIHByb3ZpZGVBcyhyZWZlcmVuY2UsIFdpZGdldFJlZik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQXNEaWFsb2dSZWYocmVmZXJlbmNlOiBhbnkpIHtcbiAgICByZXR1cm4gcHJvdmlkZUFzKHJlZmVyZW5jZSwgRGlhbG9nUmVmKTtcbn1cblxuZXhwb3J0IGNvbnN0IE5BVklHQVRJT05fVFlQRSA9IHtcbiAgICBBRFZBTkNFRDogJ0FkdmFuY2VkJyxcbiAgICBCQVNJQzogJ0Jhc2ljJyxcbiAgICBDTEFTU0lDOiAnQ2xhc3NpYycsXG4gICAgSU5MSU5FOiAnSW5saW5lJyxcbiAgICBOT05FOiAnTm9uZScsXG4gICAgT05ERU1BTkQ6ICdPbi1EZW1hbmQnLFxuICAgIFBBR0VSOiAnUGFnZXInLFxuICAgIFNDUk9MTDogJ1Njcm9sbCdcbn07XG5cbmV4cG9ydCBjb25zdCBJTlBVVE1PREUgPSB7XG4gICAgRklOQU5DSUFMOiAnZmluYW5jaWFsJyxcbiAgICBOQVRVUkFMOiAnbmF0dXJhbCdcbn07XG5cbmV4cG9ydCBjb25zdCBBVVRPQ0xPU0VfVFlQRSA9IHtcbiAgICBPVVRTSURFQ0xJQ0s6ICdvdXRzaWRlQ2xpY2snLFxuICAgIEFMV0FZUzogJ2Fsd2F5cycsXG4gICAgRElTQUJMRUQ6ICdkaXNhYmxlZCdcbn1cblxuZXhwb3J0IGNvbnN0IHVuc3VwcG9ydGVkU3RhdGVQZXJzaXN0ZW5jZVR5cGVzID0gWydPbi1EZW1hbmQnLCAnU2Nyb2xsJ107XG5cbmV4cG9ydCBjb25zdCBnZXRXYXRjaElkZW50aWZpZXIgPSAoLi4uYXJncykgPT4gYXJncy5qb2luKCdfJyk7XG5cbmNvbnN0IHR5cGVzTWFwID0ge1xuICAgIG51bWJlcjogWydudW1iZXInLCAnaW50ZWdlcicsICdiaWdfaW50ZWdlcicsICdzaG9ydCcsICdmbG9hdCcsICdiaWdfZGVjaW1hbCcsICdkb3VibGUnLCAnbG9uZycsICdieXRlJ10sXG4gICAgc3RyaW5nOiBbJ3N0cmluZycsICd0ZXh0J10sXG4gICAgY2hhcmFjdGVyOiBbJ2NoYXJhY3RlciddLFxuICAgIGRhdGU6IFsnZGF0ZScsICd0aW1lJywgICd0aW1lc3RhbXAnLCAnZGF0ZXRpbWUnXVxufTtcbmNvbnN0IG1vZGVzID0ge1xuICAgIG51bWJlcjogWydleGFjdCcsICdub3RlcXVhbHMnLCAnbGVzc3RoYW4nLCAnbGVzc3RoYW5lcXVhbCcsICdncmVhdGVydGhhbicsICdncmVhdGVydGhhbmVxdWFsJywgJ251bGwnLCAnaXNub3RudWxsJ10sXG4gICAgc3RyaW5nOiBbJ2FueXdoZXJlaWdub3JlY2FzZScsICdhbnl3aGVyZScsICdzdGFydGlnbm9yZWNhc2UnLCAnc3RhcnQnLCAnZW5kaWdub3JlY2FzZScsICdlbmQnLCAnZXhhY3RpZ25vcmVjYXNlJywgJ2V4YWN0JywgJ25vdGVxdWFsc2lnbm9yZWNhc2UnLCAnbm90ZXF1YWxzJywgJ251bGwnLCAnaXNub3RudWxsJywgJ2VtcHR5JywgJ2lzbm90ZW1wdHknLCAnbnVsbG9yZW1wdHknXSxcbiAgICBjaGFyYWN0ZXI6IFsnZXhhY3RpZ25vcmVjYXNlJywgJ2V4YWN0JywgJ25vdGVxdWFsc2lnbm9yZWNhc2UnLCAnbm90ZXF1YWxzJywgJ251bGwnLCAnaXNub3RudWxsJywgJ2VtcHR5JywgJ2lzbm90ZW1wdHknLCAnbnVsbG9yZW1wdHknXSxcbiAgICBkYXRlOiBbJ2V4YWN0JywgJ2xlc3N0aGFuJywgJ2xlc3N0aGFuZXF1YWwnLCAnZ3JlYXRlcnRoYW4nLCAnZ3JlYXRlcnRoYW5lcXVhbCcsICdudWxsJywgJ25vdGVxdWFscycsICdpc25vdG51bGwnXVxufTtcbmNvbnN0IG1hdGNoTW9kZVR5cGVzTWFwID0ge1xuICAgIGJvb2xlYW46IFsnZXhhY3QnLCAnbnVsbCcsICdpc25vdG51bGwnXSxcbiAgICBjbG9iOiBbXSxcbiAgICBibG9iOiBbXVxufTtcbmV4cG9ydCBjb25zdCBnZXRNYXRjaE1vZGVUeXBlc01hcCA9IChtdWx0aU1vZGU/KSA9PiB7XG4gICAgaWYgKG11bHRpTW9kZSkge1xuICAgICAgICBtb2Rlcy5udW1iZXIucHVzaCgnaW4nLCAnbm90aW4nLCAnYmV0d2VlbicpO1xuICAgICAgICBtb2Rlcy5kYXRlLnB1c2goJ2JldHdlZW4nKTtcbiAgICAgICAgbW9kZXMuc3RyaW5nLnB1c2goJ2luJywgJ25vdGluJyk7XG4gICAgICAgIG1vZGVzLmNoYXJhY3Rlci5wdXNoKCdpbicsICdub3RpbicpO1xuICAgIH1cblxuICAgIF8uZm9yRWFjaCh0eXBlc01hcCwgKHR5cGVzLCBwcmltVHlwZSkgPT4ge1xuICAgICAgICBfLmZvckVhY2godHlwZXMsIHR5cGUgPT4ge1xuICAgICAgICAgICAgbWF0Y2hNb2RlVHlwZXNNYXBbdHlwZV0gPSBtb2Rlc1twcmltVHlwZV07XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIC8vIHRoaXMgaXMgdXNlZCBpbiBmaWx0ZXIgY3JpdGVyaWEgd2hlbiB0aGUgdXNlciB0eXBlcyB0aGUgY29sdW1uIG5hbWUgbWFudWFsbHkgYW5kIHdoZXJlIHdlIGRvbnQga25vdyB0aGUgdHlwZSBvZiB0aGUgY29sdW1uXG4gICAgbWF0Y2hNb2RlVHlwZXNNYXBbJ2RlZmF1bHQnXSA9IF8udW5pb24obW9kZXNbJ251bWJlciddLCBtb2Rlc1snc3RyaW5nJ10sIG1vZGVzWydjaGFyYWN0ZXInXSwgbW9kZXNbJ2RhdGUnXSwgbW9kZXNbJ2RhdGUnXSk7XG4gICAgcmV0dXJuIG1hdGNoTW9kZVR5cGVzTWFwO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1hdGNoTW9kZU1zZ3MgPSAoYXBwTG9jYWxlKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3RhcnQgICAgICAgICAgICA6IGFwcExvY2FsZS5MQUJFTF9TVEFSVFNfV0lUSCxcbiAgICAgICAgc3RhcnRpZ25vcmVjYXNlICA6IGFwcExvY2FsZS5MQUJFTF9TVEFSVFNfV0lUSF9JR05PUkVDQVNFLFxuICAgICAgICBlbmQgICAgICAgICAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0VORFNfV0lUSCxcbiAgICAgICAgZW5kaWdub3JlY2FzZSAgICA6IGFwcExvY2FsZS5MQUJFTF9FTkRTX1dJVEhfSUdOT1JFQ0FTRSxcbiAgICAgICAgYW55d2hlcmUgICAgICAgICA6IGFwcExvY2FsZS5MQUJFTF9DT05UQUlOUyxcbiAgICAgICAgYW55d2hlcmVpZ25vcmVjYXNlOiBhcHBMb2NhbGUuTEFCRUxfQ09OVEFJTlNfSUdOT1JFQ0FTRSxcbiAgICAgICAgZXhhY3QgICAgICAgICAgICA6IGFwcExvY2FsZS5MQUJFTF9JU19FUVVBTF9UTyxcbiAgICAgICAgZXhhY3RpZ25vcmVjYXNlICA6IGFwcExvY2FsZS5MQUJFTF9JU19FUVVBTF9UT19JR05PUkVDQVNFLFxuICAgICAgICBub3RlcXVhbHMgICAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0lTX05PVF9FUVVBTF9UTyxcbiAgICAgICAgbm90ZXF1YWxzaWdub3JlY2FzZTogYXBwTG9jYWxlLkxBQkVMX0lTX05PVF9FUVVBTF9UT19JR05PUkVDQVNFLFxuICAgICAgICBsZXNzdGhhbiAgICAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0xFU1NfVEhBTixcbiAgICAgICAgbGVzc3RoYW5lcXVhbCAgICA6IGFwcExvY2FsZS5MQUJFTF9MRVNTX1RIQU5fT1JfRVFVQUxTX1RPLFxuICAgICAgICBncmVhdGVydGhhbiAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0dSRUFURVJfVEhBTixcbiAgICAgICAgZ3JlYXRlcnRoYW5lcXVhbCA6IGFwcExvY2FsZS5MQUJFTF9HUkVBVEVSX1RIQU5fT1JfRVFVQUxTX1RPLFxuICAgICAgICBudWxsICAgICAgICAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0lTX05VTEwsXG4gICAgICAgIGlzbm90bnVsbCAgICAgICAgOiBhcHBMb2NhbGUuTEFCRUxfSVNfTk9UX05VTEwsXG4gICAgICAgIGVtcHR5ICAgICAgICAgICAgOiBhcHBMb2NhbGUuTEFCRUxfSVNfRU1QVFksXG4gICAgICAgIGlzbm90ZW1wdHkgICAgICAgOiBhcHBMb2NhbGUuTEFCRUxfSVNfTk9UX0VNUFRZLFxuICAgICAgICBudWxsb3JlbXB0eSAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0lTX05VTExfT1JfRU1QVFksXG4gICAgICAgIGluICAgICAgICAgICAgICAgOiBhcHBMb2NhbGUuTEFCRUxfSU4sXG4gICAgICAgIG5vdGluICAgICAgICAgICAgOiBhcHBMb2NhbGUuTEFCRUxfTk9UX0lOLFxuICAgICAgICBiZXR3ZWVuICAgICAgICAgIDogYXBwTG9jYWxlLkxBQkVMX0JFVFdFRU5cbiAgICB9O1xufTtcblxuLy8gUmV0dXJucyBhcnJheSBvZiBjbGFzc2VzIHRoYXQgYXJlIGV2YWx1YXRlZCB0cnVlIGZvciBnaXZlbiBvYmplY3Qgb3IgYXJyYXlcbmNvbnN0IGdldENsYXNzZXNBcnJheSA9IGNsYXNzVmFsID0+IHtcbiAgICBsZXQgY2xhc3NlcyA9IFtdO1xuXG4gICAgaWYgKF8uaXNBcnJheShjbGFzc1ZhbCkpIHtcbiAgICAgICAgY2xhc3NWYWwuZm9yRWFjaCh2ID0+IHtcbiAgICAgICAgICAgIGNsYXNzZXMgPSBjbGFzc2VzLmNvbmNhdChnZXRDbGFzc2VzQXJyYXkodikpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGNsYXNzZXM7XG4gICAgfVxuICAgIGlmIChfLmlzT2JqZWN0KGNsYXNzVmFsKSkge1xuICAgICAgICBfLmZvckVhY2goY2xhc3NWYWwsICh2YWwsIGtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgICAgICAgIGNsYXNzZXMgPSBjbGFzc2VzLmNvbmNhdChrZXkuc3BsaXQoJyAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY2xhc3NlcztcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29uZGl0aW9uYWxDbGFzc2VzID0gKG52LCBvdj8pID0+IHtcbiAgICBsZXQgdG9BZGQ7XG4gICAgbGV0IHRvUmVtb3ZlO1xuICAgIC8vIGlmIHRoZSBjb25kaXRpb25hbCBjbGFzcyBwcm9wZXJ0eSBoYXMgYWxyZWFkeSB0b0FkZCBhbmQgdG9SZW1vdmUgYXJyYXlzIHRoZW4gdGFrZSB0aGF0IG90aGVyd2lzZSBidWlsZCB0aG9zZSBhcnJheXNcbiAgICBjb25zdCBjbGFzc1RvQWRkID0gbnYudG9BZGQgfHwgbnY7XG4gICAgY29uc3QgY2xhc3NUb1JlbW92ZSA9IG52LnRvUmVtb3ZlIHx8IG92O1xuICAgIGlmIChfLmlzT2JqZWN0KG52KSkge1xuICAgICAgICB0b0FkZCA9IF8uaXNBcnJheShjbGFzc1RvQWRkKSA/IGNsYXNzVG9BZGQgOiBnZXRDbGFzc2VzQXJyYXkoY2xhc3NUb0FkZCB8fCBbXSk7XG4gICAgICAgIHRvUmVtb3ZlID0gY2xhc3NUb1JlbW92ZSA/IChfLmlzQXJyYXkoY2xhc3NUb1JlbW92ZSkgPyBjbGFzc1RvUmVtb3ZlIDogZ2V0Q2xhc3Nlc0FycmF5KGNsYXNzVG9SZW1vdmUpKSA6IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRvQWRkID0gY2xhc3NUb0FkZCA/IFtjbGFzc1RvQWRkXSA6IFtdO1xuICAgICAgICB0b1JlbW92ZSA9IGNsYXNzVG9SZW1vdmUgPyBbY2xhc3NUb1JlbW92ZV0gOiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHt0b0FkZCwgdG9SZW1vdmV9O1xufTtcblxuLypoZWxwZXIgZnVuY3Rpb24gZm9yIHByZXBhcmVGaWVsZERlZnMqL1xuY29uc3QgcHVzaEZpZWxkRGVmID0gKGRhdGFPYmplY3QsIGNvbHVtbkRlZk9iaiwgbmFtZVByZWZpeCwgb3B0aW9ucykgPT4ge1xuICAgIC8qbG9vcCBvdmVyIHRoZSBmaWVsZHMgaW4gdGhlIGRhdGFPYmplY3QgdG8gcHJvY2VzcyB0aGVtKi9cbiAgICBsZXQgbW9kaWZpZWRUaXRsZSxcbiAgICAgICAgcmVsYXRlZFRhYmxlLFxuICAgICAgICByZWxhdGVkRmllbGQsXG4gICAgICAgIHJlbGF0ZWRJbmZvLFxuICAgICAgICBmaWVsZE5hbWUsXG4gICAgICAgIGlzUmVsYXRlZDtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgICAgb3B0aW9ucyA9IHt9O1xuICAgIH1cbiAgICBfLmZvckVhY2goZGF0YU9iamVjdCwgKHZhbHVlLCB0aXRsZSkgPT4ge1xuICAgICAgICBpZiAoXy5pbmNsdWRlcyh0aXRsZSwgJy4nKSkge1xuICAgICAgICAgICAgcmVsYXRlZEluZm8gID0gXy5zcGxpdCh0aXRsZSwgJy4nKTtcbiAgICAgICAgICAgIHJlbGF0ZWRUYWJsZSA9IHJlbGF0ZWRJbmZvWzBdO1xuICAgICAgICAgICAgcmVsYXRlZEZpZWxkID0gcmVsYXRlZEluZm9bMV07XG4gICAgICAgICAgICBpc1JlbGF0ZWQgICAgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLm5vTW9kaWZ5VGl0bGUpIHtcbiAgICAgICAgICAgIG1vZGlmaWVkVGl0bGUgPSB0aXRsZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChfLmlzU3RyaW5nKHRpdGxlKSkge1xuICAgICAgICAgICAgICAgIG1vZGlmaWVkVGl0bGUgPSBwcmV0dGlmeUxhYmVsKHRpdGxlKTtcbiAgICAgICAgICAgICAgICBtb2RpZmllZFRpdGxlID0gZGVIeXBoZW5hdGUobW9kaWZpZWRUaXRsZSk7XG4gICAgICAgICAgICAgICAgbW9kaWZpZWRUaXRsZSA9IG5hbWVQcmVmaXggPyBpbml0Q2FwcyhuYW1lUHJlZml4KSArICcgJyArIG1vZGlmaWVkVGl0bGUgOiBtb2RpZmllZFRpdGxlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb2RpZmllZFRpdGxlID0gdGl0bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGl0bGUgPSBuYW1lUHJlZml4ID8gbmFtZVByZWZpeCArICcuJyArIHRpdGxlIDogdGl0bGU7XG4gICAgICAgIGlmIChpc1JlbGF0ZWQpIHtcbiAgICAgICAgICAgIC8vIEZvciByZWxhdGVkIGNvbHVtbnMsIHNob3J0ZW4gdGhlIHRpdGxlIHRvIGxhc3QgdHdvIHdvcmRzXG4gICAgICAgICAgICBmaWVsZE5hbWUgPSBfLnNwbGl0KG1vZGlmaWVkVGl0bGUsICcgJyk7XG4gICAgICAgICAgICBmaWVsZE5hbWUgPSBmaWVsZE5hbWUubGVuZ3RoID4gMSA/IGZpZWxkTmFtZVtmaWVsZE5hbWUubGVuZ3RoIC0gMl0gKyAnICcgKyBmaWVsZE5hbWVbZmllbGROYW1lLmxlbmd0aCAtIDFdIDogZmllbGROYW1lWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmllbGROYW1lID0gbW9kaWZpZWRUaXRsZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkZWZPYmogPSBvcHRpb25zLnNldEJpbmRpbmdGaWVsZCA/IHsnZGlzcGxheU5hbWUnOiBmaWVsZE5hbWUsICdmaWVsZCc6IHRpdGxlLCAncmVsYXRlZFRhYmxlJzogcmVsYXRlZFRhYmxlLCAncmVsYXRlZEZpZWxkJzogcmVsYXRlZEZpZWxkIHx8IG1vZGlmaWVkVGl0bGV9XG4gICAgICAgIDogeydkaXNwbGF5TmFtZSc6IGZpZWxkTmFtZSwgJ3JlbGF0ZWRUYWJsZSc6IHJlbGF0ZWRUYWJsZSwgJ3JlbGF0ZWRGaWVsZCc6IHJlbGF0ZWRGaWVsZCB8fCBtb2RpZmllZFRpdGxlfTtcbiAgICAgICAgLyppZiBmaWVsZCBpcyBhIGxlYWYgbm9kZSwgcHVzaCBpdCBpbiB0aGUgY29sdW1uRGVmcyovXG4gICAgICAgIGlmICghXy5pc09iamVjdCh2YWx1ZSkgfHwgKF8uaXNBcnJheSh2YWx1ZSkgJiYgIXZhbHVlWzBdKSkge1xuICAgICAgICAgICAgLyppZiB0aGUgY29sdW1uIGNvdW50ZXIgaGFzIHJlYWNoZWQgdXBwZXJCb3VuZCByZXR1cm4qL1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMudXBwZXJCb3VuZCAmJiBvcHRpb25zLmNvbHVtbkNvdW50ID09PSBvcHRpb25zLnVwcGVyQm91bmQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb2x1bW5EZWZPYmoudGVybWluYWxzLnB1c2goZGVmT2JqKTtcbiAgICAgICAgICAgIC8qaW5jcmVtZW50IHRoZSBjb2x1bW4gY291bnRlciovXG4gICAgICAgICAgICBvcHRpb25zLmNvbHVtbkNvdW50ICs9IDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKmVsc2UgZmllbGQgaXMgYW4gb2JqZWN0LCBwcm9jZXNzIGl0IHJlY3Vyc2l2ZWx5Ki9cbiAgICAgICAgICAgIC8qIGlmIHBhcmVudCBub2RlIHRvIGJlIGluY2x1ZGVkLCBpbmNsdWRlIGl0ICovXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5jb2x1bW5Db3VudCAhPT0gb3B0aW9ucy51cHBlckJvdW5kKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uRGVmT2JqLm9iamVjdHMucHVzaChkZWZPYmopO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvKiBpZiBmaWVsZCBpcyBhbiBhcnJheSBub2RlLCBwcm9jZXNzIGl0cyBmaXJzdCBjaGlsZCAqL1xuICAgICAgICAgICAgaWYgKF8uaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWVbMF0pIHtcbiAgICAgICAgICAgICAgICBwdXNoRmllbGREZWYodmFsdWVbMF0sIGNvbHVtbkRlZk9iaiwgdGl0bGUgKyAnWzBdJywgb3B0aW9ucyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHB1c2hGaWVsZERlZih2YWx1ZSwgY29sdW1uRGVmT2JqLCB0aXRsZSwgb3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5cbmNvbnN0IGdldE1ldGFEYXRhRnJvbURhdGEgPSAoZGF0YSkgPT4ge1xuICAgIGxldCBkYXRhT2JqZWN0O1xuICAgIGlmIChfLmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgaWYgKF8uaXNPYmplY3QoZGF0YVswXSkpIHtcbiAgICAgICAgICAgIGRhdGFPYmplY3QgPSBnZXRDbG9uZWRPYmplY3QoZGF0YVswXSk7XG4gICAgICAgICAgICAvKkxvb3Agb3ZlciB0aGUgb2JqZWN0IHRvIGZpbmQgb3V0IGFueSBudWxsIHZhbHVlcy4gSWYgYW55IG51bGwgdmFsdWVzIGFyZSBwcmVzZW50IGluIHRoZSBmaXJzdCByb3csIGNoZWNrIGFuZCBhc3NpZ24gdGhlIHZhbHVlcyBmcm9tIG90aGVyIHJvdy5cbiAgICAgICAgICAgICAqIEFzIGNvbHVtbiBnZW5lcmF0aW9uIGlzIGRlcGVuZGVudCBvbiBkYXRhLCBmb3IgcmVsYXRlZCBmaWVsZHMgaWYgZmlyc3Qgcm93IHZhbHVlIGlzIG51bGwsIGNvbHVtbnMgYXJlIG5vdCBnZW5lcmF0ZWQuXG4gICAgICAgICAgICAgKiBUbyBwcmV2ZW50IHRoaXMsIGNoZWNrIHRoZSBkYXRhIGluIG90aGVyIHJvd3MgYW5kIGdlbmVyYXRlIHRoZSBjb2x1bW5zLiBOZXcga2V5cyBmcm9tIG90aGVycyByb3dzIGFyZSBhbHNvIGFkZGVkKi9cbiAgICAgICAgICAgIF8uZm9yRWFjaChkYXRhLCAocm93LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICgoaW5kZXggKyAxKSA+PSAxMCkgeyAvLyBMaW1pdCB0aGUgZGF0YSBzZWFyY2ggdG8gZmlyc3QgMTAgcmVjb3Jkc1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF8uYXNzaWduV2l0aChkYXRhT2JqZWN0LCByb3csIChvYmpWYWx1ZSwgc3JjVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChvYmpWYWx1ZSA9PT0gbnVsbCB8fCBvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkKSA/IHNyY1ZhbHVlIDogb2JqVmFsdWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRhdGFPYmplY3QgPSBkYXRhWzBdO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZGF0YU9iamVjdCA9IGRhdGE7XG4gICAgfVxuICAgIHJldHVybiBkYXRhT2JqZWN0O1xufTtcblxuZXhwb3J0IGNvbnN0IHByZXBhcmVGaWVsZERlZnMgPSAoZGF0YSwgb3B0aW9ucz8pID0+IHtcbiAgICBsZXQgZGF0YU9iamVjdDtcbiAgICBjb25zdCBjb2x1bW5EZWYgPSB7XG4gICAgICAgICAgICAnb2JqZWN0cycgOiBbXSxcbiAgICAgICAgICAgICd0ZXJtaW5hbHMnIDogW11cbiAgICAgICAgfTtcbiAgICAvKmlmIG5vIGRhdGEgcHJvdmlkZWQsIGluaXRpYWxpemUgZGVmYXVsdCBjb2x1bW4gZGVmaW5pdGlvbnMqL1xuICAgIGlmICghZGF0YSkge1xuICAgICAgICBkYXRhID0gW107XG4gICAgfVxuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgICBvcHRpb25zID0ge307XG4gICAgfVxuICAgIG9wdGlvbnMuc2V0QmluZGluZ0ZpZWxkID0gdHJ1ZTtcbiAgICBvcHRpb25zLmNvbHVtbkNvdW50ID0gMDtcbiAgICBkYXRhT2JqZWN0ID0gZ2V0TWV0YURhdGFGcm9tRGF0YShkYXRhKTtcbiAgICAvKmZpcnN0IG9mIHRoZSBtYW55IGRhdGEgb2JqZWN0cyBmcm9tIGdyaWQgZGF0YSovXG4gICAgcHVzaEZpZWxkRGVmKGRhdGFPYmplY3QsIGNvbHVtbkRlZiwgJycsIG9wdGlvbnMpO1xuICAgIGlmICghb3B0aW9ucyB8fCAob3B0aW9ucyAmJiAhb3B0aW9ucy5maWx0ZXIpKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW5EZWYudGVybWluYWxzO1xuICAgIH1cbiAgICBzd2l0Y2ggKG9wdGlvbnMuZmlsdGVyKSB7XG4gICAgICAgIGNhc2UgJ2FsbCc6XG4gICAgICAgICAgICByZXR1cm4gY29sdW1uRGVmO1xuICAgICAgICBjYXNlICdvYmplY3RzJzpcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW5EZWYub2JqZWN0cztcbiAgICAgICAgY2FzZSAndGVybWluYWxzJzpcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW5EZWYudGVybWluYWxzO1xuICAgIH1cbiAgICByZXR1cm4gY29sdW1uRGVmO1xufTtcblxuXG4vKipcbiAqIFRvIGdldCBjb250YWluZXIgdGFyZ2V0IGVsZW1lbnQgdG8gYXBwZW5kIHRoZSBsaXN0IGZvciBzZWFyY2ggYW5kIGRhdGVwaWNrZXIgcGFuZWwgd2hlbiBmaWVsZCBwcmVzZW50IGluIGRpYWxvZ1xuICovXG5leHBvcnQgY29uc3QgZ2V0Q29udGFpbmVyVGFyZ2V0Q2xhc3MgPSAoZWxlbWVudCkgPT4ge1xuICAgIHJldHVybiAnLndtLWFwcCc7XG5cbiAgICAvLyBCZWxvdyBjb2RlIGlzIG5vdCB3b3JraW5nIHdoZW4gd2UgaGF2ZSBuZXN0ZWQgZGlhbG9ncy5cbiAgICAvLyBOZXN0ZWQgZGlhbG9ncyBjYXNlIHdlIHdpbGwgaGF2ZSAgbXVsdGlwbGUgJy5tb2RhbC1jb250ZW50JyBjbGFzc2VzIG9uIERPTSBkdWUgdG8gdGhhdCBjb250YWluZXIgcG9zaXRpb25zIGlzIG5vdCB3b3JraW5nIGFzIGV4cGVjdGVkLlxuICAgIC8vIEJlbG93IGNvZGUgdG8gZml4IHRoZSBpc3N1ZSA9PT4gV01TLTE4NzUxXG4gICAgLy8gQXMgcmVncmVzc2lvbiB3ZSBnb3QgPT0+IFdNUy0xOTgzNVxuXG4gICAgLy8gaWYgKGVsZW1lbnQuY2xvc2VzdCgnLm1vZGFsLWRpYWxvZycpKSB7XG4gICAgLy8gICAgIHJldHVybiAnLm1vZGFsLWNvbnRlbnQnO1xuICAgIC8vIH0gZWxzZSB7XG4gICAgLy8gICAgIHJldHVybiAnYm9keSc7XG4gICAgLy8gfVxuXG59XG5cbi8qKlxuICogVG8gZXh0cmFjdCB0aGUgVmFyaWFibGUgTmFtZSBmcm9tIGEgV2lkZ2V0J3MgYmluZGRhdGFzb3VyY2UgYXR0cmlidXRlXG4gKi9cbmV4cG9ydCBjb25zdCBleHRyYWN0RGF0YVNvdXJjZU5hbWUgPSAoYmluZERhdGFTb3VyY2UpID0+IHtcbiAgICBpZiAoIWJpbmREYXRhU291cmNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGRhdGFTb3VyY2VOYW1lO1xuICAgIGNvbnN0IHBhcnRzID0gYmluZERhdGFTb3VyY2Uuc3BsaXQoJy4nKTtcbiAgICBpZiAocGFydHMubGVuZ3RoID4gMSAmJiBwYXJ0c1swXSA9PT0gJ1ZhcmlhYmxlcycpIHtcbiAgICAgICAgZGF0YVNvdXJjZU5hbWUgPSBwYXJ0c1sxXTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGFTb3VyY2VOYW1lO1xufVxuXG5leHBvcnQgY29uc3Qgc2V0Rm9jdXNUcmFwID0gKGNvbnRhaW5lciwgYWxsb3dPdXRzaWRlQ2xpY2ssIHNldFJldHVybkZvY3VzRWxlbWVudD8pID0+IHtcbiAgICByZXR1cm4gY3JlYXRlRm9jdXNUcmFwKGNvbnRhaW5lciwge1xuICAgICAgICBvbkFjdGl2YXRlOiAoKSA9PiBjb250YWluZXIuY2xhc3NMaXN0LmFkZCgnaXMtYWN0aXZlJyksXG4gICAgICAgIG9uRGVhY3RpdmF0ZTogKCkgPT4gY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWFjdGl2ZScpLFxuICAgICAgICBhbGxvd091dHNpZGVDbGljazogYWxsb3dPdXRzaWRlQ2xpY2ssXG4gICAgICAgIHNldFJldHVybkZvY3VzOiBzZXRSZXR1cm5Gb2N1c0VsZW1lbnQsXG4gICAgfSk7XG59XG5cbi8qKlxuICogR2V0cyBrZXlib2FyZCBmb2N1c2FibGUgZWxlbWVudHMgd2l0aGluIGEgc3BlY2lmaWVkIGVsZW1lbnRcbiAqIEBwYXJhbSBlbGVtZW50IHtIVE1MRWxlbWVudH1cbiAqIEByZXR1cm5zIHtBcnJheX1cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEtleWJvYXJkRm9jdXNhYmxlRWxlbWVudHMgPSAoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gW2VsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgJ2EsIGJ1dHRvbiwgaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIGRldGFpbHMsIGlmcmFtZSwgZW1iZWQsIG9iamVjdCwgc3VtbWFyeSBkaWFsb2csIGF1ZGlvW2NvbnRyb2xzXSwgdmlkZW9bY29udHJvbHNdLCBbY29udGVudGVkaXRhYmxlXSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJ1xuICAgICldLmZpbHRlcihlbCA9PiB7XG4gICAgICAgIHJldHVybiAoIWVsWzBdLmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSAmJiAhZWxbMF0uaGFzQXR0cmlidXRlKCdoaWRkZW4nKSk7XG4gICAgfSlbMF07XG59XG4iXX0=
@@ -132,6 +132,21 @@ const isActiveNavItem = (link, routeName) => {
132
132
  const routeRegex = new RegExp('^(#\/|#)' + routeName + '$');
133
133
  return routeRegex.test(link);
134
134
  };
135
+ /**
136
+ * returns true if the menu has link to the current page.
137
+ * @param nodes
138
+ * @param routeUrl
139
+ */
140
+ const hasLinkToCurrentPage = (nodes, routeUrl) => {
141
+ return nodes.some(node => {
142
+ if (isActiveNavItem(node.link, routeUrl)) {
143
+ return true;
144
+ }
145
+ if (node.children) {
146
+ return hasLinkToCurrentPage(node.children, routeUrl);
147
+ }
148
+ });
149
+ };
135
150
  /**
136
151
  * Returns the orderBy Expression based on the 'sort 'option in pageable object
137
152
  * returned by backend
@@ -4873,5 +4888,5 @@ const updateDeviceView = (element, isTablet = false) => {
4873
4888
  * Generated bundle index. Do not edit.
4874
4889
  */
4875
4890
 
4876
- export { ALLFIELDS, APPLY_STYLES_TYPE, AUTOCLOSE_TYPE, BaseComponent, BaseContainerComponent, BaseFieldValidations, ContainerDirective, Context, CustomPipe, DEBOUNCE_TIMES, DISPLAY_TYPE, DataSetItem, DatasetAwareNavComponent, DialogRef, DialogServiceImpl, EDIT_MODE, EVENTS_MAP, FileExtensionFromMimePipe, FileIconClassPipe, FileSizePipe, FilterPipe, INPUTMODE, ImagePipe, ItemTemplateDirective, LIVE_CONSTANTS, LazyLoadDirective, Live_Operations, MessageComponent, NAVIGATION_TYPE, NumberToStringPipe, PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, PROP_TYPE, PartialContainerDirective, PartialDirective, PartialParamDirective, PartialParamHandlerDirective, PrefixPipe, PullToRefresh, RedrawableDirective, RepeatTemplateDirective, SanitizePipe, ShowInDeviceDirective, SmoothScrollDirective, StateClassPipe, StringToNumberPipe, StylableComponent, SuffixPipe, TextContentDirective, TimeFromNowPipe, ToCurrencyPipe, ToDatePipe, ToNumberPipe, TrailingZeroDecimalPipe, TrustAsPipe, WidgetRef, WmComponentsModule, applyFilterOnField, configureDnD, convertDataToObject, createArrayFrom, extractDataAsArray, extractDataSourceName, fetchDistinctValues, fetchRelatedFieldData, filterDate, getBackGroundImageUrl, getConditionalClasses, getContainerTargetClass, getDataTableFilterWidget, getDefaultValue, getDefaultViewModeWidget, getDistinctFieldProperties, getDistinctValues, getDistinctValuesForField, getEditModeWidget, getEmptyMatchMode, getEnableEmptyFilter, getEvaluatedData, getFieldLayoutConfig, getFieldTypeWidgetTypesMap, getImageUrl, getKeyboardFocusableElements, getMatchModeMsgs, getMatchModeTypesMap, getObjValueByKey, getOrderByExpr, getOrderedDataset, getRangeFieldValue, getRangeMatchMode, getRowOperationsColumn, getUniqObjsByDataField, getWatchIdentifier, getWidgetPropsByType, groupData, handleHeaderClick, interpolateBindExpressions, isActiveNavItem, isBooleanAttr, isDataSetWidget, isDimensionProp, isStyle, parseValueByType, performDataOperation, prepareFieldDefs, propNameCSSKeyMap, provideAs, provideAsDialogRef, provideAsWidgetRef, refreshDataSource, register$1 as register, registerFormWidget, setFocusTrap, setHeaderConfig, setHeaderConfigForTable, setItemByCompare, styler, toggleAllHeaders, transformData, transformDataWithKeys, transformFormData, unsupportedStatePersistenceTypes, updateDeviceView, ɵ0$6 as ɵ0, registerProps$4 as ɵa, registerProps$3 as ɵb, registerProps$2 as ɵc, registerProps$1 as ɵd, registerProps as ɵe };
4891
+ export { ALLFIELDS, APPLY_STYLES_TYPE, AUTOCLOSE_TYPE, BaseComponent, BaseContainerComponent, BaseFieldValidations, ContainerDirective, Context, CustomPipe, DEBOUNCE_TIMES, DISPLAY_TYPE, DataSetItem, DatasetAwareNavComponent, DialogRef, DialogServiceImpl, EDIT_MODE, EVENTS_MAP, FileExtensionFromMimePipe, FileIconClassPipe, FileSizePipe, FilterPipe, INPUTMODE, ImagePipe, ItemTemplateDirective, LIVE_CONSTANTS, LazyLoadDirective, Live_Operations, MessageComponent, NAVIGATION_TYPE, NumberToStringPipe, PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, PROP_TYPE, PartialContainerDirective, PartialDirective, PartialParamDirective, PartialParamHandlerDirective, PrefixPipe, PullToRefresh, RedrawableDirective, RepeatTemplateDirective, SanitizePipe, ShowInDeviceDirective, SmoothScrollDirective, StateClassPipe, StringToNumberPipe, StylableComponent, SuffixPipe, TextContentDirective, TimeFromNowPipe, ToCurrencyPipe, ToDatePipe, ToNumberPipe, TrailingZeroDecimalPipe, TrustAsPipe, WidgetRef, WmComponentsModule, applyFilterOnField, configureDnD, convertDataToObject, createArrayFrom, extractDataAsArray, extractDataSourceName, fetchDistinctValues, fetchRelatedFieldData, filterDate, getBackGroundImageUrl, getConditionalClasses, getContainerTargetClass, getDataTableFilterWidget, getDefaultValue, getDefaultViewModeWidget, getDistinctFieldProperties, getDistinctValues, getDistinctValuesForField, getEditModeWidget, getEmptyMatchMode, getEnableEmptyFilter, getEvaluatedData, getFieldLayoutConfig, getFieldTypeWidgetTypesMap, getImageUrl, getKeyboardFocusableElements, getMatchModeMsgs, getMatchModeTypesMap, getObjValueByKey, getOrderByExpr, getOrderedDataset, getRangeFieldValue, getRangeMatchMode, getRowOperationsColumn, getUniqObjsByDataField, getWatchIdentifier, getWidgetPropsByType, groupData, handleHeaderClick, hasLinkToCurrentPage, interpolateBindExpressions, isActiveNavItem, isBooleanAttr, isDataSetWidget, isDimensionProp, isStyle, parseValueByType, performDataOperation, prepareFieldDefs, propNameCSSKeyMap, provideAs, provideAsDialogRef, provideAsWidgetRef, refreshDataSource, register$1 as register, registerFormWidget, setFocusTrap, setHeaderConfig, setHeaderConfigForTable, setItemByCompare, styler, toggleAllHeaders, transformData, transformDataWithKeys, transformFormData, unsupportedStatePersistenceTypes, updateDeviceView, ɵ0$6 as ɵ0, registerProps$4 as ɵa, registerProps$3 as ɵb, registerProps$2 as ɵc, registerProps$1 as ɵd, registerProps as ɵe };
4877
4892
  //# sourceMappingURL=index.js.map