payload
Version:
Node, React and MongoDB Headless CMS and Application Framework
183 lines (182 loc) • 19.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "Nav", {
enumerable: true,
get: function() {
return Nav;
}
});
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
const _reacti18next = require("react-i18next");
const _reactrouterdom = require("react-router-dom");
const _getTranslation = require("../../../../utilities/getTranslation");
const _groupNavItems = require("../../../utilities/groupNavItems");
const _Chevron = /*#__PURE__*/ _interop_require_default(require("../../icons/Chevron"));
const _Auth = require("../../utilities/Auth");
const _Config = require("../../utilities/Config");
const _RenderCustomComponent = /*#__PURE__*/ _interop_require_default(require("../../utilities/RenderCustomComponent"));
const _Hamburger = require("../Hamburger");
const _Logout = /*#__PURE__*/ _interop_require_default(require("../Logout"));
const _NavGroup = /*#__PURE__*/ _interop_require_default(require("../NavGroup"));
const _context = require("./context");
require("./index.scss");
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function _getRequireWildcardCache(nodeInterop) {
if (typeof WeakMap !== "function") return null;
var cacheBabelInterop = new WeakMap();
var cacheNodeInterop = new WeakMap();
return (_getRequireWildcardCache = function(nodeInterop) {
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
})(nodeInterop);
}
function _interop_require_wildcard(obj, nodeInterop) {
if (!nodeInterop && obj && obj.__esModule) {
return obj;
}
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
return {
default: obj
};
}
var cache = _getRequireWildcardCache(nodeInterop);
if (cache && cache.has(obj)) {
return cache.get(obj);
}
var newObj = {
__proto__: null
};
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
for(var key in obj){
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
if (desc && (desc.get || desc.set)) {
Object.defineProperty(newObj, key, desc);
} else {
newObj[key] = obj[key];
}
}
}
newObj.default = obj;
if (cache) {
cache.set(obj, newObj);
}
return newObj;
}
const baseClass = 'nav';
const DefaultNav = ()=>{
const { navOpen, navRef, setNavOpen } = (0, _context.useNav)();
const { permissions, user } = (0, _Auth.useAuth)();
const [groups, setGroups] = (0, _react.useState)([]);
const { i18n } = (0, _reacti18next.useTranslation)('general');
const { admin: { components: { afterNavLinks, beforeNavLinks } }, collections, globals, routes: { admin } } = (0, _Config.useConfig)();
(0, _react.useEffect)(()=>{
setGroups((0, _groupNavItems.groupNavItems)([
...collections.filter(({ admin: { hidden } })=>!(typeof hidden === 'function' ? hidden({
user
}) : hidden)).map((collection)=>{
const entityToGroup = {
entity: collection,
type: _groupNavItems.EntityType.collection
};
return entityToGroup;
}),
...globals.filter(({ admin: { hidden } })=>!(typeof hidden === 'function' ? hidden({
user
}) : hidden)).map((global)=>{
const entityToGroup = {
entity: global,
type: _groupNavItems.EntityType.global
};
return entityToGroup;
})
], permissions, i18n));
}, [
collections,
globals,
permissions,
i18n,
i18n.language,
user
]);
return /*#__PURE__*/ _react.default.createElement("aside", {
className: [
baseClass,
navOpen && `${baseClass}--nav-open`
].filter(Boolean).join(' ')
}, /*#__PURE__*/ _react.default.createElement("div", {
className: `${baseClass}__scroll`,
ref: navRef
}, /*#__PURE__*/ _react.default.createElement("nav", {
className: `${baseClass}__wrap`
}, Array.isArray(beforeNavLinks) && beforeNavLinks.map((Component, i)=>/*#__PURE__*/ _react.default.createElement(Component, {
key: i
})), groups.map(({ entities, label }, key)=>{
return /*#__PURE__*/ _react.default.createElement(_NavGroup.default, {
key,
label
}, entities.map(({ entity, type }, i)=>{
let entityLabel;
let href;
let id;
if (type === _groupNavItems.EntityType.collection) {
href = `${admin}/collections/${entity.slug}`;
entityLabel = (0, _getTranslation.getTranslation)(entity.labels.plural, i18n);
id = `nav-${entity.slug}`;
}
if (type === _groupNavItems.EntityType.global) {
href = `${admin}/globals/${entity.slug}`;
entityLabel = (0, _getTranslation.getTranslation)(entity.label, i18n);
id = `nav-global-${entity.slug}`;
}
return /*#__PURE__*/ _react.default.createElement(_reactrouterdom.NavLink, {
activeClassName: "active",
className: `${baseClass}__link`,
id: id,
key: i,
tabIndex: !navOpen ? -1 : undefined,
to: href
}, /*#__PURE__*/ _react.default.createElement("span", {
className: `${baseClass}__link-icon`
}, /*#__PURE__*/ _react.default.createElement(_Chevron.default, {
direction: "right"
})), /*#__PURE__*/ _react.default.createElement("span", {
className: `${baseClass}__link-label`
}, entityLabel));
}));
}), Array.isArray(afterNavLinks) && afterNavLinks.map((Component, i)=>/*#__PURE__*/ _react.default.createElement(Component, {
key: i
})), /*#__PURE__*/ _react.default.createElement("div", {
className: `${baseClass}__controls`
}, /*#__PURE__*/ _react.default.createElement(_Logout.default, {
tabIndex: !navOpen ? -1 : undefined
})))), /*#__PURE__*/ _react.default.createElement("div", {
className: `${baseClass}__header`
}, /*#__PURE__*/ _react.default.createElement("div", {
className: `${baseClass}__header-content`
}, /*#__PURE__*/ _react.default.createElement("button", {
className: `${baseClass}__mobile-close`,
onClick: ()=>{
setNavOpen(false);
},
tabIndex: !navOpen ? -1 : undefined,
type: "button"
}, /*#__PURE__*/ _react.default.createElement(_Hamburger.Hamburger, {
isActive: true
})))));
};
const Nav = ()=>{
const { admin: { components: { Nav: CustomNav } = {
Nav: undefined
} } = {} } = (0, _Config.useConfig)();
return /*#__PURE__*/ _react.default.createElement(_RenderCustomComponent.default, {
CustomComponent: CustomNav,
DefaultComponent: DefaultNav
});
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2VsZW1lbnRzL05hdi9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IE5hdkxpbmsgfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJ1xuXG5pbXBvcnQgdHlwZSB7IEVudGl0eVRvR3JvdXAsIEdyb3VwIH0gZnJvbSAnLi4vLi4vLi4vdXRpbGl0aWVzL2dyb3VwTmF2SXRlbXMnXG5cbmltcG9ydCB7IGdldFRyYW5zbGF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbGl0aWVzL2dldFRyYW5zbGF0aW9uJ1xuaW1wb3J0IHsgRW50aXR5VHlwZSwgZ3JvdXBOYXZJdGVtcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcy9ncm91cE5hdkl0ZW1zJ1xuaW1wb3J0IENoZXZyb24gZnJvbSAnLi4vLi4vaWNvbnMvQ2hldnJvbidcbmltcG9ydCB7IHVzZUF1dGggfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvQXV0aCdcbmltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9Db25maWcnXG5pbXBvcnQgUmVuZGVyQ3VzdG9tQ29tcG9uZW50IGZyb20gJy4uLy4uL3V0aWxpdGllcy9SZW5kZXJDdXN0b21Db21wb25lbnQnXG5pbXBvcnQgeyBIYW1idXJnZXIgfSBmcm9tICcuLi9IYW1idXJnZXInXG5pbXBvcnQgTG9nb3V0IGZyb20gJy4uL0xvZ291dCdcbmltcG9ydCBOYXZHcm91cCBmcm9tICcuLi9OYXZHcm91cCdcbmltcG9ydCB7IHVzZU5hdiB9IGZyb20gJy4vY29udGV4dCdcbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5jb25zdCBiYXNlQ2xhc3MgPSAnbmF2J1xuXG5jb25zdCBEZWZhdWx0TmF2OiBSZWFjdC5GQyA9ICgpID0+IHtcbiAgY29uc3QgeyBuYXZPcGVuLCBuYXZSZWYsIHNldE5hdk9wZW4gfSA9IHVzZU5hdigpXG4gIGNvbnN0IHsgcGVybWlzc2lvbnMsIHVzZXIgfSA9IHVzZUF1dGgoKVxuICBjb25zdCBbZ3JvdXBzLCBzZXRHcm91cHNdID0gdXNlU3RhdGU8R3JvdXBbXT4oW10pXG4gIGNvbnN0IHsgaTE4biB9ID0gdXNlVHJhbnNsYXRpb24oJ2dlbmVyYWwnKVxuXG4gIGNvbnN0IHtcbiAgICBhZG1pbjoge1xuICAgICAgY29tcG9uZW50czogeyBhZnRlck5hdkxpbmtzLCBiZWZvcmVOYXZMaW5rcyB9LFxuICAgIH0sXG4gICAgY29sbGVjdGlvbnMsXG4gICAgZ2xvYmFscyxcbiAgICByb3V0ZXM6IHsgYWRtaW4gfSxcbiAgfSA9IHVzZUNvbmZpZygpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRHcm91cHMoXG4gICAgICBncm91cE5hdkl0ZW1zKFxuICAgICAgICBbXG4gICAgICAgICAgLi4uY29sbGVjdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgICh7IGFkbWluOiB7IGhpZGRlbiB9IH0pID0+XG4gICAgICAgICAgICAgICAgISh0eXBlb2YgaGlkZGVuID09PSAnZnVuY3Rpb24nID8gaGlkZGVuKHsgdXNlciB9KSA6IGhpZGRlbiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAubWFwKChjb2xsZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGVudGl0eVRvR3JvdXA6IEVudGl0eVRvR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgZW50aXR5OiBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICAgIHR5cGU6IEVudGl0eVR5cGUuY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBlbnRpdHlUb0dyb3VwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAuLi5nbG9iYWxzXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAoeyBhZG1pbjogeyBoaWRkZW4gfSB9KSA9PlxuICAgICAgICAgICAgICAgICEodHlwZW9mIGhpZGRlbiA9PT0gJ2Z1bmN0aW9uJyA/IGhpZGRlbih7IHVzZXIgfSkgOiBoaWRkZW4pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLm1hcCgoZ2xvYmFsKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGVudGl0eVRvR3JvdXA6IEVudGl0eVRvR3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgZW50aXR5OiBnbG9iYWwsXG4gICAgICAgICAgICAgICAgdHlwZTogRW50aXR5VHlwZS5nbG9iYWwsXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gZW50aXR5VG9Hcm91cFxuICAgICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgICBpMThuLFxuICAgICAgKSxcbiAgICApXG4gIH0sIFtjb2xsZWN0aW9ucywgZ2xvYmFscywgcGVybWlzc2lvbnMsIGkxOG4sIGkxOG4ubGFuZ3VhZ2UsIHVzZXJdKVxuXG4gIHJldHVybiAoXG4gICAgPGFzaWRlIGNsYXNzTmFtZT17W2Jhc2VDbGFzcywgbmF2T3BlbiAmJiBgJHtiYXNlQ2xhc3N9LS1uYXYtb3BlbmBdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJyl9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3Njcm9sbGB9IHJlZj17bmF2UmVmfT5cbiAgICAgICAgPG5hdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX3dyYXBgfT5cbiAgICAgICAgICB7QXJyYXkuaXNBcnJheShiZWZvcmVOYXZMaW5rcykgJiZcbiAgICAgICAgICAgIGJlZm9yZU5hdkxpbmtzLm1hcCgoQ29tcG9uZW50LCBpKSA9PiA8Q29tcG9uZW50IGtleT17aX0gLz4pfVxuICAgICAgICAgIHtncm91cHMubWFwKCh7IGVudGl0aWVzLCBsYWJlbCB9LCBrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxOYXZHcm91cCB7Li4ueyBrZXksIGxhYmVsIH19PlxuICAgICAgICAgICAgICAgIHtlbnRpdGllcy5tYXAoKHsgZW50aXR5LCB0eXBlIH0sIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgIGxldCBlbnRpdHlMYWJlbDogc3RyaW5nXG4gICAgICAgICAgICAgICAgICBsZXQgaHJlZjogc3RyaW5nXG4gICAgICAgICAgICAgICAgICBsZXQgaWQ6IHN0cmluZ1xuXG4gICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gRW50aXR5VHlwZS5jb2xsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGhyZWYgPSBgJHthZG1pbn0vY29sbGVjdGlvbnMvJHtlbnRpdHkuc2x1Z31gXG4gICAgICAgICAgICAgICAgICAgIGVudGl0eUxhYmVsID0gZ2V0VHJhbnNsYXRpb24oZW50aXR5LmxhYmVscy5wbHVyYWwsIGkxOG4pXG4gICAgICAgICAgICAgICAgICAgIGlkID0gYG5hdi0ke2VudGl0eS5zbHVnfWBcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IEVudGl0eVR5cGUuZ2xvYmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGhyZWYgPSBgJHthZG1pbn0vZ2xvYmFscy8ke2VudGl0eS5zbHVnfWBcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5TGFiZWwgPSBnZXRUcmFuc2xhdGlvbihlbnRpdHkubGFiZWwsIGkxOG4pXG4gICAgICAgICAgICAgICAgICAgIGlkID0gYG5hdi1nbG9iYWwtJHtlbnRpdHkuc2x1Z31gXG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIDxOYXZMaW5rXG4gICAgICAgICAgICAgICAgICAgICAgYWN0aXZlQ2xhc3NOYW1lPVwiYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2xpbmtgfVxuICAgICAgICAgICAgICAgICAgICAgIGlkPXtpZH1cbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e2l9XG4gICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9eyFuYXZPcGVuID8gLTEgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgICAgICAgdG89e2hyZWZ9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2xpbmstaWNvbmB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPENoZXZyb24gZGlyZWN0aW9uPVwicmlnaHRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2xpbmstbGFiZWxgfT57ZW50aXR5TGFiZWx9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L05hdkxpbms+XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIDwvTmF2R3JvdXA+XG4gICAgICAgICAgICApXG4gICAgICAgICAgfSl9XG4gICAgICAgICAge0FycmF5LmlzQXJyYXkoYWZ0ZXJOYXZMaW5rcykgJiZcbiAgICAgICAgICAgIGFmdGVyTmF2TGlua3MubWFwKChDb21wb25lbnQsIGkpID0+IDxDb21wb25lbnQga2V5PXtpfSAvPil9XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2NvbnRyb2xzYH0+XG4gICAgICAgICAgICA8TG9nb3V0IHRhYkluZGV4PXshbmF2T3BlbiA/IC0xIDogdW5kZWZpbmVkfSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25hdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2hlYWRlcmB9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9faGVhZGVyLWNvbnRlbnRgfT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX21vYmlsZS1jbG9zZWB9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIHNldE5hdk9wZW4oZmFsc2UpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgdGFiSW5kZXg9eyFuYXZPcGVuID8gLTEgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8SGFtYnVyZ2VyIGlzQWN0aXZlIC8+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9hc2lkZT5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgTmF2OiBSZWFjdC5GQyA9ICgpID0+IHtcbiAgY29uc3Qge1xuICAgIGFkbWluOiB7XG4gICAgICBjb21wb25lbnRzOiB7IE5hdjogQ3VzdG9tTmF2IH0gPSB7XG4gICAgICAgIE5hdjogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICB9ID0ge30sXG4gIH0gPSB1c2VDb25maWcoKVxuXG4gIHJldHVybiA8UmVuZGVyQ3VzdG9tQ29tcG9uZW50IEN1c3RvbUNvbXBvbmVudD17Q3VzdG9tTmF2fSBEZWZhdWx0Q29tcG9uZW50PXtEZWZhdWx0TmF2fSAvPlxufVxuIl0sIm5hbWVzIjpbIk5hdiIsImJhc2VDbGFzcyIsIkRlZmF1bHROYXYiLCJuYXZPcGVuIiwibmF2UmVmIiwic2V0TmF2T3BlbiIsInVzZU5hdiIsInBlcm1pc3Npb25zIiwidXNlciIsInVzZUF1dGgiLCJncm91cHMiLCJzZXRHcm91cHMiLCJ1c2VTdGF0ZSIsImkxOG4iLCJ1c2VUcmFuc2xhdGlvbiIsImFkbWluIiwiY29tcG9uZW50cyIsImFmdGVyTmF2TGlua3MiLCJiZWZvcmVOYXZMaW5rcyIsImNvbGxlY3Rpb25zIiwiZ2xvYmFscyIsInJvdXRlcyIsInVzZUNvbmZpZyIsInVzZUVmZmVjdCIsImdyb3VwTmF2SXRlbXMiLCJmaWx0ZXIiLCJoaWRkZW4iLCJtYXAiLCJjb2xsZWN0aW9uIiwiZW50aXR5VG9Hcm91cCIsImVudGl0eSIsInR5cGUiLCJFbnRpdHlUeXBlIiwiZ2xvYmFsIiwibGFuZ3VhZ2UiLCJhc2lkZSIsImNsYXNzTmFtZSIsIkJvb2xlYW4iLCJqb2luIiwiZGl2IiwicmVmIiwibmF2IiwiQXJyYXkiLCJpc0FycmF5IiwiQ29tcG9uZW50IiwiaSIsImtleSIsImVudGl0aWVzIiwibGFiZWwiLCJOYXZHcm91cCIsImVudGl0eUxhYmVsIiwiaHJlZiIsImlkIiwic2x1ZyIsImdldFRyYW5zbGF0aW9uIiwibGFiZWxzIiwicGx1cmFsIiwiTmF2TGluayIsImFjdGl2ZUNsYXNzTmFtZSIsInRhYkluZGV4IiwidW5kZWZpbmVkIiwidG8iLCJzcGFuIiwiQ2hldnJvbiIsImRpcmVjdGlvbiIsIkxvZ291dCIsImJ1dHRvbiIsIm9uQ2xpY2siLCJIYW1idXJnZXIiLCJpc0FjdGl2ZSIsIkN1c3RvbU5hdiIsIlJlbmRlckN1c3RvbUNvbXBvbmVudCIsIkN1c3RvbUNvbXBvbmVudCIsIkRlZmF1bHRDb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBOElhQTs7O2VBQUFBOzs7K0RBOUk4Qjs4QkFDWjtnQ0FDUDtnQ0FJTzsrQkFDVztnRUFDdEI7c0JBQ0k7d0JBQ0U7OEVBQ1E7MkJBQ1I7K0RBQ1A7aUVBQ0U7eUJBQ0U7UUFDaEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRVAsTUFBTUMsWUFBWTtBQUVsQixNQUFNQyxhQUF1QjtJQUMzQixNQUFNLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxVQUFVLEVBQUUsR0FBR0Ms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