UNPKG

rr-table

Version:

Responsive and customizable React Table

147 lines (115 loc) 13.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _v = _interopRequireDefault(require("uuid/v4")); var _utils = require("../../utils"); var _sortOrders = require("../../config/constants/sortOrders"); var _colorPalette = require("../../config/styles/colorPalette"); var _HeadCell = _interopRequireDefault(require("../HeadCell")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _templateObject() { var data = _taggedTemplateLiteral(["\n align-items: center;\n box-shadow: 0px 5px 2px ", ";\n box-sizing: border-box;\n display: flex;\n flex-wrap: nowrap;\n height: ", ";\n justify-content: space-evenly;\n margin-bottom: 5px;\n position: relative;\n width: 100%;\n"]); _templateObject = function _templateObject() { return data; }; return data; } function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } /** Styles */ var HeadWrapper = _styledComponents.default.div(_templateObject(), _colorPalette.grey, function (_ref) { var height = _ref.height; return height || '4rem'; }); /** Component */ var Head = function Head(_ref2) { var breakpoints = _ref2.breakpoints, cellPadding = _ref2.cellPadding, center = _ref2.center, colWidths = _ref2.colWidths, fontSize = _ref2.fontSize, headCell = _ref2.headCell, height = _ref2.height, id = _ref2.id, onSort = _ref2.onSort, priorities = _ref2.priorities, sortingState = _ref2.sortingState, styles = _ref2.styles, textColor = _ref2.textColor, titles = _ref2.titles; var Cell = (0, _utils.defineComponentAsFunction)(headCell, _HeadCell.default); return _react.default.createElement(HeadWrapper, { height: height, style: styles && styles.head, id: id }, titles.map(function (title, i) { var columnWidth = colWidths && colWidths[i]; var width = (0, _utils.defineColWidth)(columnWidth); var id = (0, _v.default)(); return Cell({ breakpoints: breakpoints, center: center, fontSize: fontSize, id: id, key: id, onSort: onSort, padding: cellPadding, priority: priorities && priorities[i], sortingState: sortingState, style: styles && styles.headCell, textColor: textColor, title: title, width: width }); })); }; /** PropTypes */ Head.propTypes = { /** List of breakpoints */ breakpoints: _propTypes.default.arrayOf(_propTypes.default.number), /** Cell Padding */ cellPadding: _propTypes.default.string, /** Center the text in the cell */ center: _propTypes.default.bool, /** List of columns widths */ colWidths: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string])), /** Title font-size */ fontSize: _propTypes.default.string, /** Header Cells Component */ headCell: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]), /** Height of the Head row */ height: _propTypes.default.string, /** id of the row */ id: _propTypes.default.string, /** sorting function */ onSort: _propTypes.default.func, /** List of priorities */ priorities: _propTypes.default.arrayOf(_propTypes.default.number), /** Sorting state */ sortingState: _propTypes.default.shape({ sortingKey: _propTypes.default.string.isRequired, order: _propTypes.default.oneOf([_sortOrders.ASC, _sortOrders.DESC, _sortOrders.NOT_SORTED]).isRequired }), /** Custom styles */ styles: _propTypes.default.shape({ cell: _propTypes.default.object, head: _propTypes.default.object, headCell: _propTypes.default.object, row: _propTypes.default.object, table: _propTypes.default.object }), /** Color of the displayed text */ textColor: _propTypes.default.string, /** Column Titles */ titles: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({ title: _propTypes.default.string.isRequired, sortingKey: _propTypes.default.string })])).isRequired }; var _default = Head; exports.default = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0hlYWQvaW5kZXguanN4Il0sIm5hbWVzIjpbIkhlYWRXcmFwcGVyIiwic3R5bGVkIiwiZGl2IiwiZ3JleSIsImhlaWdodCIsIkhlYWQiLCJicmVha3BvaW50cyIsImNlbGxQYWRkaW5nIiwiY2VudGVyIiwiY29sV2lkdGhzIiwiZm9udFNpemUiLCJoZWFkQ2VsbCIsImlkIiwib25Tb3J0IiwicHJpb3JpdGllcyIsInNvcnRpbmdTdGF0ZSIsInN0eWxlcyIsInRleHRDb2xvciIsInRpdGxlcyIsIkNlbGwiLCJIZWFkQ2VsbCIsImhlYWQiLCJtYXAiLCJ0aXRsZSIsImkiLCJjb2x1bW5XaWR0aCIsIndpZHRoIiwia2V5IiwicGFkZGluZyIsInByaW9yaXR5Iiwic3R5bGUiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJhcnJheU9mIiwibnVtYmVyIiwic3RyaW5nIiwiYm9vbCIsIm9uZU9mVHlwZSIsImZ1bmMiLCJvYmplY3QiLCJzaGFwZSIsInNvcnRpbmdLZXkiLCJpc1JlcXVpcmVkIiwib3JkZXIiLCJvbmVPZiIsIkFTQyIsIkRFU0MiLCJOT1RfU09SVEVEIiwiY2VsbCIsInJvdyIsInRhYmxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTtBQUNBLElBQU1BLFdBQVcsR0FBR0MsMEJBQU9DLEdBQVYsb0JBRVdDLGtCQUZYLEVBTUw7QUFBQSxNQUFHQyxNQUFILFFBQUdBLE1BQUg7QUFBQSxTQUFnQkEsTUFBTSxJQUFJLE1BQTFCO0FBQUEsQ0FOSyxDQUFqQjtBQWFBOzs7QUFDQSxJQUFNQyxJQUFJLEdBQUcsU0FBUEEsSUFBTyxRQWVQO0FBQUEsTUFkSkMsV0FjSSxTQWRKQSxXQWNJO0FBQUEsTUFiSkMsV0FhSSxTQWJKQSxXQWFJO0FBQUEsTUFaSkMsTUFZSSxTQVpKQSxNQVlJO0FBQUEsTUFYSkMsU0FXSSxTQVhKQSxTQVdJO0FBQUEsTUFWSkMsUUFVSSxTQVZKQSxRQVVJO0FBQUEsTUFUSkMsUUFTSSxTQVRKQSxRQVNJO0FBQUEsTUFSSlAsTUFRSSxTQVJKQSxNQVFJO0FBQUEsTUFQSlEsRUFPSSxTQVBKQSxFQU9JO0FBQUEsTUFOSkMsTUFNSSxTQU5KQSxNQU1JO0FBQUEsTUFMSkMsVUFLSSxTQUxKQSxVQUtJO0FBQUEsTUFKSkMsWUFJSSxTQUpKQSxZQUlJO0FBQUEsTUFISkMsTUFHSSxTQUhKQSxNQUdJO0FBQUEsTUFGSkMsU0FFSSxTQUZKQSxTQUVJO0FBQUEsTUFESkMsTUFDSSxTQURKQSxNQUNJO0FBQ0osTUFBTUMsSUFBSSxHQUFHLHNDQUEwQlIsUUFBMUIsRUFBb0NTLGlCQUFwQyxDQUFiO0FBRUEsU0FDRSw2QkFBQyxXQUFEO0FBQWEsSUFBQSxNQUFNLEVBQUVoQixNQUFyQjtBQUE2QixJQUFBLEtBQUssRUFBRVksTUFBTSxJQUFJQSxNQUFNLENBQUNLLElBQXJEO0FBQTJELElBQUEsRUFBRSxFQUFFVDtBQUEvRCxLQUNHTSxNQUFNLENBQUNJLEdBQVAsQ0FBVyxVQUFDQyxLQUFELEVBQVFDLENBQVIsRUFBYztBQUN4QixRQUFNQyxXQUFXLEdBQUdoQixTQUFTLElBQUlBLFNBQVMsQ0FBQ2UsQ0FBRCxDQUExQztBQUNBLFFBQU1FLEtBQUssR0FBRywyQkFBZUQsV0FBZixDQUFkO0FBQ0EsUUFBTWIsRUFBRSxHQUFHLGlCQUFYO0FBRUEsV0FBT08sSUFBSSxDQUFDO0FBQ1ZiLE1BQUFBLFdBQVcsRUFBWEEsV0FEVTtBQUVWRSxNQUFBQSxNQUFNLEVBQU5BLE1BRlU7QUFHVkUsTUFBQUEsUUFBUSxFQUFSQSxRQUhVO0FBSVZFLE1BQUFBLEVBQUUsRUFBRkEsRUFKVTtBQUtWZSxNQUFBQSxHQUFHLEVBQUVmLEVBTEs7QUFNVkMsTUFBQUEsTUFBTSxFQUFOQSxNQU5VO0FBT1ZlLE1BQUFBLE9BQU8sRUFBRXJCLFdBUEM7QUFRVnNCLE1BQUFBLFFBQVEsRUFBRWYsVUFBVSxJQUFJQSxVQUFVLENBQUNVLENBQUQsQ0FSeEI7QUFTVlQsTUFBQUEsWUFBWSxFQUFaQSxZQVRVO0FBVVZlLE1BQUFBLEtBQUssRUFBRWQsTUFBTSxJQUFJQSxNQUFNLENBQUNMLFFBVmQ7QUFXVk0sTUFBQUEsU0FBUyxFQUFUQSxTQVhVO0FBWVZNLE1BQUFBLEtBQUssRUFBTEEsS0FaVTtBQWFWRyxNQUFBQSxLQUFLLEVBQUxBO0FBYlUsS0FBRCxDQUFYO0FBZUQsR0FwQkEsQ0FESCxDQURGO0FBeUJELENBM0NEO0FBNkNBOzs7QUFDQXJCLElBQUksQ0FBQzBCLFNBQUwsR0FBaUI7QUFDZjtBQUNBekIsRUFBQUEsV0FBVyxFQUFFMEIsbUJBQVVDLE9BQVYsQ0FBa0JELG1CQUFVRSxNQUE1QixDQUZFOztBQUdmO0FBQ0EzQixFQUFBQSxXQUFXLEVBQUV5QixtQkFBVUcsTUFKUjs7QUFLZjtBQUNBM0IsRUFBQUEsTUFBTSxFQUFFd0IsbUJBQVVJLElBTkg7O0FBT2Y7QUFDQTNCLEVBQUFBLFNBQVMsRUFBRXVCLG1CQUFVQyxPQUFWLENBQWtCRCxtQkFBVUssU0FBVixDQUFvQixDQUFDTCxtQkFBVUUsTUFBWCxFQUFtQkYsbUJBQVVHLE1BQTdCLENBQXBCLENBQWxCLENBUkk7O0FBU2Y7QUFDQXpCLEVBQUFBLFFBQVEsRUFBRXNCLG1CQUFVRyxNQVZMOztBQVdmO0FBQ0F4QixFQUFBQSxRQUFRLEVBQUVxQixtQkFBVUssU0FBVixDQUFvQixDQUFDTCxtQkFBVU0sSUFBWCxFQUFpQk4sbUJBQVVPLE1BQTNCLENBQXBCLENBWks7O0FBYWY7QUFDQW5DLEVBQUFBLE1BQU0sRUFBRTRCLG1CQUFVRyxNQWRIOztBQWVmO0FBQ0F2QixFQUFBQSxFQUFFLEVBQUVvQixtQkFBVUcsTUFoQkM7O0FBaUJmO0FBQ0F0QixFQUFBQSxNQUFNLEVBQUVtQixtQkFBVU0sSUFsQkg7O0FBbUJmO0FBQ0F4QixFQUFBQSxVQUFVLEVBQUVrQixtQkFBVUMsT0FBVixDQUFrQkQsbUJBQVVFLE1BQTVCLENBcEJHOztBQXFCZjtBQUNBbkIsRUFBQUEsWUFBWSxFQUFFaUIsbUJBQVVRLEtBQVYsQ0FBZ0I7QUFDNUJDLElBQUFBLFVBQVUsRUFBRVQsbUJBQVVHLE1BQVYsQ0FBaUJPLFVBREQ7QUFFNUJDLElBQUFBLEtBQUssRUFBRVgsbUJBQVVZLEtBQVYsQ0FBZ0IsQ0FBQ0MsZUFBRCxFQUFNQyxnQkFBTixFQUFZQyxzQkFBWixDQUFoQixFQUF5Q0w7QUFGcEIsR0FBaEIsQ0F0QkM7O0FBMEJmO0FBQ0ExQixFQUFBQSxNQUFNLEVBQUVnQixtQkFBVVEsS0FBVixDQUFnQjtBQUN0QlEsSUFBQUEsSUFBSSxFQUFFaEIsbUJBQVVPLE1BRE07QUFFdEJsQixJQUFBQSxJQUFJLEVBQUVXLG1CQUFVTyxNQUZNO0FBR3RCNUIsSUFBQUEsUUFBUSxFQUFFcUIsbUJBQVVPLE1BSEU7QUFJdEJVLElBQUFBLEdBQUcsRUFBRWpCLG1CQUFVTyxNQUpPO0FBS3RCVyxJQUFBQSxLQUFLLEVBQUVsQixtQkFBVU87QUFMSyxHQUFoQixDQTNCTzs7QUFrQ2Y7QUFDQXRCLEVBQUFBLFNBQVMsRUFBRWUsbUJBQVVHLE1BbkNOOztBQW9DZjtBQUNBakIsRUFBQUEsTUFBTSxFQUFFYyxtQkFBVUMsT0FBVixDQUNORCxtQkFBVUssU0FBVixDQUFvQixDQUNsQkwsbUJBQVVHLE1BRFEsRUFFbEJILG1CQUFVUSxLQUFWLENBQWdCO0FBQ2RqQixJQUFBQSxLQUFLLEVBQUVTLG1CQUFVRyxNQUFWLENBQWlCTyxVQURWO0FBRWRELElBQUFBLFVBQVUsRUFBRVQsbUJBQVVHO0FBRlIsR0FBaEIsQ0FGa0IsQ0FBcEIsQ0FETSxFQVFOTztBQTdDYSxDQUFqQjtlQWdEZXJDLEkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHV1aWR2NCBmcm9tICd1dWlkL3Y0JztcblxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50QXNGdW5jdGlvbiwgZGVmaW5lQ29sV2lkdGggfSBmcm9tICd1dGlscyc7XG5pbXBvcnQgeyBBU0MsIERFU0MsIE5PVF9TT1JURUQgfSBmcm9tICdjb25maWcvY29uc3RhbnRzL3NvcnRPcmRlcnMnO1xuaW1wb3J0IHsgZ3JleSB9IGZyb20gJ2NvbmZpZy9zdHlsZXMvY29sb3JQYWxldHRlJztcbmltcG9ydCBIZWFkQ2VsbCBmcm9tICdjb21wb25lbnRzL0hlYWRDZWxsJztcblxuLyoqIFN0eWxlcyAqL1xuY29uc3QgSGVhZFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3gtc2hhZG93OiAwcHggNXB4IDJweCAke2dyZXl9O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgaGVpZ2h0OiAkeyh7IGhlaWdodCB9KSA9PiBoZWlnaHQgfHwgJzRyZW0nfTtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1ldmVubHk7XG4gIG1hcmdpbi1ib3R0b206IDVweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbmA7XG5cbi8qKiBDb21wb25lbnQgKi9cbmNvbnN0IEhlYWQgPSAoe1xuICBicmVha3BvaW50cyxcbiAgY2VsbFBhZGRpbmcsXG4gIGNlbnRlcixcbiAgY29sV2lkdGhzLFxuICBmb250U2l6ZSxcbiAgaGVhZENlbGwsXG4gIGhlaWdodCxcbiAgaWQsXG4gIG9uU29ydCxcbiAgcHJpb3JpdGllcyxcbiAgc29ydGluZ1N0YXRlLFxuICBzdHlsZXMsXG4gIHRleHRDb2xvcixcbiAgdGl0bGVzLFxufSkgPT4ge1xuICBjb25zdCBDZWxsID0gZGVmaW5lQ29tcG9uZW50QXNGdW5jdGlvbihoZWFkQ2VsbCwgSGVhZENlbGwpO1xuXG4gIHJldHVybiAoXG4gICAgPEhlYWRXcmFwcGVyIGhlaWdodD17aGVpZ2h0fSBzdHlsZT17c3R5bGVzICYmIHN0eWxlcy5oZWFkfSBpZD17aWR9PlxuICAgICAge3RpdGxlcy5tYXAoKHRpdGxlLCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbldpZHRoID0gY29sV2lkdGhzICYmIGNvbFdpZHRoc1tpXTtcbiAgICAgICAgY29uc3Qgd2lkdGggPSBkZWZpbmVDb2xXaWR0aChjb2x1bW5XaWR0aCk7XG4gICAgICAgIGNvbnN0IGlkID0gdXVpZHY0KCk7XG5cbiAgICAgICAgcmV0dXJuIENlbGwoe1xuICAgICAgICAgIGJyZWFrcG9pbnRzLFxuICAgICAgICAgIGNlbnRlcixcbiAgICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBrZXk6IGlkLFxuICAgICAgICAgIG9uU29ydCxcbiAgICAgICAgICBwYWRkaW5nOiBjZWxsUGFkZGluZyxcbiAgICAgICAgICBwcmlvcml0eTogcHJpb3JpdGllcyAmJiBwcmlvcml0aWVzW2ldLFxuICAgICAgICAgIHNvcnRpbmdTdGF0ZSxcbiAgICAgICAgICBzdHlsZTogc3R5bGVzICYmIHN0eWxlcy5oZWFkQ2VsbCxcbiAgICAgICAgICB0ZXh0Q29sb3IsXG4gICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgd2lkdGgsXG4gICAgICAgIH0pO1xuICAgICAgfSl9XG4gICAgPC9IZWFkV3JhcHBlcj5cbiAgKTtcbn07XG5cbi8qKiBQcm9wVHlwZXMgKi9cbkhlYWQucHJvcFR5cGVzID0ge1xuICAvKiogTGlzdCBvZiBicmVha3BvaW50cyAqL1xuICBicmVha3BvaW50czogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm51bWJlciksXG4gIC8qKiBDZWxsIFBhZGRpbmcgKi9cbiAgY2VsbFBhZGRpbmc6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBDZW50ZXIgdGhlIHRleHQgaW4gdGhlIGNlbGwgKi9cbiAgY2VudGVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqIExpc3Qgb2YgY29sdW1ucyB3aWR0aHMgKi9cbiAgY29sV2lkdGhzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkpLFxuICAvKiogVGl0bGUgZm9udC1zaXplICovXG4gIGZvbnRTaXplOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogSGVhZGVyIENlbGxzIENvbXBvbmVudCAqL1xuICBoZWFkQ2VsbDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqIEhlaWdodCBvZiB0aGUgSGVhZCByb3cgKi9cbiAgaGVpZ2h0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogaWQgb2YgdGhlIHJvdyAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIHNvcnRpbmcgZnVuY3Rpb24gKi9cbiAgb25Tb3J0OiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIExpc3Qgb2YgcHJpb3JpdGllcyAqL1xuICBwcmlvcml0aWVzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMubnVtYmVyKSxcbiAgLyoqIFNvcnRpbmcgc3RhdGUgKi9cbiAgc29ydGluZ1N0YXRlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIHNvcnRpbmdLZXk6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICBvcmRlcjogUHJvcFR5cGVzLm9uZU9mKFtBU0MsIERFU0MsIE5PVF9TT1JURURdKS5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIEN1c3RvbSBzdHlsZXMgKi9cbiAgc3R5bGVzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGNlbGw6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgaGVhZDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBoZWFkQ2VsbDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICByb3c6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgdGFibGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIH0pLFxuICAvKiogQ29sb3Igb2YgdGhlIGRpc3BsYXllZCB0ZXh0ICovXG4gIHRleHRDb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIENvbHVtbiBUaXRsZXMgKi9cbiAgdGl0bGVzOiBQcm9wVHlwZXMuYXJyYXlPZihcbiAgICBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICAgIFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgICBzb3J0aW5nS2V5OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgfSksXG4gICAgXSksXG4gICkuaXNSZXF1aXJlZCxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEhlYWQ7XG4iXX0=