@1money/component-ui 0.0.81 → 0.0.83

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 (39) hide show
  1. package/es/components/Calendar/style/Calendar.css +41 -28
  2. package/es/components/ProTable/ProTable.js +1 -4
  3. package/es/components/ProTable/interface.d.ts +2 -3
  4. package/es/components/Select/Select.js +6 -2
  5. package/es/components/Table/constants.d.ts +0 -1
  6. package/es/components/Table/constants.js +1 -2
  7. package/es/components/Table/core/useTableColumns.d.ts +1 -2
  8. package/es/components/Table/core/useTableColumns.js +5 -8
  9. package/es/components/Table/core/useTableSetup.js +4 -7
  10. package/es/components/Table/features/FilterTrigger.d.ts +1 -2
  11. package/es/components/Table/features/FilterTrigger.js +4 -8
  12. package/es/components/Table/features/SortTrigger.d.ts +2 -3
  13. package/es/components/Table/features/SortTrigger.js +4 -9
  14. package/es/components/Table/interface.d.ts +0 -2
  15. package/es/components/Table/renderers/HeaderCell.d.ts +2 -3
  16. package/es/components/Table/renderers/HeaderCell.js +2 -6
  17. package/es/components/Table/style/Table.css +6 -33
  18. package/es/index.css +1 -1
  19. package/lib/components/Calendar/style/Calendar.css +41 -28
  20. package/lib/components/ProTable/ProTable.js +1 -4
  21. package/lib/components/ProTable/interface.d.ts +2 -3
  22. package/lib/components/Select/Select.js +6 -2
  23. package/lib/components/Table/constants.d.ts +0 -1
  24. package/lib/components/Table/constants.js +2 -3
  25. package/lib/components/Table/core/useTableColumns.d.ts +1 -2
  26. package/lib/components/Table/core/useTableColumns.js +5 -8
  27. package/lib/components/Table/core/useTableSetup.js +3 -6
  28. package/lib/components/Table/features/FilterTrigger.d.ts +1 -2
  29. package/lib/components/Table/features/FilterTrigger.js +4 -8
  30. package/lib/components/Table/features/SortTrigger.d.ts +2 -3
  31. package/lib/components/Table/features/SortTrigger.js +4 -9
  32. package/lib/components/Table/interface.d.ts +0 -2
  33. package/lib/components/Table/renderers/HeaderCell.d.ts +2 -3
  34. package/lib/components/Table/renderers/HeaderCell.js +2 -6
  35. package/lib/components/Table/style/Table.css +6 -33
  36. package/lib/index.css +1 -1
  37. package/package.json +1 -1
  38. package/scripts/mcp-server/examples.generated.json +18 -24
  39. package/scripts/mcp-server/index.generated.json +5 -25
@@ -397,7 +397,11 @@ export var Select = function Select(props) {
397
397
  fontSize: getFontSize(normalizedSize)
398
398
  };
399
399
  var valueLabelClass = hasSelection ? 'value' : 'placeholder';
400
- var isMultipleValueFilled = multiple && hasSelection && maxVisibleValues === undefined;
400
+ var isMultipleValueFilled = multiple && hasSelection && maxVisibleValues === undefined &&
401
+ // A custom `renderValue` produces its own single-line summary, so the
402
+ // multi-value chip layout (height:auto + vertical padding + flex-wrap)
403
+ // must not kick in and inflate the trigger height.
404
+ !renderValue;
401
405
  var triggerClassName = classes('trigger', joinCls(classes("trigger-".concat(normalizedSize)), classes("trigger-".concat(variant)), innerOpen && classes('trigger-open'), isMultipleValueFilled && classes('trigger-multiple-filled'), hasSelection ? classes('trigger-filled') : classes('trigger-placeholder'), status !== 'default' && classes("trigger-".concat(status)), disabled && classes('trigger-disabled'), readOnly && !disabled && classes('trigger-readonly')));
402
406
  var iconSize = normalizedSize === 'large' ? 20 : 16;
403
407
  var activeOptionId = searchable && innerOpen && activeIndex !== null ? "".concat(optionIdPrefix, "-").concat(activeIndex) : undefined;
@@ -573,4 +577,4 @@ export var Select = function Select(props) {
573
577
  };
574
578
  Select.displayName = 'Select';
575
579
  export default /*#__PURE__*/memo(Select);
576
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZsb2F0aW5nRm9jdXNNYW5hZ2VyIiwiRmxvYXRpbmdQb3J0YWwiLCJ1c2VJbnRlcmFjdGlvbnMiLCJ1c2VMaXN0TmF2aWdhdGlvbiIsInVzZVR5cGVhaGVhZCIsIm1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VJZCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZUV2ZW50Q2FsbGJhY2siLCJJY29ucyIsIlNwaW5uZXIiLCJUeXBvZ3JhcGh5Qm9keSIsIlR5cG9ncmFwaHlMYWJlbCIsImpvaW5DbHMiLCJkZWZhdWx0Iiwicm9vdENsYXNzbmFtZXMiLCJTZWxlY3RGaWVsZFNoZWxsIiwiU2VsZWN0T3B0aW9uQ29udGVudCIsIlNlbGVjdFNlYXJjaENvbnRyb2wiLCJTZWxlY3RWYWx1ZUNvbnRlbnQiLCJ1c2VTZWxlY3RTaGVsbCIsIktFWUJPQVJEIiwiU0VMRUNUX1RZUE9HUkFQSFkiLCJleHRyYWN0T3B0aW9uVGV4dCIsImZpbHRlck9wdGlvbkdyb3VwcyIsImZsYXR0ZW5PcHRpb25Hcm91cHMiLCJnZXRNdWx0aXBsZVZhbHVlIiwiZ2V0Rm9udFNpemUiLCJnZXRPcHRpb25zQnlWYWx1ZXMiLCJnZXRTZWxlY3RlZE9wdGlvbnMiLCJpc09wdGlvblNlbGVjdGVkIiwibm9ybWFsaXplU2l6ZSIsIm5vcm1hbGl6ZU9wdGlvbkdyb3VwcyIsInJlbW92ZU11bHRpcGxlVmFsdWUiLCJ0b2dnbGVNdWx0aXBsZVZhbHVlIiwiREVGQVVMVF9NQVhfSEVJR0hUIiwiU2VsZWN0IiwicHJvcHMiLCJfcHJvcHMkY2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsInN0eWxlIiwiaWQiLCJuYW1lIiwiYXJpYUxhYmVsIiwiYXJpYUxhYmVsbGVkQnkiLCJfcHJvcHMkcGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciIsIl9wcm9wcyRvcHRpb25zIiwib3B0aW9ucyIsInZhbHVlIiwiZGVmYXVsdFZhbHVlIiwiX3Byb3BzJHNpemUiLCJzaXplIiwiX3Byb3BzJHN0YXR1cyIsInN0YXR1cyIsIl9wcm9wcyR2YXJpYW50IiwidmFyaWFudCIsIl9wcm9wcyRkaXNhYmxlZCIsImRpc2FibGVkIiwiZGlzYWJsZWRQcm9wIiwiX3Byb3BzJHJlYWRPbmx5IiwicmVhZE9ubHkiLCJfcHJvcHMkbG9hZGluZyIsImxvYWRpbmciLCJfcHJvcHMkbXVsdGlwbGUiLCJtdWx0aXBsZSIsIm1heFZpc2libGVWYWx1ZXMiLCJfcHJvcHMkc2VhcmNoYWJsZSIsInNlYXJjaGFibGUiLCJfcHJvcHMkc2VhcmNoUGxhY2Vob2wiLCJzZWFyY2hQbGFjZWhvbGRlciIsInNlYXJjaFZhbHVlIiwiX3Byb3BzJGRlZmF1bHRTZWFyY2hWIiwiZGVmYXVsdFNlYXJjaFZhbHVlIiwiX3Byb3BzJGZpbHRlcklucHV0QXV0IiwiZmlsdGVySW5wdXRBdXRvRm9jdXMiLCJsYWJlbCIsImxhYmVsQ2xhc3NOYW1lIiwiaW5mbyIsImRlc2NyaXB0aW9uIiwiZmVlZGJhY2siLCJfcHJvcHMkcmVxdWlyZWQiLCJyZXF1aXJlZCIsInByZWZpeCIsIl9wcm9wcyRlbXB0eUNvbnRlbnQiLCJlbXB0eUNvbnRlbnQiLCJwYW5lbEhlYWRlciIsInBhbmVsRm9vdGVyIiwib3BlbiIsIl9wcm9wcyRkZWZhdWx0T3BlbiIsImRlZmF1bHRPcGVuIiwiX3Byb3BzJHBvcnRhbCIsInBvcnRhbCIsIl9wcm9wcyRhbGxvd0Rlc2VsZWN0IiwiYWxsb3dEZXNlbGVjdCIsInBhbmVsQ2xhc3NOYW1lIiwib3B0aW9uQ2xhc3NOYW1lIiwiZ3JvdXBMYWJlbENsYXNzTmFtZSIsIl9wcm9wcyRsaXN0TWF4SGVpZ2h0IiwibGlzdE1heEhlaWdodCIsIm9mZnNldCIsImFuaW1hdGlvbiIsIm9uQ2hhbmdlIiwib25PcGVuQ2hhbmdlIiwib25TZWFyY2hDaGFuZ2UiLCJvbkJsdXIiLCJmaWx0ZXJPcHRpb24iLCJyZW5kZXJPcHRpb24iLCJyZW5kZXJPcHRpb25Db250ZW50IiwicmVuZGVyVmFsdWUiLCJyZWYiLCJpbnRlcmFjdGl2ZSIsImNsYXNzZXMiLCJhdXRvSWQiLCJ0cmlnZ2VySWQiLCJsYWJlbElkIiwiZGVzY3JpcHRpb25JZCIsImZlZWRiYWNrSWQiLCJvcHRpb25JZFByZWZpeCIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJ1bmRlZmluZWQiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaW5uZXJWYWx1ZSIsInNldElubmVyVmFsdWUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMyIsIl91c2VDb250cm9sbGVkU3RhdGU0IiwiaW5uZXJTZWFyY2hWYWx1ZSIsInNldElubmVyU2VhcmNoVmFsdWUiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiYWN0aXZlSW5kZXgiLCJzZXRBY3RpdmVJbmRleCIsIm5vcm1hbGl6ZWRTaXplIiwiYWxsT3B0aW9uR3JvdXBzIiwiYWxsRmxhdE9wdGlvbnMiLCJ2aXNpYmxlT3B0aW9uR3JvdXBzIiwidmlzaWJsZUZsYXRPcHRpb25zIiwic2VsZWN0ZWRPcHRpb25zIiwic2VsZWN0ZWRJbmRleCIsImxlbmd0aCIsIm1hdGNoZWRJbmRleCIsImZpbmRJbmRleCIsIm9wdGlvbiIsImhhc1NlbGVjdGlvbiIsImxpc3RSZWYiLCJsaXN0Q29udGVudFJlZiIsImZsb2F0aW5nUmVmIiwidHJpZ2dlclJlZiIsInNlYXJjaElucHV0UmVmIiwiaGFuZGxlVHJpZ2dlclJlZiIsIm5vZGUiLCJjdXJyZW50IiwiX3VzZVNlbGVjdFNoZWxsIiwiaW5uZXJPcGVuIiwiaXNPcGVuIiwiaGFuZGxlT3BlbkNoYW5nZSIsInNldE9wZW4iLCJyZWZzIiwiY29udGV4dCIsImZsb2F0aW5nU3R5bGVzIiwidHJhbnNpdGlvblN0eWxlcyIsImlzTW91bnRlZCIsImJhc2VJbnRlcmFjdGlvbnMiLCJzZXRSZWZlcmVuY2UiLCJzZXRGbG9hdGluZyIsImxpc3ROYXZpZ2F0aW9uIiwib25OYXZpZ2F0ZSIsImVuYWJsZWQiLCJsb29wIiwidmlydHVhbCIsInR5cGVhaGVhZCIsIm9uTWF0Y2giLCJfdXNlSW50ZXJhY3Rpb25zIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZ2V0UmVmZXJlbmNlUHJvcHMiLCJnZXRGbG9hdGluZ1Byb3BzIiwiZ2V0SXRlbVByb3BzIiwiZmlyc3RFbmFibGVkSW5kZXgiLCJwcmV2IiwiX2EiLCJmb2N1cyIsInByZXZlbnRTY3JvbGwiLCJzbGljZSIsInNldFNlYXJjaElucHV0UmVmIiwibm90aWZ5Qmx1cklmT3V0c2lkZSIsInJlbGF0ZWRUYXJnZXQiLCJldmVudCIsIl9iIiwibmV4dFRhcmdldCIsIndpdGhpblRyaWdnZXIiLCJjb250YWlucyIsIndpdGhpbkZsb2F0aW5nIiwiaGFuZGxlVHJpZ2dlckJsdXIiLCJoYW5kbGVPcHRpb25CbHVyIiwiY29tbWl0Q2hhbmdlIiwibmV4dFZhbHVlIiwibmV4dE9wdGlvbiIsImhhbmRsZVNlbGVjdE9wdGlvbiIsIm5leHRPcHRpb25zIiwiaGFuZGxlUmVtb3ZlU2VsZWN0ZWRWYWx1ZSIsIm9wdGlvblZhbHVlIiwiaW5jbHVkZXMiLCJoYW5kbGVUcmlnZ2VyS2V5RG93biIsImtleSIsIkVOVEVSIiwiU1BBQ0UiLCJwcmV2ZW50RGVmYXVsdCIsIkFSUk9XX0RPV04iLCJBUlJPV19VUCIsImhhbmRsZUl0ZW1Nb3VzZUVudGVyIiwiaW5kZXgiLCJoYW5kbGVUYWdSZW1vdmVNb3VzZURvd24iLCJzdG9wUHJvcGFnYXRpb24iLCJoYW5kbGVUYWdSZW1vdmVDbGljayIsImhhbmRsZVNlYXJjaEJsdXIiLCJoYW5kbGVTZWFyY2hDaGFuZ2UiLCJfZXZlbnQiLCJmaW5kRW5hYmxlZEluZGV4IiwiZGlyZWN0aW9uIiwic3RhcnQiLCJzdGVwIiwiY2FuZGlkYXRlIiwiaGFuZGxlU2VhcmNoS2V5RG93biIsIm5leHQiLCJFU0NBUEUiLCJyZW5kZXJWYWx1ZU1ldGEiLCJmb250U2l6ZSIsInZhbHVlTGFiZWxDbGFzcyIsImlzTXVsdGlwbGVWYWx1ZUZpbGxlZCIsInRyaWdnZXJDbGFzc05hbWUiLCJpY29uU2l6ZSIsImFjdGl2ZU9wdGlvbklkIiwiZmxvYXRpbmdBcmlhTGFiZWxsZWRCeSIsImRlc2NyaWJlZEJ5SWRzIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJjaGlsZHJlbiIsIk9iamVjdCIsImFzc2lnbiIsInR5cGUiLCJvbktleURvd24iLCJvblJlbW92ZSIsIm9uUmVtb3ZlQ2xpY2siLCJvblJlbW92ZU1vdXNlRG93biIsInN0cm9rZVdpZHRoIiwiY29sb3IiLCJwYW5lbE5vZGUiLCJtb2RhbCIsImluaXRpYWxGb2N1cyIsInJldHVybkZvY3VzIiwiYWN0aXZlRGVzY2VuZGFudCIsImVtcHR5IiwiZmxhdEluZGV4IiwibWFwIiwiZ3JvdXAiLCJncm91cExhYmVsIiwic3Ryb25nIiwib3B0aW9uRmxhdEluZGV4Iiwic2VsZWN0ZWQiLCJhY3RpdmUiLCJvcHRpb25NZXRhIiwicm9sZSIsIm9uQ2xpY2siLCJvbk1vdXNlRW50ZXIiLCJjb250ZW50IiwiZGlzcGxheU5hbWUiXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsR0FBRyxJQUFJQyxJQUFJLEVBQUVDLElBQUksSUFBSUMsS0FBSyxRQUFRLG1CQUFtQjtBQ0E5RCxTQUNFQyxvQkFBb0IsRUFDcEJDLGNBQWMsRUFDZEMsZUFBZSxFQUNmQyxpQkFBaUIsRUFDakJDLFlBQVksUUFDUCxvQkFBb0I7QUFDM0IsU0FBU0MsSUFBSSxFQUFFQyxTQUFTLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ3pFLE9BQU9DLGtCQUFrQixNQUFNLGtDQUFrQztBQUNqRSxPQUFPQyxnQkFBZ0IsTUFBTSxnQ0FBZ0M7QUFDN0QsU0FBU0MsS0FBSyxRQUFRLFVBQVU7QUFDaEMsU0FB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QSxLQUFBekYsTUFBQSxDQXJDT21GLEtBQUssQ0FBQ3BELEdBQUcsT0FBQS9CLE1BQUEsQ0FBSS9CLE1BQU0sQ0FBQzlGLEtBQUssQ0FBRSxDQXNDNUI7a0JBRWIsQ0FBQyxDQUFDO2dCQUFBLENBQUEsRUFsRU1nTixLQUFLLENBQUNwRCxHQUFHLENBbUViO2NBQUEsQ0FDUCxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQ0g7VUFBQSxDQUFBLENBQ0csRUFDTHRILFdBQVcsSUFBSSxJQUFJLElBQ2xCaEcsSUFBQSxDQUFBLEtBQUEsRUFBQTtZQUFLOEMsU0FBUyxFQUFFMkUsT0FBTyxDQUFDLGNBQWMsQ0FBQztZQUFBK0gsUUFBQSxFQUFHeEo7VUFBVyxDQUFBLENBQ3REO1FBQUEsQ0FBQSxDQUFBO01BQ0csQ0FBQSxDQUVUO01BRUQsT0FBT0ssTUFBTSxHQUFHckcsSUFBQSxDQUFDSSxjQUFjLEVBQUE7UUFBQW9QLFFBQUEsRUFBRVU7TUFBUyxDQUFBLENBQWtCLEdBQUdBLFNBQVM7SUFDMUUsQ0FBQyxDQUFDLENBQUU7RUFBQSxDQUFBLENBQ2E7QUFFdkIsQ0FBQztBQUVEdk4sTUFBTSxDQUFDME8sV0FBVyxHQUFHLFFBQVE7QUFFN0IsNEJBQWU3USxJQUFJLENBQUNtQyxNQUFNLENBQUMiLCJmaWxlIjoiY29tcG9uZW50cy9TZWxlY3QvU2VsZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IEZsb2F0aW5nRm9jdXNNYW5hZ2VyLCBGbG9hdGluZ1BvcnRhbCwgdXNlSW50ZXJhY3Rpb25zLCB1c2VMaXN0TmF2aWdhdGlvbiwgdXNlVHlwZWFoZWFkLCB9IGZyb20gJ0BmbG9hdGluZy11aS9yZWFjdCc7XG5pbXBvcnQgeyBtZW1vLCB1c2VFZmZlY3QsIHVzZUlkLCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUNvbnRyb2xsZWRTdGF0ZSBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUNvbnRyb2xsZWRTdGF0ZSc7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHsgSWNvbnMgfSBmcm9tICcuLi9JY29ucyc7XG5pbXBvcnQgeyBTcGlubmVyIH0gZnJvbSAnLi4vU3Bpbm5lcic7XG5pbXBvcnQgeyBUeXBvZ3JhcGh5Qm9keSwgVHlwb2dyYXBoeUxhYmVsIH0gZnJvbSAnLi4vVHlwb2dyYXBoeSc7XG5pbXBvcnQgeyBqb2luQ2xzLCBkZWZhdWx0IGFzIHJvb3RDbGFzc25hbWVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgU2VsZWN0RmllbGRTaGVsbCBmcm9tICcuL1NlbGVjdEZpZWxkU2hlbGwnO1xuaW1wb3J0IFNlbGVjdE9wdGlvbkNvbnRlbnQgZnJvbSAnLi9TZWxlY3RPcHRpb25Db250ZW50JztcbmltcG9ydCBTZWxlY3RTZWFyY2hDb250cm9sIGZyb20gJy4vU2VsZWN0U2VhcmNoQ29udHJvbCc7XG5pbXBvcnQgU2VsZWN0VmFsdWVDb250ZW50IGZyb20gJy4vU2VsZWN0VmFsdWVDb250ZW50JztcbmltcG9ydCB7IHVzZVNlbGVjdFNoZWxsIH0gZnJvbSAnLi91c2VTZWxlY3RTaGVsbCc7XG5pbXBvcnQgeyBLRVlCT0FSRCwgU0VMRUNUX1RZUE9HUkFQSFkgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBleHRyYWN0T3B0aW9uVGV4dCwgZmlsdGVyT3B0aW9uR3JvdXBzLCBmbGF0dGVuT3B0aW9uR3JvdXBzLCBnZXRNdWx0aXBsZVZhbHVlLCBnZXRGb250U2l6ZSwgZ2V0T3B0aW9uc0J5VmFsdWVzLCBnZXRTZWxlY3RlZE9wdGlvbnMsIGlzT3B0aW9uU2VsZWN0ZWQsIG5vcm1hbGl6ZVNpemUsIG5vcm1hbGl6ZU9wdGlvbkdyb3VwcywgcmVtb3ZlTXVsdGlwbGVWYWx1ZSwgdG9nZ2xlTXVsdGlwbGVWYWx1ZSwgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCAnLi9zdHlsZSc7XG5jb25zdCBERUZBVUxUX01BWF9IRUlHSFQgPSAzMjA7XG5leHBvcnQgY29uc3QgU2VsZWN0ID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBjbGFzc05hbWUgPSAnJywgcHJlZml4Q2xzID0gJ3NlbGVjdCcsIHN0eWxlLCBpZCwgbmFtZSwgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwsICdhcmlhLWxhYmVsbGVkYnknOiBhcmlhTGFiZWxsZWRCeSwgcGxhY2Vob2xkZXIgPSAnVmFsdWUnLCBvcHRpb25zID0gW10sIHZhbHVlLCBkZWZhdWx0VmFsdWUsIHNpemUgPSAnbGFyZ2UnLCBzdGF0dXMgPSAnZGVmYXVsdCcsIHZhcmlhbnQgPSAnZmlsbCcsIGRpc2FibGVkOiBkaXNhYmxlZFByb3AgPSBmYWxzZSwgcmVhZE9ubHkgPSBmYWxzZSwgbG9hZGluZyA9IGZhbHNlLCBtdWx0aXBsZSA9IGZhbHNlLCBtYXhWaXNpYmxlVmFsdWVzLCBzZWFyY2hhYmxlID0gZmFsc2UsIHNlYXJjaFBsYWNlaG9sZGVyID0gJ1NlYXJjaCcsIHNlYXJjaFZhbHVlLCBkZWZhdWx0U2VhcmNoVmFsdWUgPSAnJywgZmlsdGVySW5wdXRBdXRvRm9jdXMgPSB0cnVlLCBsYWJlbCwgbGFiZWxDbGFzc05hbWUsIGluZm8sIGRlc2NyaXB0aW9uLCBmZWVkYmFjaywgcmVxdWlyZWQgPSB0cnVlLCBwcmVmaXgsIGVtcHR5Q29udGVudCA9ICdObyBvcHRpb25zJywgcGFuZWxIZWFkZXIsIHBhbmVsRm9vdGVyLCBvcGVuLCBkZWZhdWx0T3BlbiA9IGZhbHNlLCBwb3J0YWwgPSB0cnVlLCBhbGxvd0Rlc2VsZWN0ID0gZmFsc2UsIHBhbmVsQ2xhc3NOYW1lLCBvcHRpb25DbGFzc05hbWUsIGdyb3VwTGFiZWxDbGFzc05hbWUsIGxpc3RNYXhIZWlnaHQgPSBERUZBVUxUX01BWF9IRUlHSFQsIG9mZnNldCwgYW5pbWF0aW9uLCBvbkNoYW5nZSwgb25PcGVuQ2hhbmdlLCBvblNlYXJjaENoYW5nZSwgb25CbHVyLCBmaWx0ZXJPcHRpb24sIHJlbmRlck9wdGlvbiwgcmVuZGVyT3B0aW9uQ29udGVudCwgcmVuZGVyVmFsdWUsIHJlZiwgfSA9IHByb3BzO1xuICAgIGNvbnN0IGRpc2FibGVkID0gZGlzYWJsZWRQcm9wIHx8IGxvYWRpbmc7XG4gICAgY29uc3QgaW50ZXJhY3RpdmUgPSAhZGlzYWJsZWQgJiYgIXJlYWRPbmx5O1xuICAgIGNvbnN0IGNsYXNzZXMgPSByb290Q2xhc3NuYW1lcyhwcmVmaXhDbHMpO1xuICAgIGNvbnN0IGF1dG9JZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgdHJpZ2dlcklkID0gaWQgIT09IG51bGwgJiYgaWQgIT09IHZvaWQgMCA/IGlkIDogYXV0b0lkO1xuICAgIGNvbnN0IGxhYmVsSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IGZlZWRiYWNrSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IG9wdGlvbklkUHJlZml4ID0gdXNlSWQoKTtcbiAgICBjb25zdCBbaW5uZXJWYWx1ZSwgc2V0SW5uZXJWYWx1ZV0gPSB1c2VDb250cm9sbGVkU3RhdGUoZGVmYXVsdFZhbHVlICE9PSBudWxsICYmIGRlZmF1bHRWYWx1ZSAhPT0gdm9pZCAwID8gZGVmYXVsdFZhbHVlIDogKG11bHRpcGxlID8gW10gOiB1bmRlZmluZWQpLCB2YWx1ZSk7XG4gICAgY29uc3QgW2lubmVyU2VhcmNoVmFsdWUsIHNldElubmVyU2VhcmNoVmFsdWVdID0gdXNlQ29udHJvbGxlZFN0YXRlKGRlZmF1bHRTZWFyY2hWYWx1ZSwgc2VhcmNoVmFsdWUpO1xuICAgIGNvbnN0IFthY3RpdmVJbmRleCwgc2V0QWN0aXZlSW5kZXhdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3Qgbm9ybWFsaXplZFNpemUgPSBub3JtYWxpemVTaXplKHNpemUpO1xuICAgIGNvbnN0IGFsbE9wdGlvbkdyb3VwcyA9IHVzZU1lbW8oKCkgPT4gbm9ybWFsaXplT3B0aW9uR3JvdXBzKG9wdGlvbnMpLCBbb3B0aW9uc10pO1xuICAgIGNvbnN0IGFsbEZsYXRPcHRpb25zID0gdXNlTWVtbygoKSA9PiBmbGF0dGVuT3B0aW9uR3JvdXBzKGFsbE9wdGlvbkdyb3VwcyksIFthbGxPcHRpb25Hcm91cHNdKTtcbiAgICBjb25zdCB2aXNpYmxlT3B0aW9uR3JvdXBzID0gdXNlTWVtbygoKSA9PiAoc2VhcmNoYWJsZVxuICAgICAgICA/IGZpbHRlck9wdGlvbkdyb3VwcyhhbGxPcHRpb25Hcm91cHMsIGlubmVyU2VhcmNoVmFsdWUsIGZpbHRlck9wdGlvbilcbiAgICAgICAgOiBhbGxPcHRpb25Hcm91cHMpLCBbYWxsT3B0aW9uR3JvdXBzLCBmaWx0ZXJPcHRpb24sIGlubmVyU2VhcmNoVmFsdWUsIHNlYXJjaGFibGVdKTtcbiAgICBjb25zdCB2aXNpYmxlRmxhdE9wdGlvbnMgPSB1c2VNZW1vKCgpID0+IGZsYXR0ZW5PcHRpb25Hcm91cHModmlzaWJsZU9wdGlvbkdyb3VwcyksIFt2aXNpYmxlT3B0aW9uR3JvdXBzXSk7XG4gICAgY29uc3Qgc2VsZWN0ZWRPcHRpb25zID0gdXNlTWVtbygoKSA9PiBnZXRTZWxlY3RlZE9wdGlvbnMoYWxsRmxhdE9wdGlvbnMsIGlubmVyVmFsdWUsIG11bHRpcGxlKSwgW2FsbEZsYXRPcHRpb25zLCBpbm5lclZhbHVlLCBtdWx0aXBsZV0pO1xuICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1hdGNoZWRJbmRleCA9IHZpc2libGVGbGF0T3B0aW9ucy5maW5kSW5kZXgoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSBzZWxlY3RlZE9wdGlvbnNbMF0udmFsdWUpO1xuICAgICAgICByZXR1cm4gbWF0Y2hlZEluZGV4ID49IDAgPyBtYXRjaGVkSW5kZXggOiBudWxsO1xuICAgIH0sIFtzZWxlY3RlZE9wdGlvbnMsIHZpc2libGVGbGF0T3B0aW9uc10pO1xuICAgIGNvbnN0IGhhc1NlbGVjdGlvbiA9IHNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPiAwO1xuICAgIGNvbnN0IGxpc3RSZWYgPSB1c2VSZWYoW10pO1xuICAgIGNvbnN0IGxpc3RDb250ZW50UmVmID0gdXNlUmVmKFtdKTtcbiAgICBjb25zdCBmbG9hdGluZ1JlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCB0cmlnZ2VyUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHNlYXJjaElucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGhhbmRsZVRyaWdnZXJSZWYgPSB1c2VFdmVudENhbGxiYWNrKChub2RlKSA9PiB7XG4gICAgICAgIHRyaWdnZXJSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICAgIHJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHsgaXNPcGVuOiBpbm5lck9wZW4sIHNldE9wZW46IGhhbmRsZU9wZW5DaGFuZ2UsIHJlZnMsIGNvbnRleHQsIGZsb2F0aW5nU3R5bGVzLCB0cmFuc2l0aW9uU3R5bGVzLCBpc01vdW50ZWQsIGJhc2VJbnRlcmFjdGlvbnMsIH0gPSB1c2VTZWxlY3RTaGVsbCh7XG4gICAgICAgIG9wZW4sXG4gICAgICAgIGRlZmF1bHRPcGVuLFxuICAgICAgICBvbk9wZW5DaGFuZ2UsXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICByZWFkT25seSxcbiAgICAgICAgbGlzdE1heEhlaWdodCxcbiAgICAgICAgYW5pbWF0aW9uLFxuICAgICAgICBvZmZzZXQsXG4gICAgfSk7XG4gICAgY29uc3Qgc2V0UmVmZXJlbmNlID0gdXNlRXZlbnRDYWxsYmFjaygobm9kZSkgPT4ge1xuICAgICAgICByZWZzLnNldFJlZmVyZW5jZShub2RlKTtcbiAgICAgICAgaGFuZGxlVHJpZ2dlclJlZihub2RlKTtcbiAgICB9KTtcbiAgICBjb25zdCBzZXRGbG9hdGluZyA9IHVzZUV2ZW50Q2FsbGJhY2soKG5vZGUpID0+IHtcbiAgICAgICAgcmVmcy5zZXRGbG9hdGluZyhub2RlKTtcbiAgICAgICAgZmxvYXRpbmdSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgfSk7XG4gICAgY29uc3QgbGlzdE5hdmlnYXRpb24gPSB1c2VMaXN0TmF2aWdhdGlvbihjb250ZXh0LCB7XG4gICAgICAgIGxpc3RSZWYsXG4gICAgICAgIGFjdGl2ZUluZGV4LFxuICAgICAgICBzZWxlY3RlZEluZGV4LFxuICAgICAgICBvbk5hdmlnYXRlOiBzZXRBY3RpdmVJbmRleCxcbiAgICAgICAgZW5hYmxlZDogaW5uZXJPcGVuLFxuICAgICAgICBsb29wOiB0cnVlLFxuICAgICAgICB2aXJ0dWFsOiBzZWFyY2hhYmxlLFxuICAgIH0pO1xuICAgIGNvbnN0IHR5cGVhaGVhZCA9IHVzZVR5cGVhaGVhZChjb250ZXh0LCB7XG4gICAgICAgIGxpc3RSZWY6IGxpc3RDb250ZW50UmVmLFxuICAgICAgICBhY3RpdmVJbmRleCxcbiAgICAgICAgc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgZW5hYmxlZDogaW5uZXJPcGVuICYmICFzZWFyY2hhYmxlLFxuICAgICAgICBvbk1hdGNoOiBzZXRBY3RpdmVJbmRleCxcbiAgICB9KTtcbiAgICBjb25zdCB7IGdldFJlZmVyZW5jZVByb3BzLCBnZXRGbG9hdGluZ1Byb3BzLCBnZXRJdGVtUHJvcHMgfSA9IHVzZUludGVyYWN0aW9ucyhbXG4gICAgICAgIC4uLmJhc2VJbnRlcmFjdGlvbnMsXG4gICAgICAgIGxpc3ROYXZpZ2F0aW9uLFxuICAgICAgICB0eXBlYWhlYWQsXG4gICAgXSk7XG4gICAgY29uc3QgZmlyc3RFbmFibGVkSW5kZXggPSB1c2VNZW1vKCgpID0+IHZpc2libGVGbGF0T3B0aW9ucy5maW5kSW5kZXgoKG9wdGlvbikgPT4gIW9wdGlvbi5kaXNhYmxlZCksIFt2aXNpYmxlRmxhdE9wdGlvbnNdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIWlubmVyT3Blbikge1xuICAgICAgICAgICAgc2V0QWN0aXZlSW5kZXgoc2VsZWN0ZWRJbmRleCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2V0QWN0aXZlSW5kZXgoKHByZXYpID0+IHtcbiAgICAgICAgICAgIGlmIChwcmV2ICE9PSBudWxsICYmIHZpc2libGVGbGF0T3B0aW9uc1twcmV2XSAmJiAhdmlzaWJsZUZsYXRPcHRpb25zW3ByZXZdLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHZpc2libGVGbGF0T3B0aW9uc1tzZWxlY3RlZEluZGV4XSAmJlxuICAgICAgICAgICAgICAgICF2aXNpYmxlRmxhdE9wdGlvbnNbc2VsZWN0ZWRJbmRleF0uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRJbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmaXJzdEVuYWJsZWRJbmRleCA+PSAwID8gZmlyc3RFbmFibGVkSW5kZXggOiBudWxsO1xuICAgICAgICB9KTtcbiAgICB9LCBbZmlyc3RFbmFibGVkSW5kZXgsIGlubmVyT3Blbiwgc2VsZWN0ZWRJbmRleCwgdmlzaWJsZUZsYXRPcHRpb25zXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIWlubmVyT3BlbiB8fCBhY3RpdmVJbmRleCA9PT0gbnVsbCB8fCBzZWFyY2hhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgKF9hID0gbGlzdFJlZi5jdXJyZW50W2FjdGl2ZUluZGV4XSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcbiAgICB9LCBbYWN0aXZlSW5kZXgsIGlubmVyT3Blbiwgc2VhcmNoYWJsZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGxpc3RSZWYuY3VycmVudCA9IGxpc3RSZWYuY3VycmVudC5zbGljZSgwLCB2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoKTtcbiAgICAgICAgbGlzdENvbnRlbnRSZWYuY3VycmVudCA9IGxpc3RDb250ZW50UmVmLmN1cnJlbnQuc2xpY2UoMCwgdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aCk7XG4gICAgfSwgW3Zpc2libGVGbGF0T3B0aW9ucy5sZW5ndGhdKTtcbiAgICBjb25zdCBzZXRTZWFyY2hJbnB1dFJlZiA9IHVzZUV2ZW50Q2FsbGJhY2soKG5vZGUpID0+IHtcbiAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgIGlmIChub2RlICYmIGlubmVyT3BlbiAmJiBmaWx0ZXJJbnB1dEF1dG9Gb2N1cykge1xuICAgICAgICAgICAgbm9kZS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBub3RpZnlCbHVySWZPdXRzaWRlID0gdXNlRXZlbnRDYWxsYmFjaygocmVsYXRlZFRhcmdldCwgZXZlbnQpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY29uc3QgbmV4dFRhcmdldCA9IHJlbGF0ZWRUYXJnZXQ7XG4gICAgICAgIGNvbnN0IHdpdGhpblRyaWdnZXIgPSAhIShuZXh0VGFyZ2V0ICYmICgoX2EgPSB0cmlnZ2VyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jb250YWlucyhuZXh0VGFyZ2V0KSkpO1xuICAgICAgICBjb25zdCB3aXRoaW5GbG9hdGluZyA9ICEhKG5leHRUYXJnZXQgJiYgKChfYiA9IGZsb2F0aW5nUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jb250YWlucyhuZXh0VGFyZ2V0KSkpO1xuICAgICAgICBpZiAoIXdpdGhpblRyaWdnZXIgJiYgIXdpdGhpbkZsb2F0aW5nKSB7XG4gICAgICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlVHJpZ2dlckJsdXIgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBub3RpZnlCbHVySWZPdXRzaWRlKGV2ZW50LnJlbGF0ZWRUYXJnZXQsIGV2ZW50KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVPcHRpb25CbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgbm90aWZ5Qmx1cklmT3V0c2lkZShldmVudC5yZWxhdGVkVGFyZ2V0LCBldmVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgY29tbWl0Q2hhbmdlID0gdXNlRXZlbnRDYWxsYmFjaygobmV4dFZhbHVlLCBuZXh0T3B0aW9uKSA9PiB7XG4gICAgICAgIHNldElubmVyVmFsdWUobmV4dFZhbHVlKTtcbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKG5leHRWYWx1ZSwgbmV4dE9wdGlvbiwgbmFtZSk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU2VsZWN0T3B0aW9uID0gdXNlRXZlbnRDYWxsYmFjaygob3B0aW9uKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGlmIChvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IHRvZ2dsZU11bHRpcGxlVmFsdWUoaW5uZXJWYWx1ZSwgb3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IG5leHRPcHRpb25zID0gZ2V0T3B0aW9uc0J5VmFsdWVzKGFsbEZsYXRPcHRpb25zLCBuZXh0VmFsdWUpO1xuICAgICAgICAgICAgY29tbWl0Q2hhbmdlKG5leHRWYWx1ZSwgbmV4dE9wdGlvbnMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxvd0Rlc2VsZWN0ICYmIGlubmVyVmFsdWUgPT09IG9wdGlvbi52YWx1ZSkge1xuICAgICAgICAgICAgY29tbWl0Q2hhbmdlKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICAgICAgb25CbHVyID09PSBudWxsIHx8IG9uQmx1ciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25CbHVyKCk7XG4gICAgICAgICAgICAoX2EgPSB0cmlnZ2VyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29tbWl0Q2hhbmdlKG9wdGlvbi52YWx1ZSwgb3B0aW9uKTtcbiAgICAgICAgaGFuZGxlT3BlbkNoYW5nZShmYWxzZSk7XG4gICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cigpO1xuICAgICAgICAoX2IgPSB0cmlnZ2VyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlUmVtb3ZlU2VsZWN0ZWRWYWx1ZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG9wdGlvblZhbHVlKSA9PiB7XG4gICAgICAgIGlmICghbXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWdldE11bHRpcGxlVmFsdWUoaW5uZXJWYWx1ZSkuaW5jbHVkZXMob3B0aW9uVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV4dFZhbHVlID0gcmVtb3ZlTXVsdGlwbGVWYWx1ZShpbm5lclZhbHVlLCBvcHRpb25WYWx1ZSk7XG4gICAgICAgIGNvbnN0IG5leHRPcHRpb25zID0gZ2V0T3B0aW9uc0J5VmFsdWVzKGFsbEZsYXRPcHRpb25zLCBuZXh0VmFsdWUpO1xuICAgICAgICBjb21taXRDaGFuZ2UobmV4dFZhbHVlLCBuZXh0T3B0aW9ucyk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlVHJpZ2dlcktleURvd24gPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoIWludGVyYWN0aXZlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuRU5URVIgfHwgZXZlbnQua2V5ID09PSBLRVlCT0FSRC5TUEFDRSkge1xuICAgICAgICAgICAgaWYgKGlubmVyT3BlbiAmJlxuICAgICAgICAgICAgICAgIGFjdGl2ZUluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgdmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XSAmJlxuICAgICAgICAgICAgICAgICF2aXNpYmxlRmxhdE9wdGlvbnNbYWN0aXZlSW5kZXhdLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb24odmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UoIWlubmVyT3Blbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuQVJST1dfRE9XTiB8fCBldmVudC5rZXkgPT09IEtFWUJPQVJELkFSUk9XX1VQKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKCFpbm5lck9wZW4pIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVPcGVuQ2hhbmdlKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlSXRlbU1vdXNlRW50ZXIgPSB1c2VFdmVudENhbGxiYWNrKChpbmRleCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICghKChfYSA9IHZpc2libGVGbGF0T3B0aW9uc1tpbmRleF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kaXNhYmxlZCkpIHtcbiAgICAgICAgICAgIHNldEFjdGl2ZUluZGV4KGluZGV4KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRhZ1JlbW92ZU1vdXNlRG93biA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRhZ1JlbW92ZUNsaWNrID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU2VhcmNoQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIG5vdGlmeUJsdXJJZk91dHNpZGUoZXZlbnQucmVsYXRlZFRhcmdldCwgZXZlbnQpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaENoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG5leHRWYWx1ZSwgX2V2ZW50KSA9PiB7XG4gICAgICAgIHNldElubmVyU2VhcmNoVmFsdWUobmV4dFZhbHVlKTtcbiAgICAgICAgb25TZWFyY2hDaGFuZ2UgPT09IG51bGwgfHwgb25TZWFyY2hDaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uU2VhcmNoQ2hhbmdlKG5leHRWYWx1ZSk7XG4gICAgfSk7XG4gICAgY29uc3QgZmluZEVuYWJsZWRJbmRleCA9IHVzZUV2ZW50Q2FsbGJhY2soKGN1cnJlbnQsIGRpcmVjdGlvbikgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IHZpc2libGVGbGF0T3B0aW9ucy5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gY3VycmVudCAhPT0gbnVsbCAmJiBjdXJyZW50ICE9PSB2b2lkIDAgPyBjdXJyZW50IDogKGRpcmVjdGlvbiA9PT0gMSA/IC0xIDogbGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgc3RlcCA9IDE7IHN0ZXAgPD0gbGVuZ3RoOyBzdGVwICs9IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZSA9ICgoc3RhcnQgKyBkaXJlY3Rpb24gKiBzdGVwKSAlIGxlbmd0aCArIGxlbmd0aCkgJSBsZW5ndGg7XG4gICAgICAgICAgICBpZiAoISgoX2EgPSB2aXNpYmxlRmxhdE9wdGlvbnNbY2FuZGlkYXRlXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRpc2FibGVkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU2VhcmNoS2V5RG93biA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuQVJST1dfRE9XTikge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGNvbnN0IG5leHQgPSBmaW5kRW5hYmxlZEluZGV4KGFjdGl2ZUluZGV4LCAxKTtcbiAgICAgICAgICAgIGlmIChuZXh0ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc2V0QWN0aXZlSW5kZXgobmV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuQVJST1dfVVApIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb25zdCBwcmV2ID0gZmluZEVuYWJsZWRJbmRleChhY3RpdmVJbmRleCwgLTEpO1xuICAgICAgICAgICAgaWYgKHByZXYgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzZXRBY3RpdmVJbmRleChwcmV2KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBLRVlCT0FSRC5FTlRFUikge1xuICAgICAgICAgICAgaWYgKGFjdGl2ZUluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgdmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XSAmJlxuICAgICAgICAgICAgICAgICF2aXNpYmxlRmxhdE9wdGlvbnNbYWN0aXZlSW5kZXhdLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb24odmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuRVNDQVBFKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgaGFuZGxlT3BlbkNoYW5nZShmYWxzZSk7XG4gICAgICAgICAgICAoX2EgPSB0cmlnZ2VyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCByZW5kZXJWYWx1ZU1ldGEgPSB7XG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICByZWFkT25seSxcbiAgICAgICAgbXVsdGlwbGUsXG4gICAgICAgIG1heFZpc2libGVWYWx1ZXMsXG4gICAgICAgIG9wZW46IGlubmVyT3BlbixcbiAgICAgICAgcGxhY2Vob2xkZXI6ICFoYXNTZWxlY3Rpb24sXG4gICAgICAgIHNlbGVjdGVkT3B0aW9ucyxcbiAgICAgICAgc2l6ZTogbm9ybWFsaXplZFNpemUsXG4gICAgICAgIGZvbnRTaXplOiBnZXRGb250U2l6ZShub3JtYWxpemVkU2l6ZSksXG4gICAgfTtcbiAgICBjb25zdCB2YWx1ZUxhYmVsQ2xhc3MgPSBoYXNTZWxlY3Rpb24gPyAndmFsdWUnIDogJ3BsYWNlaG9sZGVyJztcbiAgICBjb25zdCBpc011bHRpcGxlVmFsdWVGaWxsZWQgPSAobXVsdGlwbGUgJiZcbiAgICAgICAgaGFzU2VsZWN0aW9uICYmXG4gICAgICAgIG1heFZpc2libGVWYWx1ZXMgPT09IHVuZGVmaW5lZCk7XG4gICAgY29uc3QgdHJpZ2dlckNsYXNzTmFtZSA9IGNsYXNzZXMoJ3RyaWdnZXInLCBqb2luQ2xzKGNsYXNzZXMoYHRyaWdnZXItJHtub3JtYWxpemVkU2l6ZX1gKSwgY2xhc3NlcyhgdHJpZ2dlci0ke3ZhcmlhbnR9YCksIGlubmVyT3BlbiAmJiBjbGFzc2VzKCd0cmlnZ2VyLW9wZW4nKSwgaXNNdWx0aXBsZVZhbHVlRmlsbGVkICYmIGNsYXNzZXMoJ3RyaWdnZXItbXVsdGlwbGUtZmlsbGVkJyksIGhhc1NlbGVjdGlvbiA/IGNsYXNzZXMoJ3RyaWdnZXItZmlsbGVkJykgOiBjbGFzc2VzKCd0cmlnZ2VyLXBsYWNlaG9sZGVyJyksIHN0YXR1cyAhPT0gJ2RlZmF1bHQnICYmIGNsYXNzZXMoYHRyaWdnZXItJHtzdGF0dXN9YCksIGRpc2FibGVkICYmIGNsYXNzZXMoJ3RyaWdnZXItZGlzYWJsZWQnKSwgcmVhZE9ubHkgJiYgIWRpc2FibGVkICYmIGNsYXNzZXMoJ3RyaWdnZXItcmVhZG9ubHknKSkpO1xuICAgIGNvbnN0IGljb25TaXplID0gbm9ybWFsaXplZFNpemUgPT09ICdsYXJnZScgPyAyMCA6IDE2O1xuICAgIGNvbnN0IGFjdGl2ZU9wdGlvbklkID0gc2VhcmNoYWJsZSAmJiBpbm5lck9wZW4gJiYgYWN0aXZlSW5kZXggIT09IG51bGxcbiAgICAgICAgPyBgJHtvcHRpb25JZFByZWZpeH0tJHthY3RpdmVJbmRleH1gXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGZsb2F0aW5nQXJpYUxhYmVsbGVkQnkgPSBhcmlhTGFiZWxsZWRCeSAhPT0gbnVsbCAmJiBhcmlhTGFiZWxsZWRCeSAhPT0gdm9pZCAwID8gYXJpYUxhYmVsbGVkQnkgOiAobGFiZWwgPyBsYWJlbElkIDogdW5kZWZpbmVkKTtcbiAgICBjb25zdCBkZXNjcmliZWRCeUlkcyA9IFtcbiAgICAgICAgZGVzY3JpcHRpb24gPyBkZXNjcmlwdGlvbklkIDogbnVsbCxcbiAgICAgICAgZmVlZGJhY2sgPyBmZWVkYmFja0lkIDogbnVsbCxcbiAgICBdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJykgfHwgdW5kZWZpbmVkO1xuICAgIHJldHVybiAoX2pzeHMoU2VsZWN0RmllbGRTaGVsbCwgeyBjbGFzc2VzOiBjbGFzc2VzLCBjbGFzc05hbWU6IGNsYXNzTmFtZSwgc2l6ZTogbm9ybWFsaXplZFNpemUsIHZhcmlhbnQ6IHZhcmlhbnQsIHN0YXR1czogc3RhdHVzLCBkaXNhYmxlZDogZGlzYWJsZWQsIHJlYWRPbmx5OiByZWFkT25seSwgbG9hZGluZzogbG9hZGluZywgbGFiZWw6IGxhYmVsLCBsYWJlbENsYXNzTmFtZTogbGFiZWxDbGFzc05hbWUsIGluZm86IGluZm8sIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiwgZmVlZGJhY2s6IGZlZWRiYWNrLCByZXF1aXJlZDogcmVxdWlyZWQsIGxhYmVsSWQ6IGxhYmVsSWQsIGRlc2NyaXB0aW9uSWQ6IGRlc2NyaXB0aW9uSWQsIGZlZWRiYWNrSWQ6IGZlZWRiYWNrSWQsIGNoaWxkcmVuOiBbX2pzeHMoXCJidXR0b25cIiwgT2JqZWN0LmFzc2lnbih7fSwgZ2V0UmVmZXJlbmNlUHJvcHMoe1xuICAgICAgICAgICAgICAgIHJlZjogc2V0UmVmZXJlbmNlLFxuICAgICAgICAgICAgICAgIGlkOiB0cmlnZ2VySWQsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAnYXJpYS1yZWFkb25seSc6IHJlYWRPbmx5IHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IHRyaWdnZXJDbGFzc05hbWUsXG4gICAgICAgICAgICAgICAgb25LZXlEb3duOiBoYW5kbGVUcmlnZ2VyS2V5RG93bixcbiAgICAgICAgICAgICAgICBvbkJsdXI6IGhhbmRsZVRyaWdnZXJCbHVyLFxuICAgICAgICAgICAgICAgICdhcmlhLWxhYmVsJzogYXJpYUxhYmVsLFxuICAgICAgICAgICAgICAgICdhcmlhLWxhYmVsbGVkYnknOiBmbG9hdGluZ0FyaWFMYWJlbGxlZEJ5LFxuICAgICAgICAgICAgICAgICdhcmlhLWRlc2NyaWJlZGJ5JzogZGVzY3JpYmVkQnlJZHMsXG4gICAgICAgICAgICB9KSwgeyBjaGlsZHJlbjogW19qc3hzKFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnY29udGVudCcpLCBjaGlsZHJlbjogW3ByZWZpeCAmJiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncHJlZml4JyksIGNoaWxkcmVuOiBwcmVmaXggfSksIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKHZhbHVlTGFiZWxDbGFzcywgam9pbkNscyhjbGFzc2VzKGAke3ZhbHVlTGFiZWxDbGFzc30tJHtub3JtYWxpemVkU2l6ZX1gKSwgaXNNdWx0aXBsZVZhbHVlRmlsbGVkICYmIGNsYXNzZXMoYCR7dmFsdWVMYWJlbENsYXNzfS1tdWx0aXBsZWApLCBkaXNhYmxlZCAmJiBjbGFzc2VzKGAke3ZhbHVlTGFiZWxDbGFzc30tZGlzYWJsZWRgKSkpLCBjaGlsZHJlbjogX2pzeChTZWxlY3RWYWx1ZUNvbnRlbnQsIHsgY2xhc3NlczogY2xhc3NlcywgaGFzU2VsZWN0aW9uOiBoYXNTZWxlY3Rpb24sIG11bHRpcGxlOiBtdWx0aXBsZSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCByZW5kZXJWYWx1ZTogcmVuZGVyVmFsdWUsIHJlbmRlclZhbHVlTWV0YTogcmVuZGVyVmFsdWVNZXRhLCBzZWxlY3RlZE9wdGlvbnM6IHNlbGVjdGVkT3B0aW9ucywgbWF4VmlzaWJsZVZhbHVlczogbWF4VmlzaWJsZVZhbHVlcywgb25SZW1vdmU6IGhhbmRsZVJlbW92ZVNlbGVjdGVkVmFsdWUsIG9uUmVtb3ZlQ2xpY2s6IGhhbmRsZVRhZ1JlbW92ZUNsaWNrLCBvblJlbW92ZU1vdXNlRG93bjogaGFuZGxlVGFnUmVtb3ZlTW91c2VEb3duIH0pIH0pXSB9KSwgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2ljb24nKSwgY2hpbGRyZW46IGxvYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9qc3goU3Bpbm5lciwgeyBzaXplOiBpY29uU2l6ZSwgc3Ryb2tlV2lkdGg6IDIgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJlYWRPbmx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9qc3goSWNvbnMsIHsgbmFtZTogaW5uZXJPcGVuID8gJ2NoZXZyb25VcCcgOiAnY2hldnJvbkRvd24nLCBzaXplOiBpY29uU2l6ZSwgY29sb3I6IFwiY3VycmVudENvbG9yXCIgfSkgfSldIH0pKSwgaXNNb3VudGVkICYmIGludGVyYWN0aXZlICYmICgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFuZWxOb2RlID0gKF9qc3goRmxvYXRpbmdGb2N1c01hbmFnZXIsIHsgY29udGV4dDogY29udGV4dCwgbW9kYWw6IGZhbHNlLCBpbml0aWFsRm9jdXM6IC0xLCByZXR1cm5Gb2N1czogZmFsc2UsIGNoaWxkcmVuOiBfanN4cyhcImRpdlwiLCBPYmplY3QuYXNzaWduKHt9LCBnZXRGbG9hdGluZ1Byb3BzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogc2V0RmxvYXRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IGpvaW5DbHMoY2xhc3NlcygncGFuZWwnKSwgcGFuZWxDbGFzc05hbWUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZmxvYXRpbmdTdHlsZXMpLCB0cmFuc2l0aW9uU3R5bGVzKSxcbiAgICAgICAgICAgICAgICAgICAgfSksIHsgY2hpbGRyZW46IFtzZWFyY2hhYmxlICYmIChfanN4KFNlbGVjdFNlYXJjaENvbnRyb2wsIHsgcmVmOiBzZXRTZWFyY2hJbnB1dFJlZiwgY2xhc3NlczogY2xhc3NlcywgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpemU9e25vcm1hbGl6ZWRTaXplfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiBcInNtYWxsXCIsIHBsYWNlaG9sZGVyOiBzZWFyY2hQbGFjZWhvbGRlciwgdmFsdWU6IGlubmVyU2VhcmNoVmFsdWUsIGFjdGl2ZURlc2NlbmRhbnQ6IGFjdGl2ZU9wdGlvbklkLCBvbkJsdXI6IGhhbmRsZVNlYXJjaEJsdXIsIG9uQ2hhbmdlOiBoYW5kbGVTZWFyY2hDaGFuZ2UsIG9uS2V5RG93bjogaGFuZGxlU2VhcmNoS2V5RG93biB9KSksIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwYW5lbC1ib2R5JyksIGNoaWxkcmVuOiBbcGFuZWxIZWFkZXIgIT0gbnVsbCAmJiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygncGFuZWwtaGVhZGVyJyksIGNoaWxkcmVuOiBwYW5lbEhlYWRlciB9KSksIHZpc2libGVGbGF0T3B0aW9ucy5sZW5ndGggPT09IDAgPyAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZW1wdHknKSwgY2hpbGRyZW46IF9qc3goVHlwb2dyYXBoeUJvZHksIHsgc2l6ZTogU0VMRUNUX1RZUE9HUkFQSFkuZW1wdHkuc2l6ZSwgY29sb3I6IFNFTEVDVF9UWVBPR1JBUEhZLmVtcHR5LmNvbG9yLCBjaGlsZHJlbjogZW1wdHlDb250ZW50IH0pIH0pKSA6ICgoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmbGF0SW5kZXggPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2aXNpYmxlT3B0aW9uR3JvdXBzLm1hcCgoZ3JvdXApID0+IChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZ3JvdXAnKSwgY2hpbGRyZW46IFtncm91cC5sYWJlbCAmJiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZ3JvdXAtbGFiZWwnLCBncm91cExhYmVsQ2xhc3NOYW1lKSwgY2hpbGRyZW46IF9qc3goVHlwb2dyYXBoeUxhYmVsLCB7IHNpemU6IFNFTEVDVF9UWVBPR1JBUEhZLmdyb3VwTGFiZWwuc2l6ZSwgc3Ryb25nOiB0cnVlLCBjaGlsZHJlbjogZ3JvdXAubGFiZWwgfSkgfSkpLCBncm91cC5vcHRpb25zLm1hcCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uRmxhdEluZGV4ID0gZmxhdEluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYXRJbmRleCArPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gaXNPcHRpb25TZWxlY3RlZChpbm5lclZhbHVlLCBtdWx0aXBsZSwgb3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmUgPSBhY3RpdmVJbmRleCA9PT0gb3B0aW9uRmxhdEluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbk1ldGEgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICEhb3B0aW9uLmRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogb3B0aW9uRmxhdEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbjogaW5uZXJPcGVuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IGdldEZvbnRTaXplKG5vcm1hbGl6ZWRTaXplKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RDb250ZW50UmVmLmN1cnJlbnRbb3B0aW9uRmxhdEluZGV4XSA9IGV4dHJhY3RPcHRpb25UZXh0KG9wdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChfanN4KFwiYnV0dG9uXCIsIE9iamVjdC5hc3NpZ24oe30sIGdldEl0ZW1Qcm9wcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZihub2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0UmVmLmN1cnJlbnRbb3B0aW9uRmxhdEluZGV4XSA9IG5vZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBgJHtvcHRpb25JZFByZWZpeH0tJHtvcHRpb25GbGF0SW5kZXh9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU6ICdvcHRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXMoJ29wdGlvbicsIGpvaW5DbHMoYWN0aXZlICYmIGNsYXNzZXMoJ29wdGlvbi1hY3RpdmUnKSwgc2VsZWN0ZWQgJiYgY2xhc3Nlcygnb3B0aW9uLXNlbGVjdGVkJyksIG9wdGlvbi5kaXNhYmxlZCAmJiBjbGFzc2VzKCdvcHRpb24tZGlzYWJsZWQnKSwgb3B0aW9uQ2xhc3NOYW1lKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiBvcHRpb24uZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcmlhLXNlbGVjdGVkJzogc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s6IChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbihvcHRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI6ICgpID0+IGhhbmRsZUl0ZW1Nb3VzZUVudGVyKG9wdGlvbkZsYXRJbmRleCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cjogaGFuZGxlT3B0aW9uQmx1cixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgeyBjaGlsZHJlbjogcmVuZGVyT3B0aW9uID8gKHJlbmRlck9wdGlvbihvcHRpb24sIG9wdGlvbk1ldGEpKSA6IChfanN4KFNlbGVjdE9wdGlvbkNvbnRlbnQsIHsgY2xhc3NlczogY2xhc3Nlcywgb3B0aW9uOiBvcHRpb24sIHNlbGVjdGVkOiBzZWxlY3RlZCwgc2l6ZTogbm9ybWFsaXplZFNpemUsIGNvbnRlbnQ6IHJlbmRlck9wdGlvbkNvbnRlbnQgPT09IG51bGwgfHwgcmVuZGVyT3B0aW9uQ29udGVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogcmVuZGVyT3B0aW9uQ29udGVudChvcHRpb24sIG9wdGlvbk1ldGEpIH0pKSB9KSwgYCR7Z3JvdXAua2V5fS0ke29wdGlvbi52YWx1ZX1gKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KV0gfSwgZ3JvdXAua2V5KSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKSldIH0pLCBwYW5lbEZvb3RlciAhPSBudWxsICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwYW5lbC1mb290ZXInKSwgY2hpbGRyZW46IHBhbmVsRm9vdGVyIH0pKV0gfSkpIH0pKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcG9ydGFsID8gX2pzeChGbG9hdGluZ1BvcnRhbCwgeyBjaGlsZHJlbjogcGFuZWxOb2RlIH0pIDogcGFuZWxOb2RlO1xuICAgICAgICAgICAgfSkoKV0gfSkpO1xufTtcblNlbGVjdC5kaXNwbGF5TmFtZSA9ICdTZWxlY3QnO1xuZXhwb3J0IGRlZmF1bHQgbWVtbyhTZWxlY3QpOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
580
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50c3giXSwibmFtZXMiOlsianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZsb2F0aW5nRm9jdXNNYW5hZ2VyIiwiRmxvYXRpbmdQb3J0YWwiLCJ1c2VJbnRlcmFjdGlvbnMiLCJ1c2VMaXN0TmF2aWdhdGlvbiIsInVzZVR5cGVhaGVhZCIsIm1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VJZCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUNvbnRyb2xsZWRTdGF0ZSIsInVzZUV2ZW50Q2FsbGJhY2siLCJJY29ucyIsIlNwaW5uZXIiLCJUeXBvZ3JhcGh5Qm9keSIsIlR5cG9ncmFwaHlMYWJlbCIsImpvaW5DbHMiLCJkZWZhdWx0Iiwicm9vdENsYXNzbmFtZXMiLCJTZWxlY3RGaWVsZFNoZWxsIiwiU2VsZWN0T3B0aW9uQ29udGVudCIsIlNlbGVjdFNlYXJjaENvbnRyb2wiLCJTZWxlY3RWYWx1ZUNvbnRlbnQiLCJ1c2VTZWxlY3RTaGVsbCIsIktFWUJPQVJEIiwiU0VMRUNUX1RZUE9HUkFQSFkiLCJleHRyYWN0T3B0aW9uVGV4dCIsImZpbHRlck9wdGlvbkdyb3VwcyIsImZsYXR0ZW5PcHRpb25Hcm91cHMiLCJnZXRNdWx0aXBsZVZhbHVlIiwiZ2V0Rm9udFNpemUiLCJnZXRPcHRpb25zQnlWYWx1ZXMiLCJnZXRTZWxlY3RlZE9wdGlvbnMiLCJpc09wdGlvblNlbGVjdGVkIiwibm9ybWFsaXplU2l6ZSIsIm5vcm1hbGl6ZU9wdGlvbkdyb3VwcyIsInJlbW92ZU11bHRpcGxlVmFsdWUiLCJ0b2dnbGVNdWx0aXBsZVZhbHVlIiwiREVGQVVMVF9NQVhfSEVJR0hUIiwiU2VsZWN0IiwicHJvcHMiLCJfcHJvcHMkY2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsInN0eWxlIiwiaWQiLCJuYW1lIiwiYXJpYUxhYmVsIiwiYXJpYUxhYmVsbGVkQnkiLCJfcHJvcHMkcGxhY2Vob2xkZXIiLCJwbGFjZWhvbGRlciIsIl9wcm9wcyRvcHRpb25zIiwib3B0aW9ucyIsInZhbHVlIiwiZGVmYXVsdFZhbHVlIiwiX3Byb3BzJHNpemUiLCJzaXplIiwiX3Byb3BzJHN0YXR1cyIsInN0YXR1cyIsIl9wcm9wcyR2YXJpYW50IiwidmFyaWFudCIsIl9wcm9wcyRkaXNhYmxlZCIsImRpc2FibGVkIiwiZGlzYWJsZWRQcm9wIiwiX3Byb3BzJHJlYWRPbmx5IiwicmVhZE9ubHkiLCJfcHJvcHMkbG9hZGluZyIsImxvYWRpbmciLCJfcHJvcHMkbXVsdGlwbGUiLCJtdWx0aXBsZSIsIm1heFZpc2libGVWYWx1ZXMiLCJfcHJvcHMkc2VhcmNoYWJsZSIsInNlYXJjaGFibGUiLCJfcHJvcHMkc2VhcmNoUGxhY2Vob2wiLCJzZWFyY2hQbGFjZWhvbGRlciIsInNlYXJjaFZhbHVlIiwiX3Byb3BzJGRlZmF1bHRTZWFyY2hWIiwiZGVmYXVsdFNlYXJjaFZhbHVlIiwiX3Byb3BzJGZpbHRlcklucHV0QXV0IiwiZmlsdGVySW5wdXRBdXRvRm9jdXMiLCJsYWJlbCIsImxhYmVsQ2xhc3NOYW1lIiwiaW5mbyIsImRlc2NyaXB0aW9uIiwiZmVlZGJhY2siLCJfcHJvcHMkcmVxdWlyZWQiLCJyZXF1aXJlZCIsInByZWZpeCIsIl9wcm9wcyRlbXB0eUNvbnRlbnQiLCJlbXB0eUNvbnRlbnQiLCJwYW5lbEhlYWRlciIsInBhbmVsRm9vdGVyIiwib3BlbiIsIl9wcm9wcyRkZWZhdWx0T3BlbiIsImRlZmF1bHRPcGVuIiwiX3Byb3BzJHBvcnRhbCIsInBvcnRhbCIsIl9wcm9wcyRhbGxvd0Rlc2VsZWN0IiwiYWxsb3dEZXNlbGVjdCIsInBhbmVsQ2xhc3NOYW1lIiwib3B0aW9uQ2xhc3NOYW1lIiwiZ3JvdXBMYWJlbENsYXNzTmFtZSIsIl9wcm9wcyRsaXN0TWF4SGVpZ2h0IiwibGlzdE1heEhlaWdodCIsIm9mZnNldCIsImFuaW1hdGlvbiIsIm9uQ2hhbmdlIiwib25PcGVuQ2hhbmdlIiwib25TZWFyY2hDaGFuZ2UiLCJvbkJsdXIiLCJmaWx0ZXJPcHRpb24iLCJyZW5kZXJPcHRpb24iLCJyZW5kZXJPcHRpb25Db250ZW50IiwicmVuZGVyVmFsdWUiLCJyZWYiLCJpbnRlcmFjdGl2ZSIsImNsYXNzZXMiLCJhdXRvSWQiLCJ0cmlnZ2VySWQiLCJsYWJlbElkIiwiZGVzY3JpcHRpb25JZCIsImZlZWRiYWNrSWQiLCJvcHRpb25JZFByZWZpeCIsIl91c2VDb250cm9sbGVkU3RhdGUiLCJ1bmRlZmluZWQiLCJfdXNlQ29udHJvbGxlZFN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaW5uZXJWYWx1ZSIsInNldElubmVyVmFsdWUiLCJfdXNlQ29udHJvbGxlZFN0YXRlMyIsIl91c2VDb250cm9sbGVkU3RhdGU0IiwiaW5uZXJTZWFyY2hWYWx1ZSIsInNldElubmVyU2VhcmNoVmFsdWUiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiYWN0aXZlSW5kZXgiLCJzZXRBY3RpdmVJbmRleCIsIm5vcm1hbGl6ZWRTaXplIiwiYWxsT3B0aW9uR3JvdXBzIiwiYWxsRmxhdE9wdGlvbnMiLCJ2aXNpYmxlT3B0aW9uR3JvdXBzIiwidmlzaWJsZUZsYXRPcHRpb25zIiwic2VsZWN0ZWRPcHRpb25zIiwic2VsZWN0ZWRJbmRleCIsImxlbmd0aCIsIm1hdGNoZWRJbmRleCIsImZpbmRJbmRleCIsIm9wdGlvbiIsImhhc1NlbGVjdGlvbiIsImxpc3RSZWYiLCJsaXN0Q29udGVudFJlZiIsImZsb2F0aW5nUmVmIiwidHJpZ2dlclJlZiIsInNlYXJjaElucHV0UmVmIiwiaGFuZGxlVHJpZ2dlclJlZiIsIm5vZGUiLCJjdXJyZW50IiwiX3VzZVNlbGVjdFNoZWxsIiwiaW5uZXJPcGVuIiwiaXNPcGVuIiwiaGFuZGxlT3BlbkNoYW5nZSIsInNldE9wZW4iLCJyZWZzIiwiY29udGV4dCIsImZsb2F0aW5nU3R5bGVzIiwidHJhbnNpdGlvblN0eWxlcyIsImlzTW91bnRlZCIsImJhc2VJbnRlcmFjdGlvbnMiLCJzZXRSZWZlcmVuY2UiLCJzZXRGbG9hdGluZyIsImxpc3ROYXZpZ2F0aW9uIiwib25OYXZpZ2F0ZSIsImVuYWJsZWQiLCJsb29wIiwidmlydHVhbCIsInR5cGVhaGVhZCIsIm9uTWF0Y2giLCJfdXNlSW50ZXJhY3Rpb25zIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZ2V0UmVmZXJlbmNlUHJvcHMiLCJnZXRGbG9hdGluZ1Byb3BzIiwiZ2V0SXRlbVByb3BzIiwiZmlyc3RFbmFibGVkSW5kZXgiLCJwcmV2IiwiX2EiLCJmb2N1cyIsInByZXZlbnRTY3JvbGwiLCJzbGljZSIsInNldFNlYXJjaElucHV0UmVmIiwibm90aWZ5Qmx1cklmT3V0c2lkZSIsInJlbGF0ZWRUYXJnZXQiLCJldmVudCIsIl9iIiwibmV4dFRhcmdldCIsIndpdGhpblRyaWdnZXIiLCJjb250YWlucyIsIndpdGhpbkZsb2F0aW5nIiwiaGFuZGxlVHJpZ2dlckJsdXIiLCJoYW5kbGVPcHRpb25CbHVyIiwiY29tbWl0Q2hhbmdlIiwibmV4dFZhbHVlIiwibmV4dE9wdGlvbiIsImhhbmRsZVNlbGVjdE9wdGlvbiIsIm5leHRPcHRpb25zIiwiaGFuZGxlUmVtb3ZlU2VsZWN0ZWRWYWx1ZSIsIm9wdGlvblZhbHVlIiwiaW5jbHVkZXMiLCJoYW5kbGVUcmlnZ2VyS2V5RG93biIsImtleSIsIkVOVEVSIiwiU1BBQ0UiLCJwcmV2ZW50RGVmYXVsdCIsIkFSUk9XX0RPV04iLCJBUlJPV19VUCIsImhhbmRsZUl0ZW1Nb3VzZUVudGVyIiwiaW5kZXgiLCJoYW5kbGVUYWdSZW1vdmVNb3VzZURvd24iLCJzdG9wUHJvcGFnYXRpb24iLCJoYW5kbGVUYWdSZW1vdmVDbGljayIsImhhbmRsZVNlYXJjaEJsdXIiLCJoYW5kbGVTZWFyY2hDaGFuZ2UiLCJfZXZlbnQiLCJmaW5kRW5hYmxlZEluZGV4IiwiZGlyZWN0aW9uIiwic3RhcnQiLCJzdGVwIiwiY2FuZGlkYXRlIiwiaGFuZGxlU2VhcmNoS2V5RG93biIsIm5leHQiLCJFU0NBUEUiLCJyZW5kZXJWYWx1ZU1ldGEiLCJmb250U2l6ZSIsInZhbHVlTGFiZWxDbGFzcyIsImlzTXVsdGlwbGVWYWx1ZUZpbGxlZCIsInRyaWdnZXJDbGFzc05hbWUiLCJpY29uU2l6ZSIsImFjdGl2ZU9wdGlvbklkIiwiZmxvYXRpbmdBcmlhTGFiZWxsZWRCeSIsImRlc2NyaWJlZEJ5SWRzIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJjaGlsZHJlbiIsIk9iamVjdCIsImFzc2lnbiIsInR5cGUiLCJvbktleURvd24iLCJvblJlbW92ZSIsIm9uUmVtb3ZlQ2xpY2siLCJvblJlbW92ZU1vdXNlRG93biIsInN0cm9rZVdpZHRoIiwiY29sb3IiLCJwYW5lbE5vZGUiLCJtb2RhbCIsImluaXRpYWxGb2N1cyIsInJldHVybkZvY3VzIiwiYWN0aXZlRGVzY2VuZGFudCIsImVtcHR5IiwiZmxhdEluZGV4IiwibWFwIiwiZ3JvdXAiLCJncm91cExhYmVsIiwic3Ryb25nIiwib3B0aW9uRmxhdEluZGV4Iiwic2VsZWN0ZWQiLCJhY3RpdmUiLCJvcHRpb25NZXRhIiwicm9sZSIsIm9uQ2xpY2siLCJvbk1vdXNlRW50ZXIiLCJjb250ZW50IiwiZGlzcGxheU5hbWUiXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsR0FBRyxJQUFJQyxJQUFJLEVBQUVDLElBQUksSUFBSUMsS0FBSyxRQUFRLG1CQUFtQjtBQ0E5RCxTQUNFQyxvQkFBb0IsRUFDcEJDLGNBQWMsRUFDZEMsZUFBZSxFQUNmQyxpQkFBaUIsRUFDakJDLFlBQVksUUFDUCxvQkFBb0I7QUFDM0IsU0FBU0MsSUFBSSxFQUFFQyxTQUFTLEVBQUVDLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ3pFLE9BQU9DLGtCQUFrQixNQUFNLGtDQUFrQztBQUNqRSxPQUFPQyxnQkFBZ0IsTUFBTSxnQ0FBZ0M7QUFDN0QsU0FBU0MsS0FBSyxRQUFRLFVBQVU7QUFDaEMsU0FB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VUFBVTtzQkFBQyxDQUFBO29CQUVyRCxDQUFBLENBQUEsS0FBQXpGLE1BQUEsQ0FyQ09tRixLQUFLLENBQUNwRCxHQUFHLE9BQUEvQixNQUFBLENBQUkvQixNQUFNLENBQUM5RixLQUFLLENBQUUsQ0FzQzVCO2tCQUViLENBQUMsQ0FBQztnQkFBQSxDQUFBLEVBbEVNZ04sS0FBSyxDQUFDcEQsR0FBRyxDQW1FYjtjQUFBLENBQ1AsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUNIO1VBQUEsQ0FBQSxDQUNHLEVBQ0x0SCxXQUFXLElBQUksSUFBSSxJQUNsQmhHLElBQUEsQ0FBQSxLQUFBLEVBQUE7WUFBSzhDLFNBQVMsRUFBRTJFLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFBQStILFFBQUEsRUFBR3hKO1VBQVcsQ0FBQSxDQUN0RDtRQUFBLENBQUEsQ0FBQTtNQUNHLENBQUEsQ0FFVDtNQUVELE9BQU9LLE1BQU0sR0FBR3JHLElBQUEsQ0FBQ0ksY0FBYyxFQUFBO1FBQUFvUCxRQUFBLEVBQUVVO01BQVMsQ0FBQSxDQUFrQixHQUFHQSxTQUFTO0lBQzFFLENBQUMsQ0FBQyxDQUFFO0VBQUEsQ0FBQSxDQUNhO0FBRXZCLENBQUM7QUFFRHZOLE1BQU0sQ0FBQzBPLFdBQVcsR0FBRyxRQUFRO0FBRTdCLDRCQUFlN1EsSUFBSSxDQUFDbUMsTUFBTSxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBGbG9hdGluZ0ZvY3VzTWFuYWdlciwgRmxvYXRpbmdQb3J0YWwsIHVzZUludGVyYWN0aW9ucywgdXNlTGlzdE5hdmlnYXRpb24sIHVzZVR5cGVhaGVhZCwgfSBmcm9tICdAZmxvYXRpbmctdWkvcmVhY3QnO1xuaW1wb3J0IHsgbWVtbywgdXNlRWZmZWN0LCB1c2VJZCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VDb250cm9sbGVkU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VDb250cm9sbGVkU3RhdGUnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQDFtb25leS9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB7IEljb25zIH0gZnJvbSAnLi4vSWNvbnMnO1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4uL1NwaW5uZXInO1xuaW1wb3J0IHsgVHlwb2dyYXBoeUJvZHksIFR5cG9ncmFwaHlMYWJlbCB9IGZyb20gJy4uL1R5cG9ncmFwaHknO1xuaW1wb3J0IHsgam9pbkNscywgZGVmYXVsdCBhcyByb290Q2xhc3NuYW1lcyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IFNlbGVjdEZpZWxkU2hlbGwgZnJvbSAnLi9TZWxlY3RGaWVsZFNoZWxsJztcbmltcG9ydCBTZWxlY3RPcHRpb25Db250ZW50IGZyb20gJy4vU2VsZWN0T3B0aW9uQ29udGVudCc7XG5pbXBvcnQgU2VsZWN0U2VhcmNoQ29udHJvbCBmcm9tICcuL1NlbGVjdFNlYXJjaENvbnRyb2wnO1xuaW1wb3J0IFNlbGVjdFZhbHVlQ29udGVudCBmcm9tICcuL1NlbGVjdFZhbHVlQ29udGVudCc7XG5pbXBvcnQgeyB1c2VTZWxlY3RTaGVsbCB9IGZyb20gJy4vdXNlU2VsZWN0U2hlbGwnO1xuaW1wb3J0IHsgS0VZQk9BUkQsIFNFTEVDVF9UWVBPR1JBUEhZIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZXh0cmFjdE9wdGlvblRleHQsIGZpbHRlck9wdGlvbkdyb3VwcywgZmxhdHRlbk9wdGlvbkdyb3VwcywgZ2V0TXVsdGlwbGVWYWx1ZSwgZ2V0Rm9udFNpemUsIGdldE9wdGlvbnNCeVZhbHVlcywgZ2V0U2VsZWN0ZWRPcHRpb25zLCBpc09wdGlvblNlbGVjdGVkLCBub3JtYWxpemVTaXplLCBub3JtYWxpemVPcHRpb25Hcm91cHMsIHJlbW92ZU11bHRpcGxlVmFsdWUsIHRvZ2dsZU11bHRpcGxlVmFsdWUsIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgJy4vc3R5bGUnO1xuY29uc3QgREVGQVVMVF9NQVhfSEVJR0hUID0gMzIwO1xuZXhwb3J0IGNvbnN0IFNlbGVjdCA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgY2xhc3NOYW1lID0gJycsIHByZWZpeENscyA9ICdzZWxlY3QnLCBzdHlsZSwgaWQsIG5hbWUsICdhcmlhLWxhYmVsJzogYXJpYUxhYmVsLCAnYXJpYS1sYWJlbGxlZGJ5JzogYXJpYUxhYmVsbGVkQnksIHBsYWNlaG9sZGVyID0gJ1ZhbHVlJywgb3B0aW9ucyA9IFtdLCB2YWx1ZSwgZGVmYXVsdFZhbHVlLCBzaXplID0gJ2xhcmdlJywgc3RhdHVzID0gJ2RlZmF1bHQnLCB2YXJpYW50ID0gJ2ZpbGwnLCBkaXNhYmxlZDogZGlzYWJsZWRQcm9wID0gZmFsc2UsIHJlYWRPbmx5ID0gZmFsc2UsIGxvYWRpbmcgPSBmYWxzZSwgbXVsdGlwbGUgPSBmYWxzZSwgbWF4VmlzaWJsZVZhbHVlcywgc2VhcmNoYWJsZSA9IGZhbHNlLCBzZWFyY2hQbGFjZWhvbGRlciA9ICdTZWFyY2gnLCBzZWFyY2hWYWx1ZSwgZGVmYXVsdFNlYXJjaFZhbHVlID0gJycsIGZpbHRlcklucHV0QXV0b0ZvY3VzID0gdHJ1ZSwgbGFiZWwsIGxhYmVsQ2xhc3NOYW1lLCBpbmZvLCBkZXNjcmlwdGlvbiwgZmVlZGJhY2ssIHJlcXVpcmVkID0gdHJ1ZSwgcHJlZml4LCBlbXB0eUNvbnRlbnQgPSAnTm8gb3B0aW9ucycsIHBhbmVsSGVhZGVyLCBwYW5lbEZvb3Rlciwgb3BlbiwgZGVmYXVsdE9wZW4gPSBmYWxzZSwgcG9ydGFsID0gdHJ1ZSwgYWxsb3dEZXNlbGVjdCA9IGZhbHNlLCBwYW5lbENsYXNzTmFtZSwgb3B0aW9uQ2xhc3NOYW1lLCBncm91cExhYmVsQ2xhc3NOYW1lLCBsaXN0TWF4SGVpZ2h0ID0gREVGQVVMVF9NQVhfSEVJR0hULCBvZmZzZXQsIGFuaW1hdGlvbiwgb25DaGFuZ2UsIG9uT3BlbkNoYW5nZSwgb25TZWFyY2hDaGFuZ2UsIG9uQmx1ciwgZmlsdGVyT3B0aW9uLCByZW5kZXJPcHRpb24sIHJlbmRlck9wdGlvbkNvbnRlbnQsIHJlbmRlclZhbHVlLCByZWYsIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaXNhYmxlZCA9IGRpc2FibGVkUHJvcCB8fCBsb2FkaW5nO1xuICAgIGNvbnN0IGludGVyYWN0aXZlID0gIWRpc2FibGVkICYmICFyZWFkT25seTtcbiAgICBjb25zdCBjbGFzc2VzID0gcm9vdENsYXNzbmFtZXMocHJlZml4Q2xzKTtcbiAgICBjb25zdCBhdXRvSWQgPSB1c2VJZCgpO1xuICAgIGNvbnN0IHRyaWdnZXJJZCA9IGlkICE9PSBudWxsICYmIGlkICE9PSB2b2lkIDAgPyBpZCA6IGF1dG9JZDtcbiAgICBjb25zdCBsYWJlbElkID0gdXNlSWQoKTtcbiAgICBjb25zdCBkZXNjcmlwdGlvbklkID0gdXNlSWQoKTtcbiAgICBjb25zdCBmZWVkYmFja0lkID0gdXNlSWQoKTtcbiAgICBjb25zdCBvcHRpb25JZFByZWZpeCA9IHVzZUlkKCk7XG4gICAgY29uc3QgW2lubmVyVmFsdWUsIHNldElubmVyVmFsdWVdID0gdXNlQ29udHJvbGxlZFN0YXRlKGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCAmJiBkZWZhdWx0VmFsdWUgIT09IHZvaWQgMCA/IGRlZmF1bHRWYWx1ZSA6IChtdWx0aXBsZSA/IFtdIDogdW5kZWZpbmVkKSwgdmFsdWUpO1xuICAgIGNvbnN0IFtpbm5lclNlYXJjaFZhbHVlLCBzZXRJbm5lclNlYXJjaFZhbHVlXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0U2VhcmNoVmFsdWUsIHNlYXJjaFZhbHVlKTtcbiAgICBjb25zdCBbYWN0aXZlSW5kZXgsIHNldEFjdGl2ZUluZGV4XSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRTaXplID0gbm9ybWFsaXplU2l6ZShzaXplKTtcbiAgICBjb25zdCBhbGxPcHRpb25Hcm91cHMgPSB1c2VNZW1vKCgpID0+IG5vcm1hbGl6ZU9wdGlvbkdyb3VwcyhvcHRpb25zKSwgW29wdGlvbnNdKTtcbiAgICBjb25zdCBhbGxGbGF0T3B0aW9ucyA9IHVzZU1lbW8oKCkgPT4gZmxhdHRlbk9wdGlvbkdyb3VwcyhhbGxPcHRpb25Hcm91cHMpLCBbYWxsT3B0aW9uR3JvdXBzXSk7XG4gICAgY29uc3QgdmlzaWJsZU9wdGlvbkdyb3VwcyA9IHVzZU1lbW8oKCkgPT4gKHNlYXJjaGFibGVcbiAgICAgICAgPyBmaWx0ZXJPcHRpb25Hcm91cHMoYWxsT3B0aW9uR3JvdXBzLCBpbm5lclNlYXJjaFZhbHVlLCBmaWx0ZXJPcHRpb24pXG4gICAgICAgIDogYWxsT3B0aW9uR3JvdXBzKSwgW2FsbE9wdGlvbkdyb3VwcywgZmlsdGVyT3B0aW9uLCBpbm5lclNlYXJjaFZhbHVlLCBzZWFyY2hhYmxlXSk7XG4gICAgY29uc3QgdmlzaWJsZUZsYXRPcHRpb25zID0gdXNlTWVtbygoKSA9PiBmbGF0dGVuT3B0aW9uR3JvdXBzKHZpc2libGVPcHRpb25Hcm91cHMpLCBbdmlzaWJsZU9wdGlvbkdyb3Vwc10pO1xuICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9ucyA9IHVzZU1lbW8oKCkgPT4gZ2V0U2VsZWN0ZWRPcHRpb25zKGFsbEZsYXRPcHRpb25zLCBpbm5lclZhbHVlLCBtdWx0aXBsZSksIFthbGxGbGF0T3B0aW9ucywgaW5uZXJWYWx1ZSwgbXVsdGlwbGVdKTtcbiAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZE9wdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtYXRjaGVkSW5kZXggPSB2aXNpYmxlRmxhdE9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRPcHRpb25zWzBdLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG1hdGNoZWRJbmRleCA+PSAwID8gbWF0Y2hlZEluZGV4IDogbnVsbDtcbiAgICB9LCBbc2VsZWN0ZWRPcHRpb25zLCB2aXNpYmxlRmxhdE9wdGlvbnNdKTtcbiAgICBjb25zdCBoYXNTZWxlY3Rpb24gPSBzZWxlY3RlZE9wdGlvbnMubGVuZ3RoID4gMDtcbiAgICBjb25zdCBsaXN0UmVmID0gdXNlUmVmKFtdKTtcbiAgICBjb25zdCBsaXN0Q29udGVudFJlZiA9IHVzZVJlZihbXSk7XG4gICAgY29uc3QgZmxvYXRpbmdSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgdHJpZ2dlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBzZWFyY2hJbnB1dFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBoYW5kbGVUcmlnZ2VyUmVmID0gdXNlRXZlbnRDYWxsYmFjaygobm9kZSkgPT4ge1xuICAgICAgICB0cmlnZ2VyUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICByZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCB7IGlzT3BlbjogaW5uZXJPcGVuLCBzZXRPcGVuOiBoYW5kbGVPcGVuQ2hhbmdlLCByZWZzLCBjb250ZXh0LCBmbG9hdGluZ1N0eWxlcywgdHJhbnNpdGlvblN0eWxlcywgaXNNb3VudGVkLCBiYXNlSW50ZXJhY3Rpb25zLCB9ID0gdXNlU2VsZWN0U2hlbGwoe1xuICAgICAgICBvcGVuLFxuICAgICAgICBkZWZhdWx0T3BlbixcbiAgICAgICAgb25PcGVuQ2hhbmdlLFxuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgcmVhZE9ubHksXG4gICAgICAgIGxpc3RNYXhIZWlnaHQsXG4gICAgICAgIGFuaW1hdGlvbixcbiAgICAgICAgb2Zmc2V0LFxuICAgIH0pO1xuICAgIGNvbnN0IHNldFJlZmVyZW5jZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG5vZGUpID0+IHtcbiAgICAgICAgcmVmcy5zZXRSZWZlcmVuY2Uobm9kZSk7XG4gICAgICAgIGhhbmRsZVRyaWdnZXJSZWYobm9kZSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmxvYXRpbmcgPSB1c2VFdmVudENhbGxiYWNrKChub2RlKSA9PiB7XG4gICAgICAgIHJlZnMuc2V0RmxvYXRpbmcobm9kZSk7XG4gICAgICAgIGZsb2F0aW5nUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgIH0pO1xuICAgIGNvbnN0IGxpc3ROYXZpZ2F0aW9uID0gdXNlTGlzdE5hdmlnYXRpb24oY29udGV4dCwge1xuICAgICAgICBsaXN0UmVmLFxuICAgICAgICBhY3RpdmVJbmRleCxcbiAgICAgICAgc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgb25OYXZpZ2F0ZTogc2V0QWN0aXZlSW5kZXgsXG4gICAgICAgIGVuYWJsZWQ6IGlubmVyT3BlbixcbiAgICAgICAgbG9vcDogdHJ1ZSxcbiAgICAgICAgdmlydHVhbDogc2VhcmNoYWJsZSxcbiAgICB9KTtcbiAgICBjb25zdCB0eXBlYWhlYWQgPSB1c2VUeXBlYWhlYWQoY29udGV4dCwge1xuICAgICAgICBsaXN0UmVmOiBsaXN0Q29udGVudFJlZixcbiAgICAgICAgYWN0aXZlSW5kZXgsXG4gICAgICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgICAgIGVuYWJsZWQ6IGlubmVyT3BlbiAmJiAhc2VhcmNoYWJsZSxcbiAgICAgICAgb25NYXRjaDogc2V0QWN0aXZlSW5kZXgsXG4gICAgfSk7XG4gICAgY29uc3QgeyBnZXRSZWZlcmVuY2VQcm9wcywgZ2V0RmxvYXRpbmdQcm9wcywgZ2V0SXRlbVByb3BzIH0gPSB1c2VJbnRlcmFjdGlvbnMoW1xuICAgICAgICAuLi5iYXNlSW50ZXJhY3Rpb25zLFxuICAgICAgICBsaXN0TmF2aWdhdGlvbixcbiAgICAgICAgdHlwZWFoZWFkLFxuICAgIF0pO1xuICAgIGNvbnN0IGZpcnN0RW5hYmxlZEluZGV4ID0gdXNlTWVtbygoKSA9PiB2aXNpYmxlRmxhdE9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+ICFvcHRpb24uZGlzYWJsZWQpLCBbdmlzaWJsZUZsYXRPcHRpb25zXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFpbm5lck9wZW4pIHtcbiAgICAgICAgICAgIHNldEFjdGl2ZUluZGV4KHNlbGVjdGVkSW5kZXgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNldEFjdGl2ZUluZGV4KChwcmV2KSA9PiB7XG4gICAgICAgICAgICBpZiAocHJldiAhPT0gbnVsbCAmJiB2aXNpYmxlRmxhdE9wdGlvbnNbcHJldl0gJiYgIXZpc2libGVGbGF0T3B0aW9uc1twcmV2XS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICB2aXNpYmxlRmxhdE9wdGlvbnNbc2VsZWN0ZWRJbmRleF0gJiZcbiAgICAgICAgICAgICAgICAhdmlzaWJsZUZsYXRPcHRpb25zW3NlbGVjdGVkSW5kZXhdLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkSW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmlyc3RFbmFibGVkSW5kZXggPj0gMCA/IGZpcnN0RW5hYmxlZEluZGV4IDogbnVsbDtcbiAgICAgICAgfSk7XG4gICAgfSwgW2ZpcnN0RW5hYmxlZEluZGV4LCBpbm5lck9wZW4sIHNlbGVjdGVkSW5kZXgsIHZpc2libGVGbGF0T3B0aW9uc10pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCFpbm5lck9wZW4gfHwgYWN0aXZlSW5kZXggPT09IG51bGwgfHwgc2VhcmNoYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIChfYSA9IGxpc3RSZWYuY3VycmVudFthY3RpdmVJbmRleF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7XG4gICAgfSwgW2FjdGl2ZUluZGV4LCBpbm5lck9wZW4sIHNlYXJjaGFibGVdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsaXN0UmVmLmN1cnJlbnQgPSBsaXN0UmVmLmN1cnJlbnQuc2xpY2UoMCwgdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aCk7XG4gICAgICAgIGxpc3RDb250ZW50UmVmLmN1cnJlbnQgPSBsaXN0Q29udGVudFJlZi5jdXJyZW50LnNsaWNlKDAsIHZpc2libGVGbGF0T3B0aW9ucy5sZW5ndGgpO1xuICAgIH0sIFt2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoXSk7XG4gICAgY29uc3Qgc2V0U2VhcmNoSW5wdXRSZWYgPSB1c2VFdmVudENhbGxiYWNrKChub2RlKSA9PiB7XG4gICAgICAgIHNlYXJjaElucHV0UmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICBpZiAobm9kZSAmJiBpbm5lck9wZW4gJiYgZmlsdGVySW5wdXRBdXRvRm9jdXMpIHtcbiAgICAgICAgICAgIG5vZGUuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgbm90aWZ5Qmx1cklmT3V0c2lkZSA9IHVzZUV2ZW50Q2FsbGJhY2soKHJlbGF0ZWRUYXJnZXQsIGV2ZW50KSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGNvbnN0IG5leHRUYXJnZXQgPSByZWxhdGVkVGFyZ2V0O1xuICAgICAgICBjb25zdCB3aXRoaW5UcmlnZ2VyID0gISEobmV4dFRhcmdldCAmJiAoKF9hID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY29udGFpbnMobmV4dFRhcmdldCkpKTtcbiAgICAgICAgY29uc3Qgd2l0aGluRmxvYXRpbmcgPSAhIShuZXh0VGFyZ2V0ICYmICgoX2IgPSBmbG9hdGluZ1JlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY29udGFpbnMobmV4dFRhcmdldCkpKTtcbiAgICAgICAgaWYgKCF3aXRoaW5UcmlnZ2VyICYmICF3aXRoaW5GbG9hdGluZykge1xuICAgICAgICAgICAgb25CbHVyID09PSBudWxsIHx8IG9uQmx1ciA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25CbHVyKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRyaWdnZXJCbHVyID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgbm90aWZ5Qmx1cklmT3V0c2lkZShldmVudC5yZWxhdGVkVGFyZ2V0LCBldmVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlT3B0aW9uQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIG5vdGlmeUJsdXJJZk91dHNpZGUoZXZlbnQucmVsYXRlZFRhcmdldCwgZXZlbnQpO1xuICAgIH0pO1xuICAgIGNvbnN0IGNvbW1pdENoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKG5leHRWYWx1ZSwgbmV4dE9wdGlvbikgPT4ge1xuICAgICAgICBzZXRJbm5lclZhbHVlKG5leHRWYWx1ZSk7XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShuZXh0VmFsdWUsIG5leHRPcHRpb24sIG5hbWUpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlbGVjdE9wdGlvbiA9IHVzZUV2ZW50Q2FsbGJhY2soKG9wdGlvbikgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBpZiAob3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG11bHRpcGxlKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0VmFsdWUgPSB0b2dnbGVNdWx0aXBsZVZhbHVlKGlubmVyVmFsdWUsIG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBuZXh0T3B0aW9ucyA9IGdldE9wdGlvbnNCeVZhbHVlcyhhbGxGbGF0T3B0aW9ucywgbmV4dFZhbHVlKTtcbiAgICAgICAgICAgIGNvbW1pdENoYW5nZShuZXh0VmFsdWUsIG5leHRPcHRpb25zKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWxsb3dEZXNlbGVjdCAmJiBpbm5lclZhbHVlID09PSBvcHRpb24udmFsdWUpIHtcbiAgICAgICAgICAgIGNvbW1pdENoYW5nZSh1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICBoYW5kbGVPcGVuQ2hhbmdlKGZhbHNlKTtcbiAgICAgICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cigpO1xuICAgICAgICAgICAgKF9hID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbW1pdENoYW5nZShvcHRpb24udmFsdWUsIG9wdGlvbik7XG4gICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoKTtcbiAgICAgICAgKF9iID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVJlbW92ZVNlbGVjdGVkVmFsdWUgPSB1c2VFdmVudENhbGxiYWNrKChvcHRpb25WYWx1ZSkgPT4ge1xuICAgICAgICBpZiAoIW11bHRpcGxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFnZXRNdWx0aXBsZVZhbHVlKGlubmVyVmFsdWUpLmluY2x1ZGVzKG9wdGlvblZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5leHRWYWx1ZSA9IHJlbW92ZU11bHRpcGxlVmFsdWUoaW5uZXJWYWx1ZSwgb3B0aW9uVmFsdWUpO1xuICAgICAgICBjb25zdCBuZXh0T3B0aW9ucyA9IGdldE9wdGlvbnNCeVZhbHVlcyhhbGxGbGF0T3B0aW9ucywgbmV4dFZhbHVlKTtcbiAgICAgICAgY29tbWl0Q2hhbmdlKG5leHRWYWx1ZSwgbmV4dE9wdGlvbnMpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVRyaWdnZXJLZXlEb3duID0gdXNlRXZlbnRDYWxsYmFjaygoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFpbnRlcmFjdGl2ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkVOVEVSIHx8IGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuU1BBQ0UpIHtcbiAgICAgICAgICAgIGlmIChpbm5lck9wZW4gJiZcbiAgICAgICAgICAgICAgICBhY3RpdmVJbmRleCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0gJiZcbiAgICAgICAgICAgICAgICAhdmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uKHZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBoYW5kbGVPcGVuQ2hhbmdlKCFpbm5lck9wZW4pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkFSUk9XX0RPV04gfHwgZXZlbnQua2V5ID09PSBLRVlCT0FSRC5BUlJPV19VUCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmICghaW5uZXJPcGVuKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlT3BlbkNoYW5nZSh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUl0ZW1Nb3VzZUVudGVyID0gdXNlRXZlbnRDYWxsYmFjaygoaW5kZXgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoISgoX2EgPSB2aXNpYmxlRmxhdE9wdGlvbnNbaW5kZXhdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGlzYWJsZWQpKSB7XG4gICAgICAgICAgICBzZXRBY3RpdmVJbmRleChpbmRleCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUYWdSZW1vdmVNb3VzZURvd24gPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVUYWdSZW1vdmVDbGljayA9IHVzZUV2ZW50Q2FsbGJhY2soKGV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaEJsdXIgPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICBub3RpZnlCbHVySWZPdXRzaWRlKGV2ZW50LnJlbGF0ZWRUYXJnZXQsIGV2ZW50KTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTZWFyY2hDaGFuZ2UgPSB1c2VFdmVudENhbGxiYWNrKChuZXh0VmFsdWUsIF9ldmVudCkgPT4ge1xuICAgICAgICBzZXRJbm5lclNlYXJjaFZhbHVlKG5leHRWYWx1ZSk7XG4gICAgICAgIG9uU2VhcmNoQ2hhbmdlID09PSBudWxsIHx8IG9uU2VhcmNoQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblNlYXJjaENoYW5nZShuZXh0VmFsdWUpO1xuICAgIH0pO1xuICAgIGNvbnN0IGZpbmRFbmFibGVkSW5kZXggPSB1c2VFdmVudENhbGxiYWNrKChjdXJyZW50LCBkaXJlY3Rpb24pID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBsZW5ndGggPSB2aXNpYmxlRmxhdE9wdGlvbnMubGVuZ3RoO1xuICAgICAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGFydCA9IGN1cnJlbnQgIT09IG51bGwgJiYgY3VycmVudCAhPT0gdm9pZCAwID8gY3VycmVudCA6IChkaXJlY3Rpb24gPT09IDEgPyAtMSA6IGxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IHN0ZXAgPSAxOyBzdGVwIDw9IGxlbmd0aDsgc3RlcCArPSAxKSB7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGUgPSAoKHN0YXJ0ICsgZGlyZWN0aW9uICogc3RlcCkgJSBsZW5ndGggKyBsZW5ndGgpICUgbGVuZ3RoO1xuICAgICAgICAgICAgaWYgKCEoKF9hID0gdmlzaWJsZUZsYXRPcHRpb25zW2NhbmRpZGF0ZV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5kaXNhYmxlZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVNlYXJjaEtleURvd24gPSB1c2VFdmVudENhbGxiYWNrKChldmVudCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkFSUk9XX0RPV04pIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb25zdCBuZXh0ID0gZmluZEVuYWJsZWRJbmRleChhY3RpdmVJbmRleCwgMSk7XG4gICAgICAgICAgICBpZiAobmV4dCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHNldEFjdGl2ZUluZGV4KG5leHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkFSUk9XX1VQKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgY29uc3QgcHJldiA9IGZpbmRFbmFibGVkSW5kZXgoYWN0aXZlSW5kZXgsIC0xKTtcbiAgICAgICAgICAgIGlmIChwcmV2ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc2V0QWN0aXZlSW5kZXgocHJldik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gS0VZQk9BUkQuRU5URVIpIHtcbiAgICAgICAgICAgIGlmIChhY3RpdmVJbmRleCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0gJiZcbiAgICAgICAgICAgICAgICAhdmlzaWJsZUZsYXRPcHRpb25zW2FjdGl2ZUluZGV4XS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uKHZpc2libGVGbGF0T3B0aW9uc1thY3RpdmVJbmRleF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09IEtFWUJPQVJELkVTQ0FQRSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGhhbmRsZU9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICAgICAgKF9hID0gdHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgcmVuZGVyVmFsdWVNZXRhID0ge1xuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgcmVhZE9ubHksXG4gICAgICAgIG11bHRpcGxlLFxuICAgICAgICBtYXhWaXNpYmxlVmFsdWVzLFxuICAgICAgICBvcGVuOiBpbm5lck9wZW4sXG4gICAgICAgIHBsYWNlaG9sZGVyOiAhaGFzU2VsZWN0aW9uLFxuICAgICAgICBzZWxlY3RlZE9wdGlvbnMsXG4gICAgICAgIHNpemU6IG5vcm1hbGl6ZWRTaXplLFxuICAgICAgICBmb250U2l6ZTogZ2V0Rm9udFNpemUobm9ybWFsaXplZFNpemUpLFxuICAgIH07XG4gICAgY29uc3QgdmFsdWVMYWJlbENsYXNzID0gaGFzU2VsZWN0aW9uID8gJ3ZhbHVlJyA6ICdwbGFjZWhvbGRlcic7XG4gICAgY29uc3QgaXNNdWx0aXBsZVZhbHVlRmlsbGVkID0gKG11bHRpcGxlICYmXG4gICAgICAgIGhhc1NlbGVjdGlvbiAmJlxuICAgICAgICBtYXhWaXNpYmxlVmFsdWVzID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgLy8gQSBjdXN0b20gYHJlbmRlclZhbHVlYCBwcm9kdWNlcyBpdHMgb3duIHNpbmdsZS1saW5lIHN1bW1hcnksIHNvIHRoZVxuICAgICAgICAvLyBtdWx0aS12YWx1ZSBjaGlwIGxheW91dCAoaGVpZ2h0OmF1dG8gKyB2ZXJ0aWNhbCBwYWRkaW5nICsgZmxleC13cmFwKVxuICAgICAgICAvLyBtdXN0IG5vdCBraWNrIGluIGFuZCBpbmZsYXRlIHRoZSB0cmlnZ2VyIGhlaWdodC5cbiAgICAgICAgIXJlbmRlclZhbHVlKTtcbiAgICBjb25zdCB0cmlnZ2VyQ2xhc3NOYW1lID0gY2xhc3NlcygndHJpZ2dlcicsIGpvaW5DbHMoY2xhc3NlcyhgdHJpZ2dlci0ke25vcm1hbGl6ZWRTaXplfWApLCBjbGFzc2VzKGB0cmlnZ2VyLSR7dmFyaWFudH1gKSwgaW5uZXJPcGVuICYmIGNsYXNzZXMoJ3RyaWdnZXItb3BlbicpLCBpc011bHRpcGxlVmFsdWVGaWxsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1tdWx0aXBsZS1maWxsZWQnKSwgaGFzU2VsZWN0aW9uID8gY2xhc3NlcygndHJpZ2dlci1maWxsZWQnKSA6IGNsYXNzZXMoJ3RyaWdnZXItcGxhY2Vob2xkZXInKSwgc3RhdHVzICE9PSAnZGVmYXVsdCcgJiYgY2xhc3NlcyhgdHJpZ2dlci0ke3N0YXR1c31gKSwgZGlzYWJsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1kaXNhYmxlZCcpLCByZWFkT25seSAmJiAhZGlzYWJsZWQgJiYgY2xhc3NlcygndHJpZ2dlci1yZWFkb25seScpKSk7XG4gICAgY29uc3QgaWNvblNpemUgPSBub3JtYWxpemVkU2l6ZSA9PT0gJ2xhcmdlJyA/IDIwIDogMTY7XG4gICAgY29uc3QgYWN0aXZlT3B0aW9uSWQgPSBzZWFyY2hhYmxlICYmIGlubmVyT3BlbiAmJiBhY3RpdmVJbmRleCAhPT0gbnVsbFxuICAgICAgICA/IGAke29wdGlvbklkUHJlZml4fS0ke2FjdGl2ZUluZGV4fWBcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZmxvYXRpbmdBcmlhTGFiZWxsZWRCeSA9IGFyaWFMYWJlbGxlZEJ5ICE9PSBudWxsICYmIGFyaWFMYWJlbGxlZEJ5ICE9PSB2b2lkIDAgPyBhcmlhTGFiZWxsZWRCeSA6IChsYWJlbCA/IGxhYmVsSWQgOiB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGRlc2NyaWJlZEJ5SWRzID0gW1xuICAgICAgICBkZXNjcmlwdGlvbiA/IGRlc2NyaXB0aW9uSWQgOiBudWxsLFxuICAgICAgICBmZWVkYmFjayA/IGZlZWRiYWNrSWQgOiBudWxsLFxuICAgIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKSB8fCB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChfanN4cyhTZWxlY3RGaWVsZFNoZWxsLCB7IGNsYXNzZXM6IGNsYXNzZXMsIGNsYXNzTmFtZTogY2xhc3NOYW1lLCBzaXplOiBub3JtYWxpemVkU2l6ZSwgdmFyaWFudDogdmFyaWFudCwgc3RhdHVzOiBzdGF0dXMsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZE9ubHk6IHJlYWRPbmx5LCBsb2FkaW5nOiBsb2FkaW5nLCBsYWJlbDogbGFiZWwsIGxhYmVsQ2xhc3NOYW1lOiBsYWJlbENsYXNzTmFtZSwgaW5mbzogaW5mbywgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLCBmZWVkYmFjazogZmVlZGJhY2ssIHJlcXVpcmVkOiByZXF1aXJlZCwgbGFiZWxJZDogbGFiZWxJZCwgZGVzY3JpcHRpb25JZDogZGVzY3JpcHRpb25JZCwgZmVlZGJhY2tJZDogZmVlZGJhY2tJZCwgY2hpbGRyZW46IFtfanN4cyhcImJ1dHRvblwiLCBPYmplY3QuYXNzaWduKHt9LCBnZXRSZWZlcmVuY2VQcm9wcyh7XG4gICAgICAgICAgICAgICAgcmVmOiBzZXRSZWZlcmVuY2UsXG4gICAgICAgICAgICAgICAgaWQ6IHRyaWdnZXJJZCxcbiAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgICAgICAgICdhcmlhLXJlYWRvbmx5JzogcmVhZE9ubHkgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogdHJpZ2dlckNsYXNzTmFtZSxcbiAgICAgICAgICAgICAgICBvbktleURvd246IGhhbmRsZVRyaWdnZXJLZXlEb3duLFxuICAgICAgICAgICAgICAgIG9uQmx1cjogaGFuZGxlVHJpZ2dlckJsdXIsXG4gICAgICAgICAgICAgICAgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwsXG4gICAgICAgICAgICAgICAgJ2FyaWEtbGFiZWxsZWRieSc6IGZsb2F0aW5nQXJpYUxhYmVsbGVkQnksXG4gICAgICAgICAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiBkZXNjcmliZWRCeUlkcyxcbiAgICAgICAgICAgIH0pLCB7IGNoaWxkcmVuOiBbX2pzeHMoXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdjb250ZW50JyksIGNoaWxkcmVuOiBbcHJlZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwcmVmaXgnKSwgY2hpbGRyZW46IHByZWZpeCB9KSwgX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXModmFsdWVMYWJlbENsYXNzLCBqb2luQ2xzKGNsYXNzZXMoYCR7dmFsdWVMYWJlbENsYXNzfS0ke25vcm1hbGl6ZWRTaXplfWApLCBpc011bHRpcGxlVmFsdWVGaWxsZWQgJiYgY2xhc3NlcyhgJHt2YWx1ZUxhYmVsQ2xhc3N9LW11bHRpcGxlYCksIGRpc2FibGVkICYmIGNsYXNzZXMoYCR7dmFsdWVMYWJlbENsYXNzfS1kaXNhYmxlZGApKSksIGNoaWxkcmVuOiBfanN4KFNlbGVjdFZhbHVlQ29udGVudCwgeyBjbGFzc2VzOiBjbGFzc2VzLCBoYXNTZWxlY3Rpb246IGhhc1NlbGVjdGlvbiwgbXVsdGlwbGU6IG11bHRpcGxlLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIHJlbmRlclZhbHVlOiByZW5kZXJWYWx1ZSwgcmVuZGVyVmFsdWVNZXRhOiByZW5kZXJWYWx1ZU1ldGEsIHNlbGVjdGVkT3B0aW9uczogc2VsZWN0ZWRPcHRpb25zLCBtYXhWaXNpYmxlVmFsdWVzOiBtYXhWaXNpYmxlVmFsdWVzLCBvblJlbW92ZTogaGFuZGxlUmVtb3ZlU2VsZWN0ZWRWYWx1ZSwgb25SZW1vdmVDbGljazogaGFuZGxlVGFnUmVtb3ZlQ2xpY2ssIG9uUmVtb3ZlTW91c2VEb3duOiBoYW5kbGVUYWdSZW1vdmVNb3VzZURvd24gfSkgfSldIH0pLCBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnaWNvbicpLCBjaGlsZHJlbjogbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2pzeChTcGlubmVyLCB7IHNpemU6IGljb25TaXplLCBzdHJva2VXaWR0aDogMiB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcmVhZE9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX2pzeChJY29ucywgeyBuYW1lOiBpbm5lck9wZW4gPyAnY2hldnJvblVwJyA6ICdjaGV2cm9uRG93bicsIHNpemU6IGljb25TaXplLCBjb2xvcjogXCJjdXJyZW50Q29sb3JcIiB9KSB9KV0gfSkpLCBpc01vdW50ZWQgJiYgaW50ZXJhY3RpdmUgJiYgKCgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYW5lbE5vZGUgPSAoX2pzeChGbG9hdGluZ0ZvY3VzTWFuYWdlciwgeyBjb250ZXh0OiBjb250ZXh0LCBtb2RhbDogZmFsc2UsIGluaXRpYWxGb2N1czogLTEsIHJldHVybkZvY3VzOiBmYWxzZSwgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIE9iamVjdC5hc3NpZ24oe30sIGdldEZsb2F0aW5nUHJvcHMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBzZXRGbG9hdGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogam9pbkNscyhjbGFzc2VzKCdwYW5lbCcpLCBwYW5lbENsYXNzTmFtZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBmbG9hdGluZ1N0eWxlcyksIHRyYW5zaXRpb25TdHlsZXMpLFxuICAgICAgICAgICAgICAgICAgICB9KSwgeyBjaGlsZHJlbjogW3NlYXJjaGFibGUgJiYgKF9qc3goU2VsZWN0U2VhcmNoQ29udHJvbCwgeyByZWY6IHNldFNlYXJjaElucHV0UmVmLCBjbGFzc2VzOiBjbGFzc2VzLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2l6ZT17bm9ybWFsaXplZFNpemV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU6IFwic21hbGxcIiwgcGxhY2Vob2xkZXI6IHNlYXJjaFBsYWNlaG9sZGVyLCB2YWx1ZTogaW5uZXJTZWFyY2hWYWx1ZSwgYWN0aXZlRGVzY2VuZGFudDogYWN0aXZlT3B0aW9uSWQsIG9uQmx1cjogaGFuZGxlU2VhcmNoQmx1ciwgb25DaGFuZ2U6IGhhbmRsZVNlYXJjaENoYW5nZSwgb25LZXlEb3duOiBoYW5kbGVTZWFyY2hLZXlEb3duIH0pKSwgX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWJvZHknKSwgY2hpbGRyZW46IFtwYW5lbEhlYWRlciAhPSBudWxsICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdwYW5lbC1oZWFkZXInKSwgY2hpbGRyZW46IHBhbmVsSGVhZGVyIH0pKSwgdmlzaWJsZUZsYXRPcHRpb25zLmxlbmd0aCA9PT0gMCA/IChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdlbXB0eScpLCBjaGlsZHJlbjogX2pzeChUeXBvZ3JhcGh5Qm9keSwgeyBzaXplOiBTRUxFQ1RfVFlQT0dSQVBIWS5lbXB0eS5zaXplLCBjb2xvcjogU0VMRUNUX1RZUE9HUkFQSFkuZW1wdHkuY29sb3IsIGNoaWxkcmVuOiBlbXB0eUNvbnRlbnQgfSkgfSkpIDogKCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZsYXRJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZpc2libGVPcHRpb25Hcm91cHMubWFwKChncm91cCkgPT4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdncm91cCcpLCBjaGlsZHJlbjogW2dyb3VwLmxhYmVsICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdncm91cC1sYWJlbCcsIGdyb3VwTGFiZWxDbGFzc05hbWUpLCBjaGlsZHJlbjogX2pzeChUeXBvZ3JhcGh5TGFiZWwsIHsgc2l6ZTogU0VMRUNUX1RZUE9HUkFQSFkuZ3JvdXBMYWJlbC5zaXplLCBzdHJvbmc6IHRydWUsIGNoaWxkcmVuOiBncm91cC5sYWJlbCB9KSB9KSksIGdyb3VwLm9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25GbGF0SW5kZXggPSBmbGF0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhdEluZGV4ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBpc09wdGlvblNlbGVjdGVkKGlubmVyVmFsdWUsIG11bHRpcGxlLCBvcHRpb24udmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IGFjdGl2ZUluZGV4ID09PSBvcHRpb25GbGF0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uTWV0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogISFvcHRpb24uZGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBvcHRpb25GbGF0SW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuOiBpbm5lck9wZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogZ2V0Rm9udFNpemUobm9ybWFsaXplZFNpemUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdENvbnRlbnRSZWYuY3VycmVudFtvcHRpb25GbGF0SW5kZXhdID0gZXh0cmFjdE9wdGlvblRleHQob3B0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKF9qc3goXCJidXR0b25cIiwgT2JqZWN0LmFzc2lnbih7fSwgZ2V0SXRlbVByb3BzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmKG5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RSZWYuY3VycmVudFtvcHRpb25GbGF0SW5kZXhdID0gbm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGAke29wdGlvbklkUHJlZml4fS0ke29wdGlvbkZsYXRJbmRleH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZTogJ29wdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3Nlcygnb3B0aW9uJywgam9pbkNscyhhY3RpdmUgJiYgY2xhc3Nlcygnb3B0aW9uLWFjdGl2ZScpLCBzZWxlY3RlZCAmJiBjbGFzc2VzKCdvcHRpb24tc2VsZWN0ZWQnKSwgb3B0aW9uLmRpc2FibGVkICYmIGNsYXNzZXMoJ29wdGlvbi1kaXNhYmxlZCcpLCBvcHRpb25DbGFzc05hbWUpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IG9wdGlvbi5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyaWEtc2VsZWN0ZWQnOiBzZWxlY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uKG9wdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcjogKCkgPT4gaGFuZGxlSXRlbU1vdXNlRW50ZXIob3B0aW9uRmxhdEluZGV4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25CbHVyOiBoYW5kbGVPcHRpb25CbHVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCB7IGNoaWxkcmVuOiByZW5kZXJPcHRpb24gPyAocmVuZGVyT3B0aW9uKG9wdGlvbiwgb3B0aW9uTWV0YSkpIDogKF9qc3goU2VsZWN0T3B0aW9uQ29udGVudCwgeyBjbGFzc2VzOiBjbGFzc2VzLCBvcHRpb246IG9wdGlvbiwgc2VsZWN0ZWQ6IHNlbGVjdGVkLCBzaXplOiBub3JtYWxpemVkU2l6ZSwgY29udGVudDogcmVuZGVyT3B0aW9uQ29udGVudCA9PT0gbnVsbCB8fCByZW5kZXJPcHRpb25Db250ZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZW5kZXJPcHRpb25Db250ZW50KG9wdGlvbiwgb3B0aW9uTWV0YSkgfSkpIH0pLCBgJHtncm91cC5rZXl9LSR7b3B0aW9uLnZhbHVlfWApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXSB9LCBncm91cC5rZXkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpKV0gfSksIHBhbmVsRm9vdGVyICE9IG51bGwgJiYgKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3BhbmVsLWZvb3RlcicpLCBjaGlsZHJlbjogcGFuZWxGb290ZXIgfSkpXSB9KSkgfSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBwb3J0YWwgPyBfanN4KEZsb2F0aW5nUG9ydGFsLCB7IGNoaWxkcmVuOiBwYW5lbE5vZGUgfSkgOiBwYW5lbE5vZGU7XG4gICAgICAgICAgICB9KSgpXSB9KSk7XG59O1xuU2VsZWN0LmRpc3BsYXlOYW1lID0gJ1NlbGVjdCc7XG5leHBvcnQgZGVmYXVsdCBtZW1vKFNlbGVjdCk7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -1,4 +1,3 @@
1
1
  export declare const TABLE_DEFAULT_PREFIX = "om-component-ui-table";
2
2
  export declare const TABLE_BLOCK = "table";
3
- export declare const TABLE_DEFAULT_SIZE = "large";
4
3
  export declare const TABLE_DEFAULT_VARIANT = "fill";
@@ -1,5 +1,4 @@
1
1
  export var TABLE_DEFAULT_PREFIX = 'om-component-ui-table';
2
2
  export var TABLE_BLOCK = 'table';
3
- export var TABLE_DEFAULT_SIZE = 'large';
4
3
  export var TABLE_DEFAULT_VARIANT = 'fill';
5
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvVGFibGUvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbIlRBQkxFX0RFRkFVTFRfUFJFRklYIiwiVEFCTEVfQkxPQ0siLCJUQUJMRV9ERUZBVUxUX1NJWkUiLCJUQUJMRV9ERUZBVUxUX1ZBUklBTlQiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBTUEsb0JBQW9CLEdBQUcsdUJBQXVCO0FBQzNELE9BQU8sSUFBTUMsV0FBVyxHQUFHLE9BQU87QUFDbEMsT0FBTyxJQUFNQyxrQkFBa0IsR0FBRyxPQUFPO0FBQ3pDLE9BQU8sSUFBTUMscUJBQXFCLEdBQUcsTUFBTSIsImZpbGUiOiJjb21wb25lbnRzL1RhYmxlL2NvbnN0YW50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
4
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvVGFibGUvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbIlRBQkxFX0RFRkFVTFRfUFJFRklYIiwiVEFCTEVfQkxPQ0siLCJUQUJMRV9ERUZBVUxUX1ZBUklBTlQiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBTUEsb0JBQW9CLEdBQUcsdUJBQXVCO0FBQzNELE9BQU8sSUFBTUMsV0FBVyxHQUFHLE9BQU87QUFDbEMsT0FBTyxJQUFNQyxxQkFBcUIsR0FBRyxNQUFNIiwiZmlsZSI6ImNvbXBvbmVudHMvVGFibGUvY29uc3RhbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -1,10 +1,9 @@
1
1
  import { type Key } from 'react';
2
- import type { TableCheckboxProps, TableColumnType, TableExpandableConfig, TableRecord, TableRowSelection, TableSize, TableVariant } from '../interface';
2
+ import type { TableCheckboxProps, TableColumnType, TableExpandableConfig, TableRecord, TableRowSelection, TableVariant } from '../interface';
3
3
  import type { TableFilterState, TableSorterState, Updater } from './useTableDataPipeline';
4
4
  import type { ColumnsType as InternalColumnsType } from '../internal/kernel/interface';
5
5
  interface UseTableColumnsConfig<T extends TableRecord = TableRecord> {
6
6
  columns: TableColumnType<T>[];
7
- size: TableSize;
8
7
  variant: TableVariant;
9
8
  expandable?: TableExpandableConfig<T>;
10
9
  mergedExpandedRowKeys: Key[];
@@ -111,8 +111,7 @@ function ariaSortFor(order) {
111
111
  // confirm / reset.
112
112
  var EMPTY_FILTER_VALUE = [];
113
113
  function makeHeaderTransform(config) {
114
- var size = config.size,
115
- sorter = config.sorter,
114
+ var sorter = config.sorter,
116
115
  setSorter = config.setSorter,
117
116
  filters = config.filters,
118
117
  setFilters = config.setFilters;
@@ -145,7 +144,6 @@ function makeHeaderTransform(config) {
145
144
  column: column
146
145
  }) : _jsx(HeaderCell, {
147
146
  column: column,
148
- size: size,
149
147
  sortOrder: activeOrder,
150
148
  onSortClick: function onSortClick() {
151
149
  return setSorter(function (currentSorter) {
@@ -239,10 +237,9 @@ export function useTableColumns(config) {
239
237
  setSorter = config.setSorter,
240
238
  filters = config.filters,
241
239
  setFilters = config.setFilters,
242
- size = config.size,
243
240
  getRowKey = config.getRowKey;
244
241
  // The user's data columns only depend on the header / render inputs
245
- // (sort, filter, size) — NOT on selection or expansion state. Memoising them
242
+ // (sort, filter) — NOT on selection or expansion state. Memoising them
246
243
  // on their own means toggling a checkbox or chevron no longer rebuilds and
247
244
  // re-wraps the render closure of *every* data column; only the small
248
245
  // selection/expand prefix below is rebuilt. `makeHeaderTransform` and
@@ -258,7 +255,7 @@ export function useTableColumns(config) {
258
255
  var cols = makeHeaderTransform(config)(columns);
259
256
  cols = makeRenderTransform()(cols);
260
257
  return cols;
261
- }, [columns, sorter, filters, size, setSorter, setFilters]);
258
+ }, [columns, sorter, filters, setSorter, setFilters]);
262
259
  // The selection / expand prefix carries live selected/expanded state in its
263
260
  // render output, which is the signal that re-renders the affected rows — so it
264
261
  // must rebuild on every toggle. It is at most two columns, so this is cheap.
@@ -276,7 +273,7 @@ export function useTableColumns(config) {
276
273
  cols = makeHeaderTransform(config)(cols);
277
274
  cols = makeRenderTransform()(cols);
278
275
  return cols;
279
- }, [expandable, rowSelection, mergedExpandedRowKeys, mergedSelectedRowKeys, checkboxPropsMap, isAllSelected, isIndeterminate, triggerExpand, triggerSelection, triggerSelectAll, sorter, setSorter, filters, setFilters, size, getRowKey]);
276
+ }, [expandable, rowSelection, mergedExpandedRowKeys, mergedSelectedRowKeys, checkboxPropsMap, isAllSelected, isIndeterminate, triggerExpand, triggerSelection, triggerSelectAll, sorter, setSorter, filters, setFilters, getRowKey]);
280
277
  return useMemo(function () {
281
278
  var cols = [].concat(_toConsumableArray(prefixColumns), _toConsumableArray(baseUserColumns));
282
279
  if (variant === 'stroke') {
@@ -285,4 +282,4 @@ export function useTableColumns(config) {
285
282
  return cols;
286
283
  }, [prefixColumns, baseUserColumns, variant]);
287
284
  }
288
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUNvbHVtbnMuanMiLCJjb21wb25lbnRzL1RhYmxlL3NyYy9jb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVDb2x1bW5zLnRzeCJdLCJuYW1lcyI6WyJqc3giLCJfanN4IiwidXNlTWVtbyIsIlNlbGVjdGlvbkNvbnRyb2wiLCJTZWxlY3Rpb25IZWFkZXJDb250cm9sIiwiRXhwYW5kVHJpZ2dlciIsIkhlYWRlckNlbGwiLCJCb2R5Q2VsbCIsIlRBQkxFX0RFRkFVTFRfUFJFRklYIiwiaXNDb2x1bW5Hcm91cCIsIm1ha2VFeHBhbmRUcmFuc2Zvcm0iLCJjb25maWciLCJleHBhbmRhYmxlIiwibWVyZ2VkRXhwYW5kZWRSb3dLZXlzIiwidHJpZ2dlckV4cGFuZCIsImdldFJvd0tleSIsImN1c3RvbUV4cGFuZEljb24iLCJleHBhbmRJY29uIiwicm93RXhwYW5kYWJsZSIsImV4cGFuZGVkS2V5U2V0IiwiU2V0IiwiY29sdW1ucyIsIl9hIiwia2V5IiwiY2xhc3NOYW1lIiwiRVhQQU5EX0NPTFVNTl9DTFMiLCJ3aWR0aCIsImNvbHVtbldpZHRoIiwidGl0bGUiLCJjb2x1bW5UaXRsZSIsImZpeGVkIiwidW5kZWZpbmVkIiwicmVuZGVyIiwiXyIsInJlY29yZCIsImluZGV4IiwiY2FuRXhwYW5kIiwicmVjb3JkS2V5IiwiZXhwYW5kZWQiLCJoYXMiLCJwcmVmaXhDbHMiLCJvbkV4cGFuZCIsInJlYyIsImUiLCJzdG9wUHJvcGFnYXRpb24iLCJvblRvZ2dsZSIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1ha2VTZWxlY3Rpb25UcmFuc2Zvcm0iLCJyb3dTZWxlY3Rpb24iLCJtZXJnZWRTZWxlY3RlZFJvd0tleXMiLCJjaGVja2JveFByb3BzTWFwIiwiaXNBbGxTZWxlY3RlZCIsImlzSW5kZXRlcm1pbmF0ZSIsInRyaWdnZXJTZWxlY3Rpb24iLCJ0cmlnZ2VyU2VsZWN0QWxsIiwic2VsZWN0aW9uVHlwZSIsInR5cGUiLCJzZWxlY3RlZEtleVNldCIsIk9iamVjdCIsImFzc2lnbiIsIlNFTEVDVElPTl9DT0xVTU5fQ0xTIiwicmVuZGVySGVhZGVyIiwiY2hlY2tlZCIsImluZGV0ZXJtaW5hdGUiLCJvbkNoYW5nZSIsInJvd1Byb3BzIiwiZ2V0IiwiYXJpYVNvcnRGb3IiLCJvcmRlciIsIkVNUFRZX0ZJTFRFUl9WQUxVRSIsIm1ha2VIZWFkZXJUcmFuc2Zvcm0iLCJzaXplIiwic29ydGVyIiwic2V0U29ydGVyIiwiZmlsdGVycyIsInNldEZpbHRlcnMiLCJtYXAiLCJjb2x1bW4iLCJfYiIsImlzU29ydGFibGUiLCJCb29sZWFuIiwiYWN0aXZlT3JkZXIiLCJjb2x1bW5LZXkiLCJTdHJpbmciLCJmaWx0ZXJTZWxlY3RlZCIsInVzZXJPbkhlYWRlckNlbGwiLCJvbkhlYWRlckNlbGwiLCJjb2wiLCJ1c2VyQXR0cnMiLCJvbkZpbHRlckNoYW5nZSIsIm5leHQiLCJjdXJyZW50IiwiX2RlZmluZVByb3BlcnR5IiwibGVuZ3RoIiwic29ydE9yZGVyIiwib25Tb3J0Q2xpY2siLCJjdXJyZW50U29ydGVyIiwiU1BBQ0VSX0NPTFVNTl9DTFMiLCJtYWtlU3BhY2VyVHJhbnNmb3JtIiwibWFrZVJlbmRlclRyYW5zZm9ybSIsInZhbHVlIiwidXNlVGFibGVDb2x1bW5zIiwidmFyaWFudCIsImJhc2VVc2VyQ29sdW1ucyIsImNvbHMiLCJwcmVmaXhDb2x1bW5zIiwic2hvd0V4cGFuZENvbHVtbiIsInNlbGVjdGlvblRyYW5zZm9ybSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxTQUFTQSxHQUFHLElBQUlDLElBQUksUUFBUSxtQkFBbUI7QUNBL0MsU0FBU0MsT0FBTyxRQUFrQixPQUFPO0FBQ3pDLFNBQVNDLGdCQUFnQixFQUFFQyxzQkFBc0IsUUFBUSw2QkFBNkI7QUFDdEYsU0FBU0MsYUFBYSxRQUFRLDJCQUEyQjtBQUN6RCxTQUFTQyxVQUFVLFFBQVEseUJBQXlCO0FBQ3BELFNBQVNDLFFBQVEsUUFBUSx1QkFBdUI7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LENBQUM7RUFFRixPQUFPYixPQUFPLENBQUMsWUFBSztJQUNsQixJQUFJdUcsSUFBSSxNQUFBM0QsTUFBQSxDQUFBQyxrQkFBQSxDQUFPMkQsYUFBYSxHQUFBM0Qsa0JBQUEsQ0FBS3lELGVBQWUsRUFBQztJQUNqRCxJQUFJRCxPQUFPLEtBQUssUUFBUSxFQUFFO01BQ3hCRSxJQUFJLEdBQUdOLG1CQUFtQixDQUFBLENBQUssQ0FBQ00sSUFBSSxDQUFDO0lBQ3ZDO0lBQ0EsT0FBT0EsSUFBeUM7RUFDbEQsQ0FBQyxFQUFFLENBQUNDLGFBQWEsRUFBRUYsZUFBZSxFQUFFRCxPQUFPLENBQUMsQ0FBQztBQUMvQyIsImZpbGUiOiJjb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVDb2x1bW5zLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTZWxlY3Rpb25Db250cm9sLCBTZWxlY3Rpb25IZWFkZXJDb250cm9sIH0gZnJvbSAnLi4vZmVhdHVyZXMvU2VsZWN0aW9uQ29sdW1uJztcbmltcG9ydCB7IEV4cGFuZFRyaWdnZXIgfSBmcm9tICcuLi9mZWF0dXJlcy9FeHBhbmRUcmlnZ2VyJztcbmltcG9ydCB7IEhlYWRlckNlbGwgfSBmcm9tICcuLi9yZW5kZXJlcnMvSGVhZGVyQ2VsbCc7XG5pbXBvcnQgeyBCb2R5Q2VsbCB9IGZyb20gJy4uL3JlbmRlcmVycy9Cb2R5Q2VsbCc7XG5pbXBvcnQgeyBUQUJMRV9ERUZBVUxUX1BSRUZJWCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBpc0NvbHVtbkdyb3VwIH0gZnJvbSAnLi9jb2x1bW5VdGlsJztcbmZ1bmN0aW9uIG1ha2VFeHBhbmRUcmFuc2Zvcm0oY29uZmlnKSB7XG4gICAgY29uc3QgeyBleHBhbmRhYmxlLCBtZXJnZWRFeHBhbmRlZFJvd0tleXMsIHRyaWdnZXJFeHBhbmQsIGdldFJvd0tleSB9ID0gY29uZmlnO1xuICAgIGNvbnN0IGN1c3RvbUV4cGFuZEljb24gPSBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuZXhwYW5kSWNvbjtcbiAgICBjb25zdCByb3dFeHBhbmRhYmxlID0gZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLnJvd0V4cGFuZGFibGU7XG4gICAgLy8gTygxKSBwZXItcm93IGV4cGFuc2lvbiBsb29rdXAg4oCUIGAuaW5jbHVkZXNgIGhlcmUgcmFuIG9uY2UgcGVyIHJlbmRlcmVkIHJvdy5cbiAgICBjb25zdCBleHBhbmRlZEtleVNldCA9IG5ldyBTZXQobWVyZ2VkRXhwYW5kZWRSb3dLZXlzKTtcbiAgICByZXR1cm4gKGNvbHVtbnMpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogJ19fZXhwYW5kX18nLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogRVhQQU5EX0NPTFVNTl9DTFMsXG4gICAgICAgICAgICAgICAgLy8gSG9ub3IgYGV4cGFuZGFibGUuY29sdW1uV2lkdGhgIC8gYGNvbHVtblRpdGxlYCAvIGBmaXhlZGA7XG4gICAgICAgICAgICAgICAgLy8gZGVmYXVsdCB0byBhIGZpeGVkIDE2cHggY29sdW1uIChjaGV2cm9uLW9ubHksIHBhZGRpbmc6IDApLlxuICAgICAgICAgICAgICAgIHdpZHRoOiAoX2EgPSBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuY29sdW1uV2lkdGgpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDE2LFxuICAgICAgICAgICAgICAgIHRpdGxlOiBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuY29sdW1uVGl0bGUsXG4gICAgICAgICAgICAgICAgZml4ZWQ6IChleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuZml4ZWQpID09PSB0cnVlXG4gICAgICAgICAgICAgICAgICAgID8gJ2xlZnQnXG4gICAgICAgICAgICAgICAgICAgIDogKGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5maXhlZCkgPT09IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuZml4ZWQsXG4gICAgICAgICAgICAgICAgcmVuZGVyOiAoXywgcmVjb3JkLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBIb25vciBgcm93RXhwYW5kYWJsZWA6IHdoZW4gdGhlIHByZWRpY2F0ZSBkZW5pZXMgYSByZWNvcmQsIHJlbmRlciBub1xuICAgICAgICAgICAgICAgICAgICAvLyBjaGV2cm9uIGF0IGFsbCAodGhlIHJvdyBpcyBub24tZXhwYW5kYWJsZSkuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbkV4cGFuZCA9IHJvd0V4cGFuZGFibGUgPyByb3dFeHBhbmRhYmxlKHJlY29yZCkgOiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbkV4cGFuZClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWNvcmRLZXkgPSBnZXRSb3dLZXkocmVjb3JkLCBpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4cGFuZGVkID0gZXhwYW5kZWRLZXlTZXQuaGFzKHJlY29yZEtleSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXN0b21FeHBhbmRJY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VzdG9tRXhwYW5kSWNvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4Q2xzOiBUQUJMRV9ERUZBVUxUX1BSRUZJWCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkV4cGFuZDogKHJlYywgZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyRXhwYW5kKGdldFJvd0tleShyZWMsIGluZGV4KSwgcmVjKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChfanN4KEV4cGFuZFRyaWdnZXIsIHsgZXhwYW5kZWQ6IGV4cGFuZGVkLCByZWNvcmRLZXk6IHJlY29yZEtleSwgcmVjb3JkOiByZWNvcmQsIG9uVG9nZ2xlOiB0cmlnZ2VyRXhwYW5kIH0pKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC4uLmNvbHVtbnMsXG4gICAgICAgIF07XG4gICAgfTtcbn1cbmZ1bmN0aW9uIG1ha2VTZWxlY3Rpb25UcmFuc2Zvcm0oY29uZmlnKSB7XG4gICAgdmFyIF9hO1xuICAgIGNvbnN0IHsgcm93U2VsZWN0aW9uLCBtZXJnZWRTZWxlY3RlZFJvd0tleXMsIGNoZWNrYm94UHJvcHNNYXAsIGlzQWxsU2VsZWN0ZWQsIGlzSW5kZXRlcm1pbmF0ZSwgdHJpZ2dlclNlbGVjdGlvbiwgdHJpZ2dlclNlbGVjdEFsbCwgZ2V0Um93S2V5LCB9ID0gY29uZmlnO1xuICAgIGlmICghcm93U2VsZWN0aW9uKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBzZWxlY3Rpb25UeXBlID0gKF9hID0gcm93U2VsZWN0aW9uLnR5cGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6ICdjaGVja2JveCc7XG4gICAgLy8gTygxKSBwZXItcm93IHNlbGVjdGlvbiBsb29rdXAg4oCUIGAuaW5jbHVkZXNgIGhlcmUgcmFuIG9uY2UgcGVyIHJlbmRlcmVkIHJvdy5cbiAgICBjb25zdCBzZWxlY3RlZEtleVNldCA9IG5ldyBTZXQobWVyZ2VkU2VsZWN0ZWRSb3dLZXlzKTtcbiAgICByZXR1cm4gKGNvbHVtbnMpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHsga2V5OiAnX19zZWxlY3Rpb25fXycsIGNsYXNzTmFtZTogU0VMRUNUSU9OX0NPTFVNTl9DTFMsIHdpZHRoOiAoX2EgPSByb3dTZWxlY3Rpb24uY29sdW1uV2lkdGgpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDE2LCBmaXhlZDogcm93U2VsZWN0aW9uLmZpeGVkID8gJ2xlZnQnIDogdW5kZWZpbmVkIH0sIChzZWxlY3Rpb25UeXBlID09PSAnY2hlY2tib3gnXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIHJlbmRlckhlYWRlcjogKCkgPT4gKF9qc3goU2VsZWN0aW9uSGVhZGVyQ29udHJvbCwgeyBjaGVja2VkOiBpc0FsbFNlbGVjdGVkLCBpbmRldGVybWluYXRlOiBpc0luZGV0ZXJtaW5hdGUsIG9uQ2hhbmdlOiB0cmlnZ2VyU2VsZWN0QWxsIH0pKSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB7fSkpLCB7IHJlbmRlcjogKF8sIHJlY29yZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkS2V5ID0gZ2V0Um93S2V5KHJlY29yZCwgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByb3dQcm9wcyA9IGNoZWNrYm94UHJvcHNNYXAuZ2V0KHJlY29yZEtleSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoX2pzeChTZWxlY3Rpb25Db250cm9sLCB7IHR5cGU6IHNlbGVjdGlvblR5cGUsIGNoZWNrZWQ6IHNlbGVjdGVkS2V5U2V0LmhhcyhyZWNvcmRLZXkpLCByb3dQcm9wczogcm93UHJvcHMsIHJlY29yZEtleTogcmVjb3JkS2V5LCBvbkNoYW5nZTogdHJpZ2dlclNlbGVjdGlvbiB9KSk7XG4gICAgICAgICAgICAgICAgfSB9KSxcbiAgICAgICAgICAgIC4uLmNvbHVtbnMsXG4gICAgICAgIF07XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGFyaWFTb3J0Rm9yKG9yZGVyKSB7XG4gICAgaWYgKG9yZGVyID09PSAnYXNjZW5kJylcbiAgICAgICAgcmV0dXJuICdhc2NlbmRpbmcnO1xuICAgIGlmIChvcmRlciA9PT0gJ2Rlc2NlbmQnKVxuICAgICAgICByZXR1cm4gJ2Rlc2NlbmRpbmcnO1xuICAgIHJldHVybiAnbm9uZSc7XG59XG4vLyBTdGFibGUgZW1wdHktZmlsdGVyIHJlZmVyZW5jZS4gV2l0aG91dCB0aGlzLCBgZmlsdGVyc1trZXldID8/IFtdYCBjcmVhdGVzIGFcbi8vIGZyZXNoIGBbXWAgb24gZXZlcnkgcmVuZGVyLCB3aGljaCB0aHJhc2hlcyBgRmlsdGVyVHJpZ2dlcmAnc1xuLy8gYHVzZUVmZmVjdChbc2VsZWN0ZWRLZXlzXSlgIGFuZCBjYXVzZXMgYW4gaW5maW5pdGUgc2V0U3RhdGUgbG9vcCBhZnRlclxuLy8gY29uZmlybSAvIHJlc2V0LlxuY29uc3QgRU1QVFlfRklMVEVSX1ZBTFVFID0gW107XG5mdW5jdGlvbiBtYWtlSGVhZGVyVHJhbnNmb3JtKGNvbmZpZykge1xuICAgIGNvbnN0IHsgc2l6ZSwgc29ydGVyLCBzZXRTb3J0ZXIsIGZpbHRlcnMsIHNldEZpbHRlcnMgfSA9IGNvbmZpZztcbiAgICByZXR1cm4gKGNvbHVtbnMpID0+IGNvbHVtbnMubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKGlzQ29sdW1uR3JvdXAoY29sdW1uKSlcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW47XG4gICAgICAgIGNvbnN0IGlzU29ydGFibGUgPSBCb29sZWFuKGNvbHVtbi5zb3J0ZXIpO1xuICAgICAgICBjb25zdCBhY3RpdmVPcmRlciA9IHNvcnRlci5jb2x1bW5LZXkgPT09IGNvbHVtbi5rZXkgPyAoX2EgPSBzb3J0ZXIub3JkZXIpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG51bGwgOiBudWxsO1xuICAgICAgICBjb25zdCBjb2x1bW5LZXkgPSBjb2x1bW4ua2V5ICE9IG51bGwgPyBTdHJpbmcoY29sdW1uLmtleSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGZpbHRlclNlbGVjdGVkID0gY29sdW1uS2V5ICE9IG51bGwgPyAoKF9iID0gZmlsdGVyc1tjb2x1bW5LZXldKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBFTVBUWV9GSUxURVJfVkFMVUUpIDogRU1QVFlfRklMVEVSX1ZBTFVFO1xuICAgICAgICAvLyBDb21wb3NlIG9uSGVhZGVyQ2VsbCBzbyB3ZSBkb24ndCBjbG9iYmVyIHVzZXItcHJvdmlkZWQgYXR0cmlidXRlcy5cbiAgICAgICAgY29uc3QgdXNlck9uSGVhZGVyQ2VsbCA9IGNvbHVtbi5vbkhlYWRlckNlbGw7XG4gICAgICAgIGNvbnN0IG9uSGVhZGVyQ2VsbCA9IChjb2wsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBjb25zdCB1c2VyQXR0cnMgPSAoX2EgPSB1c2VyT25IZWFkZXJDZWxsID09PSBudWxsIHx8IHVzZXJPbkhlYWRlckNlbGwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHVzZXJPbkhlYWRlckNlbGwoY29sLCBpbmRleCkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHt9O1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdXNlckF0dHJzKSwgKGlzU29ydGFibGUgPyB7ICdhcmlhLXNvcnQnOiBhcmlhU29ydEZvcihhY3RpdmVPcmRlcikgfSA6IG51bGwpKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb25GaWx0ZXJDaGFuZ2UgPSAobmV4dCkgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbHVtbktleSA9PSBudWxsKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIHNldEZpbHRlcnMoKGN1cnJlbnQpID0+IChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGN1cnJlbnQpLCB7IFtjb2x1bW5LZXldOiBuZXh0Lmxlbmd0aCA/IG5leHQgOiBudWxsIH0pKSk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGNvbHVtbiksIHsgb25IZWFkZXJDZWxsLCB0aXRsZTogY29sdW1uLnJlbmRlckhlYWRlclxuICAgICAgICAgICAgICAgID8gY29sdW1uLnJlbmRlckhlYWRlcih7IGNvbHVtbiB9KVxuICAgICAgICAgICAgICAgIDogKF9qc3goSGVhZGVyQ2VsbCwgeyBjb2x1bW46IGNvbHVtbiwgc2l6ZTogc2l6ZSwgc29ydE9yZGVyOiBhY3RpdmVPcmRlciwgb25Tb3J0Q2xpY2s6ICgpID0+IHNldFNvcnRlcigoY3VycmVudFNvcnRlcikgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbktleTogY29sdW1uLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyOiBjdXJyZW50U29ydGVyLmNvbHVtbktleSAhPT0gY29sdW1uLmtleSB8fCBjdXJyZW50U29ydGVyLm9yZGVyID09PSBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnYXNjZW5kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY3VycmVudFNvcnRlci5vcmRlciA9PT0gJ2FzY2VuZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnZGVzY2VuZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICB9KSksIGZpbHRlclNlbGVjdGVkOiBmaWx0ZXJTZWxlY3RlZCwgb25GaWx0ZXJDaGFuZ2U6IG9uRmlsdGVyQ2hhbmdlIH0pKSB9KTtcbiAgICB9KTtcbn1cbmNvbnN0IFNQQUNFUl9DT0xVTU5fQ0xTID0gJ29tLWNvbXBvbmVudC11aS10YWJsZS1jZWxsLS1zcGFjZXInO1xuY29uc3QgRVhQQU5EX0NPTFVNTl9DTFMgPSAnb20tY29tcG9uZW50LXVpLXRhYmxlLWNlbGwtLWV4cGFuZCc7XG5jb25zdCBTRUxFQ1RJT05fQ09MVU1OX0NMUyA9ICdvbS1jb21wb25lbnQtdWktdGFibGUtY2VsbC0tc2VsZWN0aW9uJztcbmZ1bmN0aW9uIG1ha2VTcGFjZXJUcmFuc2Zvcm0oKSB7XG4gICAgcmV0dXJuIChjb2x1bW5zKSA9PiBbXG4gICAgICAgIHsga2V5OiAnX19zcGFjZXJfc3RhcnRfXycsIHdpZHRoOiAxNiwgdGl0bGU6ICcnLCBjbGFzc05hbWU6IFNQQUNFUl9DT0xVTU5fQ0xTLCByZW5kZXI6ICgpID0+IG51bGwgfSxcbiAgICAgICAgLi4uY29sdW1ucyxcbiAgICAgICAgeyBrZXk6ICdfX3NwYWNlcl9lbmRfXycsIHdpZHRoOiAxNiwgdGl0bGU6ICcnLCBjbGFzc05hbWU6IFNQQUNFUl9DT0xVTU5fQ0xTLCByZW5kZXI6ICgpID0+IG51bGwgfSxcbiAgICBdO1xufVxuZnVuY3Rpb24gbWFrZVJlbmRlclRyYW5zZm9ybSgpIHtcbiAgICByZXR1cm4gKGNvbHVtbnMpID0+IGNvbHVtbnMubWFwKChjb2x1bW4pID0+IHtcbiAgICAgICAgaWYgKGlzQ29sdW1uR3JvdXAoY29sdW1uKSlcbiAgICAgICAgICAgIHJldHVybiBjb2x1bW47XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGNvbHVtbiksIHsgXG4gICAgICAgICAgICAvLyBCb2R5Q2VsbCBpcyBpbnRlbnRpb25hbGx5IENBTExFRCBhcyBhIGZ1bmN0aW9uLCBub3QgcmVuZGVyZWQgYXNcbiAgICAgICAgICAgIC8vIGA8Qm9keUNlbGwgLz5gLiBUaGUga2VybmVsJ3MgYHJlbmRlcmAgY29udHJhY3QgYWxsb3dzIHJldHVybmluZyBlaXRoZXJcbiAgICAgICAgICAgIC8vIGEgUmVhY3ROb2RlIG9yIGEgYHsgY2hpbGRyZW4sIHByb3BzIH1gIGNlbGwtc3Bhbm5pbmcgZGVzY3JpcHRvciwgYW5kXG4gICAgICAgICAgICAvLyBCb2R5Q2VsbCBmb3J3YXJkcyB0aGF0IGRlc2NyaXB0b3IgdGhyb3VnaCBmb3IgY29sU3BhbiAvIHJvd1NwYW4gc3VwcG9ydC5cbiAgICAgICAgICAgIC8vIFdyYXBwaW5nIGl0IGluIEpTWCB3b3VsZCBjb2xsYXBzZSB0aGUgZGVzY3JpcHRvciBpbnRvIGFuIGVsZW1lbnQgYW5kXG4gICAgICAgICAgICAvLyBicmVhayBjZWxsIG1lcmdpbmcg4oCUIGRvIG5vdCBcImZpeFwiIHRoaXMgaW50byBhbiBlbGVtZW50LlxuICAgICAgICAgICAgcmVuZGVyOiAodmFsdWUsIHJlY29yZCwgaW5kZXgpID0+IEJvZHlDZWxsKHtcbiAgICAgICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgcmVjb3JkLFxuICAgICAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgfSkgfSk7XG4gICAgfSk7XG59XG4vKipcbiAqIFJldHVybnMgY29sdW1ucyByZWFkeSB0byBiZSBwYXNzZWQgdG8gdGhlIHRhYmxlIGtlcm5lbC5cbiAqXG4gKiBUaGUgcmV0dXJuZWQgc2hhcGUgSVMgc3RydWN0dXJhbGx5IHRoZSBrZXJuZWwncyBgQ29sdW1uc1R5cGU8VD5gOlxuICogICAtIEV2ZXJ5IGxlYWYgY29sdW1uJ3MgYHJlbmRlcmAgaXMgcmVwbGFjZWQgYnkgYG1ha2VSZW5kZXJUcmFuc2Zvcm1gLCB3aGljaFxuICogICAgIGFsd2F5cyByZXR1cm5zIGEgYFJlYWN0Tm9kZWAgKEJvZHlDZWxsIGhhbmRsZXMgYFRhYmxlQ2VsbENvbnRlbnRWYWx1ZWAgL1xuICogICAgIGBUYWJsZVJlbmRlcmVkQ2VsbGAgZXh0cmFzIGFuZCBlbWl0cyBSZWFjdE5vZGUvUmVuZGVyZWRDZWxsKS5cbiAqICAgLSBFdmVyeSBsZWFmIGNvbHVtbidzIGB0aXRsZWAgaXMgZWl0aGVyIGEgUmVhY3ROb2RlIG9yIHJlcGxhY2VkIGJ5XG4gKiAgICAgYDxIZWFkZXJDZWxsIC8+YC5cbiAqIEJlY2F1c2UgVFMgY2FuJ3QgdHJhY2sgdGhhdCB0aG9zZSByZXBsYWNlbWVudHMgaGF2ZSBoYXBwZW5lZCBhY3Jvc3MgdGhlXG4gKiBgdHJhbnNmb3Jtcy5yZWR1Y2VgIGNoYWluLCBhIHNpbmdsZSBpbnRlcm5hbCBjYXN0IGlzIHJlcXVpcmVkIOKAlCBjYWxsIHNpdGVzIG5vXG4gKiBsb25nZXIgbmVlZCB0aGVpciBvd24gYGFzIHVua25vd24gYXMgSW50ZXJuYWxDb2x1bW5zVHlwZTxUPmAgY2FzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVRhYmxlQ29sdW1ucyhjb25maWcpIHtcbiAgICBjb25zdCB7IGNvbHVtbnMsIHZhcmlhbnQsIGV4cGFuZGFibGUsIHJvd1NlbGVjdGlvbiwgbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLCBtZXJnZWRTZWxlY3RlZFJvd0tleXMsIGNoZWNrYm94UHJvcHNNYXAsIGlzQWxsU2VsZWN0ZWQsIGlzSW5kZXRlcm1pbmF0ZSwgdHJpZ2dlckV4cGFuZCwgdHJpZ2dlclNlbGVjdGlvbiwgdHJpZ2dlclNlbGVjdEFsbCwgc29ydGVyLCBzZXRTb3J0ZXIsIGZpbHRlcnMsIHNldEZpbHRlcnMsIHNpemUsIGdldFJvd0tleSwgfSA9IGNvbmZpZztcbiAgICAvLyBUaGUgdXNlcidzIGRhdGEgY29sdW1ucyBvbmx5IGRlcGVuZCBvbiB0aGUgaGVhZGVyIC8gcmVuZGVyIGlucHV0c1xuICAgIC8vIChzb3J0LCBmaWx0ZXIsIHNpemUpIOKAlCBOT1Qgb24gc2VsZWN0aW9uIG9yIGV4cGFuc2lvbiBzdGF0ZS4gTWVtb2lzaW5nIHRoZW1cbiAgICAvLyBvbiB0aGVpciBvd24gbWVhbnMgdG9nZ2xpbmcgYSBjaGVja2JveCBvciBjaGV2cm9uIG5vIGxvbmdlciByZWJ1aWxkcyBhbmRcbiAgICAvLyByZS13cmFwcyB0aGUgcmVuZGVyIGNsb3N1cmUgb2YgKmV2ZXJ5KiBkYXRhIGNvbHVtbjsgb25seSB0aGUgc21hbGxcbiAgICAvLyBzZWxlY3Rpb24vZXhwYW5kIHByZWZpeCBiZWxvdyBpcyByZWJ1aWx0LiBgbWFrZUhlYWRlclRyYW5zZm9ybWAgYW5kXG4gICAgLy8gYG1ha2VSZW5kZXJUcmFuc2Zvcm1gIGFyZSBwZXItY29sdW1uIGluZGVwZW5kZW50IG1hcHMsIHNvIGFwcGx5aW5nIHRoZW0gdG9cbiAgICAvLyB0aGUgdXNlciBjb2x1bW5zIGFuZCB0aGUgcHJlZml4IHNlcGFyYXRlbHkgYW5kIGNvbmNhdGVuYXRpbmcgaXMgZXF1aXZhbGVudFxuICAgIC8vIHRvIHRoZSBvcmlnaW5hbCBzaW5nbGUgcmVkdWNlLWNoYWluLlxuICAgIC8vXG4gICAgLy8gRGVwLWxpc3Qgbm90ZTogdGhlIHRyYW5zZm9ybSBmYWN0b3JpZXMgY2FwdHVyZSB0aGUgd2hvbGUgYGNvbmZpZ2AsIGJ1dFxuICAgIC8vIGV2ZXJ5IGNhbGxiYWNrIGluIGl0IChgc2V0U29ydGVyYCwgYHRyaWdnZXJFeHBhbmRgLCBgZ2V0Um93S2V5YCwg4oCmKSBpcyBhXG4gICAgLy8gc3RhYmxlIGB1c2VNZW1vaXplZEZuYCwgc28gbGlzdGluZyB0aGUgZ2VudWluZSB2YWx1ZSBpbnB1dHMgaXMgc3VmZmljaWVudFxuICAgIC8vIGFuZCBpbnRlbnRpb25hbC4gS2VlcCB0aGUgbGlzdHMgaW4gc3luYyB3aGVuIGFkZGluZyBpbnB1dHMuXG4gICAgY29uc3QgYmFzZVVzZXJDb2x1bW5zID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGxldCBjb2xzID0gbWFrZUhlYWRlclRyYW5zZm9ybShjb25maWcpKGNvbHVtbnMpO1xuICAgICAgICBjb2xzID0gbWFrZVJlbmRlclRyYW5zZm9ybSgpKGNvbHMpO1xuICAgICAgICByZXR1cm4gY29scztcbiAgICB9LCBbY29sdW1ucywgc29ydGVyLCBmaWx0ZXJzLCBzaXplLCBzZXRTb3J0ZXIsIHNldEZpbHRlcnNdKTtcbiAgICAvLyBUaGUgc2VsZWN0aW9uIC8gZXhwYW5kIHByZWZpeCBjYXJyaWVzIGxpdmUgc2VsZWN0ZWQvZXhwYW5kZWQgc3RhdGUgaW4gaXRzXG4gICAgLy8gcmVuZGVyIG91dHB1dCwgd2hpY2ggaXMgdGhlIHNpZ25hbCB0aGF0IHJlLXJlbmRlcnMgdGhlIGFmZmVjdGVkIHJvd3Mg4oCUIHNvIGl0XG4gICAgLy8gbXVzdCByZWJ1aWxkIG9uIGV2ZXJ5IHRvZ2dsZS4gSXQgaXMgYXQgbW9zdCB0d28gY29sdW1ucywgc28gdGhpcyBpcyBjaGVhcC5cbiAgICBjb25zdCBwcmVmaXhDb2x1bW5zID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGxldCBjb2xzID0gW107XG4gICAgICAgIGlmIChleHBhbmRhYmxlICYmIGV4cGFuZGFibGUuc2hvd0V4cGFuZENvbHVtbiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGNvbHMgPSBtYWtlRXhwYW5kVHJhbnNmb3JtKGNvbmZpZykoY29scyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uVHJhbnNmb3JtID0gcm93U2VsZWN0aW9uID8gbWFrZVNlbGVjdGlvblRyYW5zZm9ybShjb25maWcpIDogbnVsbDtcbiAgICAgICAgaWYgKHNlbGVjdGlvblRyYW5zZm9ybSkge1xuICAgICAgICAgICAgY29scyA9IHNlbGVjdGlvblRyYW5zZm9ybShjb2xzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSdW4gdGhlIHByZWZpeCB0aHJvdWdoIHRoZSBzYW1lIGhlYWRlci9yZW5kZXIgbWFwcyB0aGUgdXNlciBjb2x1bW5zIGdldCBzb1xuICAgICAgICAvLyB0aGUgZmluYWwgYXJyYXkgaXMgYnl0ZS1mb3ItYnl0ZSB0aGUgb3JpZ2luYWwgc2luZ2xlLXBpcGVsaW5lIG91dHB1dC5cbiAgICAgICAgY29scyA9IG1ha2VIZWFkZXJUcmFuc2Zvcm0oY29uZmlnKShjb2xzKTtcbiAgICAgICAgY29scyA9IG1ha2VSZW5kZXJUcmFuc2Zvcm0oKShjb2xzKTtcbiAgICAgICAgcmV0dXJuIGNvbHM7XG4gICAgfSwgW1xuICAgICAgICBleHBhbmRhYmxlLFxuICAgICAgICByb3dTZWxlY3Rpb24sXG4gICAgICAgIG1lcmdlZEV4cGFuZGVkUm93S2V5cyxcbiAgICAgICAgbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzLFxuICAgICAgICBjaGVja2JveFByb3BzTWFwLFxuICAgICAgICBpc0FsbFNlbGVjdGVkLFxuICAgICAgICBpc0luZGV0ZXJtaW5hdGUsXG4gICAgICAgIHRyaWdnZXJFeHBhbmQsXG4gICAgICAgIHRyaWdnZXJTZWxlY3Rpb24sXG4gICAgICAgIHRyaWdnZXJTZWxlY3RBbGwsXG4gICAgICAgIHNvcnRlcixcbiAgICAgICAgc2V0U29ydGVyLFxuICAgICAgICBmaWx0ZXJzLFxuICAgICAgICBzZXRGaWx0ZXJzLFxuICAgICAgICBzaXplLFxuICAgICAgICBnZXRSb3dLZXksXG4gICAgXSk7XG4gICAgcmV0dXJuIHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBsZXQgY29scyA9IFsuLi5wcmVmaXhDb2x1bW5zLCAuLi5iYXNlVXNlckNvbHVtbnNdO1xuICAgICAgICBpZiAodmFyaWFudCA9PT0gJ3N0cm9rZScpIHtcbiAgICAgICAgICAgIGNvbHMgPSBtYWtlU3BhY2VyVHJhbnNmb3JtKCkoY29scyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbHM7XG4gICAgfSwgW3ByZWZpeENvbHVtbnMsIGJhc2VVc2VyQ29sdW1ucywgdmFyaWFudF0pO1xufSIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
285
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvVGFibGUvY29yZS91c2VUYWJsZUNvbHVtbnMuanMiLCJjb21wb25lbnRzL1RhYmxlL3NyYy9jb21wb25lbnRzL1RhYmxlL2NvcmUvdXNlVGFibGVDb2x1bW5zLnRzeCJdLCJuYW1lcyI6WyJqc3giLCJfanN4IiwidXNlTWVtbyIsIlNlbGVjdGlvbkNvbnRyb2wiLCJTZWxlY3Rpb25IZWFkZXJDb250cm9sIiwiRXhwYW5kVHJpZ2dlciIsIkhlYWRlckNlbGwiLCJCb2R5Q2VsbCIsIlRBQkxFX0RFRkFVTFRfUFJFRklYIiwiaXNDb2x1bW5Hcm91cCIsIm1ha2VFeHBhbmRUcmFuc2Zvcm0iLCJjb25maWciLCJleHBhbmRhYmxlIiwibWVyZ2VkRXhwYW5kZWRSb3dLZXlzIiwidHJpZ2dlckV4cGFuZCIsImdldFJvd0tleSIsImN1c3RvbUV4cGFuZEljb24iLCJleHBhbmRJY29uIiwicm93RXhwYW5kYWJsZSIsImV4cGFuZGVkS2V5U2V0IiwiU2V0IiwiY29sdW1ucyIsIl9hIiwia2V5IiwiY2xhc3NOYW1lIiwiRVhQQU5EX0NPTFVNTl9DTFMiLCJ3aWR0aCIsImNvbHVtbldpZHRoIiwidGl0bGUiLCJjb2x1bW5UaXRsZSIsImZpeGVkIiwidW5kZWZpbmVkIiwicmVuZGVyIiwiXyIsInJlY29yZCIsImluZGV4IiwiY2FuRXhwYW5kIiwicmVjb3JkS2V5IiwiZXhwYW5kZWQiLCJoYXMiLCJwcmVmaXhDbHMiLCJvbkV4cGFuZCIsInJlYyIsImUiLCJzdG9wUHJvcGFnYXRpb24iLCJvblRvZ2dsZSIsImNvbmNhdCIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1ha2VTZWxlY3Rpb25UcmFuc2Zvcm0iLCJyb3dTZWxlY3Rpb24iLCJtZXJnZWRTZWxlY3RlZFJvd0tleXMiLCJjaGVja2JveFByb3BzTWFwIiwiaXNBbGxTZWxlY3RlZCIsImlzSW5kZXRlcm1pbmF0ZSIsInRyaWdnZXJTZWxlY3Rpb24iLCJ0cmlnZ2VyU2VsZWN0QWxsIiwic2VsZWN0aW9uVHlwZSIsInR5cGUiLCJzZWxlY3RlZEtleVNldCIsIk9iamVjdCIsImFzc2lnbiIsIlNFTEVDVElPTl9DT0xVTU5fQ0xTIiwicmVuZGVySGVhZGVyIiwiY2hlY2tlZCIsImluZGV0ZXJtaW5hdGUiLCJvbkNoYW5nZSIsInJvd1Byb3BzIiwiZ2V0IiwiYXJpYVNvcnRGb3IiLCJvcmRlciIsIkVNUFRZX0ZJTFRFUl9WQUxVRSIsIm1ha2VIZWFkZXJUcmFuc2Zvcm0iLCJzb3J0ZXIiLCJzZXRTb3J0ZXIiLCJmaWx0ZXJzIiwic2V0RmlsdGVycyIsIm1hcCIsImNvbHVtbiIsIl9iIiwiaXNTb3J0YWJsZSIsIkJvb2xlYW4iLCJhY3RpdmVPcmRlciIsImNvbHVtbktleSIsIlN0cmluZyIsImZpbHRlclNlbGVjdGVkIiwidXNlck9uSGVhZGVyQ2VsbCIsIm9uSGVhZGVyQ2VsbCIsImNvbCIsInVzZXJBdHRycyIsIm9uRmlsdGVyQ2hhbmdlIiwibmV4dCIsImN1cnJlbnQiLCJfZGVmaW5lUHJvcGVydHkiLCJsZW5ndGgiLCJzb3J0T3JkZXIiLCJvblNvcnRDbGljayIsImN1cnJlbnRTb3J0ZXIiLCJTUEFDRVJfQ09MVU1OX0NMUyIsIm1ha2VTcGFjZXJUcmFuc2Zvcm0iLCJtYWtlUmVuZGVyVHJhbnNmb3JtIiwidmFsdWUiLCJ1c2VUYWJsZUNvbHVtbnMiLCJ2YXJpYW50IiwiYmFzZVVzZXJDb2x1bW5zIiwiY29scyIsInByZWZpeENvbHVtbnMiLCJzaG93RXhwYW5kQ29sdW1uIiwic2VsZWN0aW9uVHJhbnNmb3JtIl0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQVNBLEdBQUcsSUFBSUMsSUFBSSxRQUFRLG1CQUFtQjtBQ0EvQyxTQUFTQyxPQUFPLFFBQWtCLE9BQU87QUFDekMsU0FBU0MsZ0JBQWdCLEVBQUVDLHNCQUFzQixRQUFRLDZCQUE2QjtBQUN0RixTQUFTQyxhQUFhLFFBQVEsMkJBQTJCO0FBQ3pELFNBQVNDLFVBQVUsUUFBUSx5QkFBeUI7QUFDcEQsU0FBU0MsUUFBUSxRQUFRLHVCQUF1QjtBQUNoRCxT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TyxLQUFLLFFBQVEsRUFBRTtNQUN4QkUsSUFBSSxHQUFHTixtQkFBbUIsQ0FBQSxDQUFLLENBQUNNLElBQUksQ0FBQztJQUN2QztJQUNBLE9BQU9BLElBQXlDO0VBQ2xELENBQUMsRUFBRSxDQUFDQyxhQUFhLEVBQUVGLGVBQWUsRUFBRUQsT0FBTyxDQUFDLENBQUM7QUFDL0MiLCJmaWxlIjoiY29tcG9uZW50cy9UYWJsZS9jb3JlL3VzZVRhYmxlQ29sdW1ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgU2VsZWN0aW9uQ29udHJvbCwgU2VsZWN0aW9uSGVhZGVyQ29udHJvbCB9IGZyb20gJy4uL2ZlYXR1cmVzL1NlbGVjdGlvbkNvbHVtbic7XG5pbXBvcnQgeyBFeHBhbmRUcmlnZ2VyIH0gZnJvbSAnLi4vZmVhdHVyZXMvRXhwYW5kVHJpZ2dlcic7XG5pbXBvcnQgeyBIZWFkZXJDZWxsIH0gZnJvbSAnLi4vcmVuZGVyZXJzL0hlYWRlckNlbGwnO1xuaW1wb3J0IHsgQm9keUNlbGwgfSBmcm9tICcuLi9yZW5kZXJlcnMvQm9keUNlbGwnO1xuaW1wb3J0IHsgVEFCTEVfREVGQVVMVF9QUkVGSVggfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgaXNDb2x1bW5Hcm91cCB9IGZyb20gJy4vY29sdW1uVXRpbCc7XG5mdW5jdGlvbiBtYWtlRXhwYW5kVHJhbnNmb3JtKGNvbmZpZykge1xuICAgIGNvbnN0IHsgZXhwYW5kYWJsZSwgbWVyZ2VkRXhwYW5kZWRSb3dLZXlzLCB0cmlnZ2VyRXhwYW5kLCBnZXRSb3dLZXkgfSA9IGNvbmZpZztcbiAgICBjb25zdCBjdXN0b21FeHBhbmRJY29uID0gZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmV4cGFuZEljb247XG4gICAgY29uc3Qgcm93RXhwYW5kYWJsZSA9IGV4cGFuZGFibGUgPT09IG51bGwgfHwgZXhwYW5kYWJsZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwYW5kYWJsZS5yb3dFeHBhbmRhYmxlO1xuICAgIC8vIE8oMSkgcGVyLXJvdyBleHBhbnNpb24gbG9va3VwIOKAlCBgLmluY2x1ZGVzYCBoZXJlIHJhbiBvbmNlIHBlciByZW5kZXJlZCByb3cuXG4gICAgY29uc3QgZXhwYW5kZWRLZXlTZXQgPSBuZXcgU2V0KG1lcmdlZEV4cGFuZGVkUm93S2V5cyk7XG4gICAgcmV0dXJuIChjb2x1bW5zKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6ICdfX2V4cGFuZF9fJyxcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU6IEVYUEFORF9DT0xVTU5fQ0xTLFxuICAgICAgICAgICAgICAgIC8vIEhvbm9yIGBleHBhbmRhYmxlLmNvbHVtbldpZHRoYCAvIGBjb2x1bW5UaXRsZWAgLyBgZml4ZWRgO1xuICAgICAgICAgICAgICAgIC8vIGRlZmF1bHQgdG8gYSBmaXhlZCAxNnB4IGNvbHVtbiAoY2hldnJvbi1vbmx5LCBwYWRkaW5nOiAwKS5cbiAgICAgICAgICAgICAgICB3aWR0aDogKF9hID0gZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmNvbHVtbldpZHRoKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAxNixcbiAgICAgICAgICAgICAgICB0aXRsZTogZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmNvbHVtblRpdGxlLFxuICAgICAgICAgICAgICAgIGZpeGVkOiAoZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmZpeGVkKSA9PT0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICA/ICdsZWZ0J1xuICAgICAgICAgICAgICAgICAgICA6IChleHBhbmRhYmxlID09PSBudWxsIHx8IGV4cGFuZGFibGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGV4cGFuZGFibGUuZml4ZWQpID09PSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZXhwYW5kYWJsZSA9PT0gbnVsbCB8fCBleHBhbmRhYmxlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBleHBhbmRhYmxlLmZpeGVkLFxuICAgICAgICAgICAgICAgIHJlbmRlcjogKF8sIHJlY29yZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSG9ub3IgYHJvd0V4cGFuZGFibGVgOiB3aGVuIHRoZSBwcmVkaWNhdGUgZGVuaWVzIGEgcmVjb3JkLCByZW5kZXIgbm9cbiAgICAgICAgICAgICAgICAgICAgLy8gY2hldnJvbiBhdCBhbGwgKHRoZSByb3cgaXMgbm9uLWV4cGFuZGFibGUpLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5FeHBhbmQgPSByb3dFeHBhbmRhYmxlID8gcm93RXhwYW5kYWJsZShyZWNvcmQpIDogdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjYW5FeHBhbmQpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVjb3JkS2V5ID0gZ2V0Um93S2V5KHJlY29yZCwgaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHBhbmRlZCA9IGV4cGFuZGVkS2V5U2V0LmhhcyhyZWNvcmRLZXkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3VzdG9tRXhwYW5kSWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1c3RvbUV4cGFuZEljb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeENsczogVEFCTEVfREVGQVVMVF9QUkVGSVgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25FeHBhbmQ6IChyZWMsIGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckV4cGFuZChnZXRSb3dLZXkocmVjLCBpbmRleCksIHJlYyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoX2pzeChFeHBhbmRUcmlnZ2VyLCB7IGV4cGFuZGVkOiBleHBhbmRlZCwgcmVjb3JkS2V5OiByZWNvcmRLZXksIHJlY29yZDogcmVjb3JkLCBvblRvZ2dsZTogdHJpZ2dlckV4cGFuZCB9KSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICBdO1xuICAgIH07XG59XG5mdW5jdGlvbiBtYWtlU2VsZWN0aW9uVHJhbnNmb3JtKGNvbmZpZykge1xuICAgIHZhciBfYTtcbiAgICBjb25zdCB7IHJvd1NlbGVjdGlvbiwgbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzLCBjaGVja2JveFByb3BzTWFwLCBpc0FsbFNlbGVjdGVkLCBpc0luZGV0ZXJtaW5hdGUsIHRyaWdnZXJTZWxlY3Rpb24sIHRyaWdnZXJTZWxlY3RBbGwsIGdldFJvd0tleSwgfSA9IGNvbmZpZztcbiAgICBpZiAoIXJvd1NlbGVjdGlvbilcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgY29uc3Qgc2VsZWN0aW9uVHlwZSA9IChfYSA9IHJvd1NlbGVjdGlvbi50eXBlKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnY2hlY2tib3gnO1xuICAgIC8vIE8oMSkgcGVyLXJvdyBzZWxlY3Rpb24gbG9va3VwIOKAlCBgLmluY2x1ZGVzYCBoZXJlIHJhbiBvbmNlIHBlciByZW5kZXJlZCByb3cuXG4gICAgY29uc3Qgc2VsZWN0ZWRLZXlTZXQgPSBuZXcgU2V0KG1lcmdlZFNlbGVjdGVkUm93S2V5cyk7XG4gICAgcmV0dXJuIChjb2x1bW5zKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7IGtleTogJ19fc2VsZWN0aW9uX18nLCBjbGFzc05hbWU6IFNFTEVDVElPTl9DT0xVTU5fQ0xTLCB3aWR0aDogKF9hID0gcm93U2VsZWN0aW9uLmNvbHVtbldpZHRoKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAxNiwgZml4ZWQ6IHJvd1NlbGVjdGlvbi5maXhlZCA/ICdsZWZ0JyA6IHVuZGVmaW5lZCB9LCAoc2VsZWN0aW9uVHlwZSA9PT0gJ2NoZWNrYm94J1xuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICByZW5kZXJIZWFkZXI6ICgpID0+IChfanN4KFNlbGVjdGlvbkhlYWRlckNvbnRyb2wsIHsgY2hlY2tlZDogaXNBbGxTZWxlY3RlZCwgaW5kZXRlcm1pbmF0ZTogaXNJbmRldGVybWluYXRlLCBvbkNoYW5nZTogdHJpZ2dlclNlbGVjdEFsbCB9KSksXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDoge30pKSwgeyByZW5kZXI6IChfLCByZWNvcmQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlY29yZEtleSA9IGdldFJvd0tleShyZWNvcmQsIGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgcm93UHJvcHMgPSBjaGVja2JveFByb3BzTWFwLmdldChyZWNvcmRLZXkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKF9qc3goU2VsZWN0aW9uQ29udHJvbCwgeyB0eXBlOiBzZWxlY3Rpb25UeXBlLCBjaGVja2VkOiBzZWxlY3RlZEtleVNldC5oYXMocmVjb3JkS2V5KSwgcm93UHJvcHM6IHJvd1Byb3BzLCByZWNvcmRLZXk6IHJlY29yZEtleSwgb25DaGFuZ2U6IHRyaWdnZXJTZWxlY3Rpb24gfSkpO1xuICAgICAgICAgICAgICAgIH0gfSksXG4gICAgICAgICAgICAuLi5jb2x1bW5zLFxuICAgICAgICBdO1xuICAgIH07XG59XG5mdW5jdGlvbiBhcmlhU29ydEZvcihvcmRlcikge1xuICAgIGlmIChvcmRlciA9PT0gJ2FzY2VuZCcpXG4gICAgICAgIHJldHVybiAnYXNjZW5kaW5nJztcbiAgICBpZiAob3JkZXIgPT09ICdkZXNjZW5kJylcbiAgICAgICAgcmV0dXJuICdkZXNjZW5kaW5nJztcbiAgICByZXR1cm4gJ25vbmUnO1xufVxuLy8gU3RhYmxlIGVtcHR5LWZpbHRlciByZWZlcmVuY2UuIFdpdGhvdXQgdGhpcywgYGZpbHRlcnNba2V5XSA/PyBbXWAgY3JlYXRlcyBhXG4vLyBmcmVzaCBgW11gIG9uIGV2ZXJ5IHJlbmRlciwgd2hpY2ggdGhyYXNoZXMgYEZpbHRlclRyaWdnZXJgJ3Ncbi8vIGB1c2VFZmZlY3QoW3NlbGVjdGVkS2V5c10pYCBhbmQgY2F1c2VzIGFuIGluZmluaXRlIHNldFN0YXRlIGxvb3AgYWZ0ZXJcbi8vIGNvbmZpcm0gLyByZXNldC5cbmNvbnN0IEVNUFRZX0ZJTFRFUl9WQUxVRSA9IFtdO1xuZnVuY3Rpb24gbWFrZUhlYWRlclRyYW5zZm9ybShjb25maWcpIHtcbiAgICBjb25zdCB7IHNvcnRlciwgc2V0U29ydGVyLCBmaWx0ZXJzLCBzZXRGaWx0ZXJzIH0gPSBjb25maWc7XG4gICAgcmV0dXJuIChjb2x1bW5zKSA9PiBjb2x1bW5zLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGlmIChpc0NvbHVtbkdyb3VwKGNvbHVtbikpXG4gICAgICAgICAgICByZXR1cm4gY29sdW1uO1xuICAgICAgICBjb25zdCBpc1NvcnRhYmxlID0gQm9vbGVhbihjb2x1bW4uc29ydGVyKTtcbiAgICAgICAgY29uc3QgYWN0aXZlT3JkZXIgPSBzb3J0ZXIuY29sdW1uS2V5ID09PSBjb2x1bW4ua2V5ID8gKF9hID0gc29ydGVyLm9yZGVyKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsIDogbnVsbDtcbiAgICAgICAgY29uc3QgY29sdW1uS2V5ID0gY29sdW1uLmtleSAhPSBudWxsID8gU3RyaW5nKGNvbHVtbi5rZXkpIDogdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBmaWx0ZXJTZWxlY3RlZCA9IGNvbHVtbktleSAhPSBudWxsID8gKChfYiA9IGZpbHRlcnNbY29sdW1uS2V5XSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogRU1QVFlfRklMVEVSX1ZBTFVFKSA6IEVNUFRZX0ZJTFRFUl9WQUxVRTtcbiAgICAgICAgLy8gQ29tcG9zZSBvbkhlYWRlckNlbGwgc28gd2UgZG9uJ3QgY2xvYmJlciB1c2VyLXByb3ZpZGVkIGF0dHJpYnV0ZXMuXG4gICAgICAgIGNvbnN0IHVzZXJPbkhlYWRlckNlbGwgPSBjb2x1bW4ub25IZWFkZXJDZWxsO1xuICAgICAgICBjb25zdCBvbkhlYWRlckNlbGwgPSAoY29sLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgY29uc3QgdXNlckF0dHJzID0gKF9hID0gdXNlck9uSGVhZGVyQ2VsbCA9PT0gbnVsbCB8fCB1c2VyT25IZWFkZXJDZWxsID09PSB2b2lkIDAgPyB2b2lkIDAgOiB1c2VyT25IZWFkZXJDZWxsKGNvbCwgaW5kZXgpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB7fTtcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHVzZXJBdHRycyksIChpc1NvcnRhYmxlID8geyAnYXJpYS1zb3J0JzogYXJpYVNvcnRGb3IoYWN0aXZlT3JkZXIpIH0gOiBudWxsKSk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG9uRmlsdGVyQ2hhbmdlID0gKG5leHQpID0+IHtcbiAgICAgICAgICAgIGlmIChjb2x1bW5LZXkgPT0gbnVsbClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBzZXRGaWx0ZXJzKChjdXJyZW50KSA9PiAoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjdXJyZW50KSwgeyBbY29sdW1uS2V5XTogbmV4dC5sZW5ndGggPyBuZXh0IDogbnVsbCB9KSkpO1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjb2x1bW4pLCB7IG9uSGVhZGVyQ2VsbCwgdGl0bGU6IGNvbHVtbi5yZW5kZXJIZWFkZXJcbiAgICAgICAgICAgICAgICA/IGNvbHVtbi5yZW5kZXJIZWFkZXIoeyBjb2x1bW4gfSlcbiAgICAgICAgICAgICAgICA6IChfanN4KEhlYWRlckNlbGwsIHsgY29sdW1uOiBjb2x1bW4sIHNvcnRPcmRlcjogYWN0aXZlT3JkZXIsIG9uU29ydENsaWNrOiAoKSA9PiBzZXRTb3J0ZXIoKGN1cnJlbnRTb3J0ZXIpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5LZXk6IGNvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcjogY3VycmVudFNvcnRlci5jb2x1bW5LZXkgIT09IGNvbHVtbi5rZXkgfHwgY3VycmVudFNvcnRlci5vcmRlciA9PT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2FzY2VuZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGN1cnJlbnRTb3J0ZXIub3JkZXIgPT09ICdhc2NlbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2Rlc2NlbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgfSkpLCBmaWx0ZXJTZWxlY3RlZDogZmlsdGVyU2VsZWN0ZWQsIG9uRmlsdGVyQ2hhbmdlOiBvbkZpbHRlckNoYW5nZSB9KSkgfSk7XG4gICAgfSk7XG59XG5jb25zdCBTUEFDRVJfQ09MVU1OX0NMUyA9ICdvbS1jb21wb25lbnQtdWktdGFibGUtY2VsbC0tc3BhY2VyJztcbmNvbnN0IEVYUEFORF9DT0xVTU5fQ0xTID0gJ29tLWNvbXBvbmVudC11aS10YWJsZS1jZWxsLS1leHBhbmQnO1xuY29uc3QgU0VMRUNUSU9OX0NPTFVNTl9DTFMgPSAnb20tY29tcG9uZW50LXVpLXRhYmxlLWNlbGwtLXNlbGVjdGlvbic7XG5mdW5jdGlvbiBtYWtlU3BhY2VyVHJhbnNmb3JtKCkge1xuICAgIHJldHVybiAoY29sdW1ucykgPT4gW1xuICAgICAgICB7IGtleTogJ19fc3BhY2VyX3N0YXJ0X18nLCB3aWR0aDogMTYsIHRpdGxlOiAnJywgY2xhc3NOYW1lOiBTUEFDRVJfQ09MVU1OX0NMUywgcmVuZGVyOiAoKSA9PiBudWxsIH0sXG4gICAgICAgIC4uLmNvbHVtbnMsXG4gICAgICAgIHsga2V5OiAnX19zcGFjZXJfZW5kX18nLCB3aWR0aDogMTYsIHRpdGxlOiAnJywgY2xhc3NOYW1lOiBTUEFDRVJfQ09MVU1OX0NMUywgcmVuZGVyOiAoKSA9PiBudWxsIH0sXG4gICAgXTtcbn1cbmZ1bmN0aW9uIG1ha2VSZW5kZXJUcmFuc2Zvcm0oKSB7XG4gICAgcmV0dXJuIChjb2x1bW5zKSA9PiBjb2x1bW5zLm1hcCgoY29sdW1uKSA9PiB7XG4gICAgICAgIGlmIChpc0NvbHVtbkdyb3VwKGNvbHVtbikpXG4gICAgICAgICAgICByZXR1cm4gY29sdW1uO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjb2x1bW4pLCB7IFxuICAgICAgICAgICAgLy8gQm9keUNlbGwgaXMgaW50ZW50aW9uYWxseSBDQUxMRUQgYXMgYSBmdW5jdGlvbiwgbm90IHJlbmRlcmVkIGFzXG4gICAgICAgICAgICAvLyBgPEJvZHlDZWxsIC8+YC4gVGhlIGtlcm5lbCdzIGByZW5kZXJgIGNvbnRyYWN0IGFsbG93cyByZXR1cm5pbmcgZWl0aGVyXG4gICAgICAgICAgICAvLyBhIFJlYWN0Tm9kZSBvciBhIGB7IGNoaWxkcmVuLCBwcm9wcyB9YCBjZWxsLXNwYW5uaW5nIGRlc2NyaXB0b3IsIGFuZFxuICAgICAgICAgICAgLy8gQm9keUNlbGwgZm9yd2FyZHMgdGhhdCBkZXNjcmlwdG9yIHRocm91Z2ggZm9yIGNvbFNwYW4gLyByb3dTcGFuIHN1cHBvcnQuXG4gICAgICAgICAgICAvLyBXcmFwcGluZyBpdCBpbiBKU1ggd291bGQgY29sbGFwc2UgdGhlIGRlc2NyaXB0b3IgaW50byBhbiBlbGVtZW50IGFuZFxuICAgICAgICAgICAgLy8gYnJlYWsgY2VsbCBtZXJnaW5nIOKAlCBkbyBub3QgXCJmaXhcIiB0aGlzIGludG8gYW4gZWxlbWVudC5cbiAgICAgICAgICAgIHJlbmRlcjogKHZhbHVlLCByZWNvcmQsIGluZGV4KSA9PiBCb2R5Q2VsbCh7XG4gICAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIH0pIH0pO1xuICAgIH0pO1xufVxuLyoqXG4gKiBSZXR1cm5zIGNvbHVtbnMgcmVhZHkgdG8gYmUgcGFzc2VkIHRvIHRoZSB0YWJsZSBrZXJuZWwuXG4gKlxuICogVGhlIHJldHVybmVkIHNoYXBlIElTIHN0cnVjdHVyYWxseSB0aGUga2VybmVsJ3MgYENvbHVtbnNUeXBlPFQ+YDpcbiAqICAgLSBFdmVyeSBsZWFmIGNvbHVtbidzIGByZW5kZXJgIGlzIHJlcGxhY2VkIGJ5IGBtYWtlUmVuZGVyVHJhbnNmb3JtYCwgd2hpY2hcbiAqICAgICBhbHdheXMgcmV0dXJucyBhIGBSZWFjdE5vZGVgIChCb2R5Q2VsbCBoYW5kbGVzIGBUYWJsZUNlbGxDb250ZW50VmFsdWVgIC9cbiAqICAgICBgVGFibGVSZW5kZXJlZENlbGxgIGV4dHJhcyBhbmQgZW1pdHMgUmVhY3ROb2RlL1JlbmRlcmVkQ2VsbCkuXG4gKiAgIC0gRXZlcnkgbGVhZiBjb2x1bW4ncyBgdGl0bGVgIGlzIGVpdGhlciBhIFJlYWN0Tm9kZSBvciByZXBsYWNlZCBieVxuICogICAgIGA8SGVhZGVyQ2VsbCAvPmAuXG4gKiBCZWNhdXNlIFRTIGNhbid0IHRyYWNrIHRoYXQgdGhvc2UgcmVwbGFjZW1lbnRzIGhhdmUgaGFwcGVuZWQgYWNyb3NzIHRoZVxuICogYHRyYW5zZm9ybXMucmVkdWNlYCBjaGFpbiwgYSBzaW5nbGUgaW50ZXJuYWwgY2FzdCBpcyByZXF1aXJlZCDigJQgY2FsbCBzaXRlcyBub1xuICogbG9uZ2VyIG5lZWQgdGhlaXIgb3duIGBhcyB1bmtub3duIGFzIEludGVybmFsQ29sdW1uc1R5cGU8VD5gIGNhc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VUYWJsZUNvbHVtbnMoY29uZmlnKSB7XG4gICAgY29uc3QgeyBjb2x1bW5zLCB2YXJpYW50LCBleHBhbmRhYmxlLCByb3dTZWxlY3Rpb24sIG1lcmdlZEV4cGFuZGVkUm93S2V5cywgbWVyZ2VkU2VsZWN0ZWRSb3dLZXlzLCBjaGVja2JveFByb3BzTWFwLCBpc0FsbFNlbGVjdGVkLCBpc0luZGV0ZXJtaW5hdGUsIHRyaWdnZXJFeHBhbmQsIHRyaWdnZXJTZWxlY3Rpb24sIHRyaWdnZXJTZWxlY3RBbGwsIHNvcnRlciwgc2V0U29ydGVyLCBmaWx0ZXJzLCBzZXRGaWx0ZXJzLCBnZXRSb3dLZXksIH0gPSBjb25maWc7XG4gICAgLy8gVGhlIHVzZXIncyBkYXRhIGNvbHVtbnMgb25seSBkZXBlbmQgb24gdGhlIGhlYWRlciAvIHJlbmRlciBpbnB1dHNcbiAgICAvLyAoc29ydCwgZmlsdGVyKSDigJQgTk9UIG9uIHNlbGVjdGlvbiBvciBleHBhbnNpb24gc3RhdGUuIE1lbW9pc2luZyB0aGVtXG4gICAgLy8gb24gdGhlaXIgb3duIG1lYW5zIHRvZ2dsaW5nIGEgY2hlY2tib3ggb3IgY2hldnJvbiBubyBsb25nZXIgcmVidWlsZHMgYW5kXG4gICAgLy8gcmUtd3JhcHMgdGhlIHJlbmRlciBjbG9zdXJlIG9mICpldmVyeSogZGF0YSBjb2x1bW47IG9ubHkgdGhlIHNtYWxsXG4gICAgLy8gc2VsZWN0aW9uL2V4cGFuZCBwcmVmaXggYmVsb3cgaXMgcmVidWlsdC4gYG1ha2VIZWFkZXJUcmFuc2Zvcm1gIGFuZFxuICAgIC8vIGBtYWtlUmVuZGVyVHJhbnNmb3JtYCBhcmUgcGVyLWNvbHVtbiBpbmRlcGVuZGVudCBtYXBzLCBzbyBhcHBseWluZyB0aGVtIHRvXG4gICAgLy8gdGhlIHVzZXIgY29sdW1ucyBhbmQgdGhlIHByZWZpeCBzZXBhcmF0ZWx5IGFuZCBjb25jYXRlbmF0aW5nIGlzIGVxdWl2YWxlbnRcbiAgICAvLyB0byB0aGUgb3JpZ2luYWwgc2luZ2xlIHJlZHVjZS1jaGFpbi5cbiAgICAvL1xuICAgIC8vIERlcC1saXN0IG5vdGU6IHRoZSB0cmFuc2Zvcm0gZmFjdG9yaWVzIGNhcHR1cmUgdGhlIHdob2xlIGBjb25maWdgLCBidXRcbiAgICAvLyBldmVyeSBjYWxsYmFjayBpbiBpdCAoYHNldFNvcnRlcmAsIGB0cmlnZ2VyRXhwYW5kYCwgYGdldFJvd0tleWAsIOKApikgaXMgYVxuICAgIC8vIHN0YWJsZSBgdXNlTWVtb2l6ZWRGbmAsIHNvIGxpc3RpbmcgdGhlIGdlbnVpbmUgdmFsdWUgaW5wdXRzIGlzIHN1ZmZpY2llbnRcbiAgICAvLyBhbmQgaW50ZW50aW9uYWwuIEtlZXAgdGhlIGxpc3RzIGluIHN5bmMgd2hlbiBhZGRpbmcgaW5wdXRzLlxuICAgIGNvbnN0IGJhc2VVc2VyQ29sdW1ucyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBsZXQgY29scyA9IG1ha2VIZWFkZXJUcmFuc2Zvcm0oY29uZmlnKShjb2x1bW5zKTtcbiAgICAgICAgY29scyA9IG1ha2VSZW5kZXJUcmFuc2Zvcm0oKShjb2xzKTtcbiAgICAgICAgcmV0dXJuIGNvbHM7XG4gICAgfSwgW2NvbHVtbnMsIHNvcnRlciwgZmlsdGVycywgc2V0U29ydGVyLCBzZXRGaWx0ZXJzXSk7XG4gICAgLy8gVGhlIHNlbGVjdGlvbiAvIGV4cGFuZCBwcmVmaXggY2FycmllcyBsaXZlIHNlbGVjdGVkL2V4cGFuZGVkIHN0YXRlIGluIGl0c1xuICAgIC8vIHJlbmRlciBvdXRwdXQsIHdoaWNoIGlzIHRoZSBzaWduYWwgdGhhdCByZS1yZW5kZXJzIHRoZSBhZmZlY3RlZCByb3dzIOKAlCBzbyBpdFxuICAgIC8vIG11c3QgcmVidWlsZCBvbiBldmVyeSB0b2dnbGUuIEl0IGlzIGF0IG1vc3QgdHdvIGNvbHVtbnMsIHNvIHRoaXMgaXMgY2hlYXAuXG4gICAgY29uc3QgcHJlZml4Q29sdW1ucyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBsZXQgY29scyA9IFtdO1xuICAgICAgICBpZiAoZXhwYW5kYWJsZSAmJiBleHBhbmRhYmxlLnNob3dFeHBhbmRDb2x1bW4gIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBjb2xzID0gbWFrZUV4cGFuZFRyYW5zZm9ybShjb25maWcpKGNvbHMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvblRyYW5zZm9ybSA9IHJvd1NlbGVjdGlvbiA/IG1ha2VTZWxlY3Rpb25UcmFuc2Zvcm0oY29uZmlnKSA6IG51bGw7XG4gICAgICAgIGlmIChzZWxlY3Rpb25UcmFuc2Zvcm0pIHtcbiAgICAgICAgICAgIGNvbHMgPSBzZWxlY3Rpb25UcmFuc2Zvcm0oY29scyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUnVuIHRoZSBwcmVmaXggdGhyb3VnaCB0aGUgc2FtZSBoZWFkZXIvcmVuZGVyIG1hcHMgdGhlIHVzZXIgY29sdW1ucyBnZXQgc29cbiAgICAgICAgLy8gdGhlIGZpbmFsIGFycmF5IGlzIGJ5dGUtZm9yLWJ5dGUgdGhlIG9yaWdpbmFsIHNpbmdsZS1waXBlbGluZSBvdXRwdXQuXG4gICAgICAgIGNvbHMgPSBtYWtlSGVhZGVyVHJhbnNmb3JtKGNvbmZpZykoY29scyk7XG4gICAgICAgIGNvbHMgPSBtYWtlUmVuZGVyVHJhbnNmb3JtKCkoY29scyk7XG4gICAgICAgIHJldHVybiBjb2xzO1xuICAgIH0sIFtcbiAgICAgICAgZXhwYW5kYWJsZSxcbiAgICAgICAgcm93U2VsZWN0aW9uLFxuICAgICAgICBtZXJnZWRFeHBhbmRlZFJvd0tleXMsXG4gICAgICAgIG1lcmdlZFNlbGVjdGVkUm93S2V5cyxcbiAgICAgICAgY2hlY2tib3hQcm9wc01hcCxcbiAgICAgICAgaXNBbGxTZWxlY3RlZCxcbiAgICAgICAgaXNJbmRldGVybWluYXRlLFxuICAgICAgICB0cmlnZ2VyRXhwYW5kLFxuICAgICAgICB0cmlnZ2VyU2VsZWN0aW9uLFxuICAgICAgICB0cmlnZ2VyU2VsZWN0QWxsLFxuICAgICAgICBzb3J0ZXIsXG4gICAgICAgIHNldFNvcnRlcixcbiAgICAgICAgZmlsdGVycyxcbiAgICAgICAgc2V0RmlsdGVycyxcbiAgICAgICAgZ2V0Um93S2V5LFxuICAgIF0pO1xuICAgIHJldHVybiB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgbGV0IGNvbHMgPSBbLi4ucHJlZml4Q29sdW1ucywgLi4uYmFzZVVzZXJDb2x1bW5zXTtcbiAgICAgICAgaWYgKHZhcmlhbnQgPT09ICdzdHJva2UnKSB7XG4gICAgICAgICAgICBjb2xzID0gbWFrZVNwYWNlclRyYW5zZm9ybSgpKGNvbHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xzO1xuICAgIH0sIFtwcmVmaXhDb2x1bW5zLCBiYXNlVXNlckNvbHVtbnMsIHZhcmlhbnRdKTtcbn0iLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=