LPS-49395 continue when element has no attributes

The diffs may contain comments, for which `element.getAttributes()` will
return `null` instead of an empty attribute collection.
LPS-49337 Using correct time zone for rendering rules
LPS-49337 Automatic SF
sync-engine-shared - Change file paths for children as well
sync-engine-shared - Check on create events only
sync-engine-shared - Reuse and make public
sync-engine-shared - Watcher holds a handle on folder for < 100 ms. Generally this isn't a problem but in a case on Windows, deleting a folder and it's empty subfolder will cause a DirectoryNotEmptyException on the parent since it's so quick. We can just stop watching the directory before deleting, which also reduces noise.
LRDOCS-1286 Markdown converter supports sidebar syntax
LPS-49339 Recurring events have their day and time calculated in the calendar booking time zone
LPS-49102 Calendar - Dragging and dropping event throws JSON error
LPS-49363 Link to Liferay document(relative url) is not working after importing to Outlook calendar
LPS-49363 SF
LPS-49068 add social request/activity interpreters

As of LPS-48245, Summary portlet includes its portletId in social
requests. This causes the Friends portlet request interpreter to ignore
friend requests comming from the Summary portlet. Add Friends social
interpreters to Summary portlet to make things work again.
SOS-2389 Increase to 70 charaters when truncating the notification body.
sync-engine-shared - Readd
LPS-49402 Make Alloy MVC permissioning easier to extend/override