From de6940352a2f708376219a89ec84a8e6d25ca59e Mon Sep 17 00:00:00 2001
From: Christoph Wurst \n "
+ + alias4(((helper = (helper = helpers.displayName || (depth0 != null ? depth0.displayName : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"displayName","hash":{},"data":data}) : helper)))
+ + "
+ {{displayName}} \n\t\t\t{{ t('settings', 'View in store')}} ↗\n\n\t\t\t{{ t('settings', 'Visit website') }} ↗\n\t\t\t{{ t('settings', 'Report a bug') }} ↗\n\n\t\t\t{{ t('settings', 'User documentation') }} ↗\n\t\t\t{{ t('settings', 'Admin documentation') }} ↗\n\t\t\t{{ t('settings', 'Developer documentation') }} ↗\n\t\t "+e+"');
+ row.data('name', data.name);
+ row.addClass(isExpired ? 'expired' : 'valid');
+ row.append($(' ').attr('title', data.organization).text(data.commonName));
+ row.append($(' ').attr('title', t('core,', 'Valid until {date}', {date: data.validTillString}))
+ .text(data.validTillString));
+ row.append($(' ').attr('title', data.issuerOrganization).text(data.issuer));
+ row.append($(' ').addClass('remove').append(
+ $(' ').attr({
+ alt: t('core', 'Delete'),
+ title: t('core', 'Delete'),
+ src: OC.imagePath('core', 'actions/delete.svg')
+ }).addClass('action')
+ ));
+
+ $('#sslCertificate tbody').append(row);
+ $('#sslCertificate').show();
+ },
+ fail: function () {
+ OC.Notification.showTemporary(
+ t('settings', 'An error occurred. Please upload an ASCII-encoded PEM certificate.'));
+ }
+ });
+
+ if ($('#sslCertificate > tbody > tr').length === 0) {
+ $('#sslCertificate').hide();
+ }
+});
diff --git a/apps/settings/js/federationscopemenu.js b/apps/settings/js/federationscopemenu.js
new file mode 100644
index 00000000000..29303258c98
--- /dev/null
+++ b/apps/settings/js/federationscopemenu.js
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) 2016
+ *
+ * This file is licensed under the Affero General Public License version 3
+ * or later.
+ *
+ * See the COPYING-README file.
+ *
+ */
+
+/* global OC, Handlebars */
+(function() {
+
+ /**
+ * Construct a new FederationScopeMenu instance
+ * @constructs FederationScopeMenu
+ * @memberof OC.Settings
+ */
+ var FederationScopeMenu = OC.Backbone.View.extend({
+ tagName: 'div',
+ className: 'federationScopeMenu popovermenu bubble menu menu-center',
+ field: undefined,
+ _scopes: undefined,
+
+ initialize: function(options) {
+ this.field = options.field;
+ this._scopes = [
+ {
+ name: 'private',
+ displayName: (this.field === 'avatar' || this.field === 'displayname') ? t('settings', 'Local') : t('settings', 'Private'),
+ tooltip: (this.field === 'avatar' || this.field === 'displayname') ? t('settings', 'Only visible to local users') : t('settings', 'Only visible to you'),
+ iconClass: 'icon-password',
+ active: false
+ },
+ {
+ name: 'contacts',
+ displayName: t('settings', 'Contacts'),
+ tooltip: t('settings', 'Visible to local users and to trusted servers'),
+ iconClass: 'icon-contacts-dark',
+ active: false
+ },
+ {
+ name: 'public',
+ displayName: t('settings', 'Public'),
+ tooltip: t('settings', 'Will be synced to a global and public address book'),
+ iconClass: 'icon-link',
+ active: false
+ }
+ ];
+ },
+
+ /**
+ * Current context
+ *
+ * @type OCA.Files.FileActionContext
+ */
+ _context: null,
+
+ events: {
+ 'click a.action': '_onSelectScope',
+ 'keydown a.action': '_onSelectScopeKeyboard'
+ },
+
+ /**
+ * Event handler whenever an action has been clicked within the menu
+ *
+ * @param {Object} event event object
+ */
+ _onSelectScope: function(event) {
+ var $target = $(event.currentTarget);
+ if (!$target.hasClass('menuitem')) {
+ $target = $target.closest('.menuitem');
+ }
+
+ this.trigger('select:scope', $target.data('action'));
+
+ OC.hideMenus();
+ },
+
+ _onSelectScopeKeyboard: function(event) {
+ if (event.keyCode === 13 || event.keyCode === 32) {
+ // Enter and space can be used to select a scope
+ event.preventDefault();
+ this._onSelectScope(event);
+ }
+ },
+
+ /**
+ * Renders the menu with the currently set items
+ */
+ render: function() {
+ this.$el.html(OC.Settings.Templates['federationscopemenu']({
+ items: this._scopes
+ }));
+ },
+
+ /**
+ * Displays the menu
+ */
+ show: function(context) {
+ this._context = context;
+ var currentlyActiveValue = $('#'+context.target.closest('form').id).find('input[type="hidden"]')[0].value;
+
+ for(var i in this._scopes) {
+ this._scopes[i].active = false;
+ }
+
+ switch (currentlyActiveValue) {
+ case "private":
+ this._scopes[0].active = true;
+ break;
+ case "contacts":
+ this._scopes[1].active = true;
+ break;
+ case "public":
+ this._scopes[2].active = true;
+ break;
+ }
+
+ this.render();
+ this.$el.removeClass('hidden');
+
+ OC.showMenu(null, this.$el);
+ }
+ });
+
+ OC.Settings = OC.Settings || {};
+ OC.Settings.FederationScopeMenu = FederationScopeMenu;
+
+})();
diff --git a/apps/settings/js/federationsettingsview.js b/apps/settings/js/federationsettingsview.js
new file mode 100644
index 00000000000..9cefaf132f2
--- /dev/null
+++ b/apps/settings/js/federationsettingsview.js
@@ -0,0 +1,228 @@
+/* global OC, result, _ */
+
+/**
+ * Copyright (c) 2016, Christoph Wurst
');
+ var levelTd = $(' ');
+ levelTd.text(OC.Log.levels[entry.level]);
+ row.append(levelTd);
+
+ var appTd = $(' ');
+ appTd.text(entry.app);
+ row.append(appTd);
+
+ var messageTd = $(' ');
+ messageTd.addClass('log-message');
+ messageTd.text(entry.message);
+ row.append(messageTd);
+
+ var timeTd = $(' ');
+ timeTd.addClass('date');
+ if (isNaN(entry.time)) {
+ timeTd.text(entry.time);
+ } else {
+ timeTd.text(formatDate(entry.time * 1000));
+ }
+ row.append(timeTd);
+
+ var userTd = $(' ');
+ userTd.text(entry.user);
+ row.append(userTd);
+
+ $('#log').append(row);
+ }
+ OC.Log.loaded += entries.length;
+ }
+};
+
+$(document).ready(function () {
+ $('#moreLog').click(function () {
+ OC.Log.getMore();
+ });
+ $('#lessLog').click(function () {
+ OC.Log.showLess();
+ });
+});
diff --git a/apps/settings/js/security_password.js b/apps/settings/js/security_password.js
new file mode 100644
index 00000000000..c23e60cfea6
--- /dev/null
+++ b/apps/settings/js/security_password.js
@@ -0,0 +1,86 @@
+/* global OC */
+
+/**
+ * Copyright (c) 2011, Robin Appelman ');
+ $cropperImage.css('opacity', 0); // prevent showing the unresized image
+ $cropper.children('.inner-container').prepend($cropperImage);
+
+ $cropperImage.attr('src',
+ OC.generateUrl('/avatar/tmp') + '?requesttoken=' + encodeURIComponent(OC.requestToken) + '#' + Math.floor(Math.random() * 1000));
+
+ $cropperImage.load(function () {
+ var img = $cropperImage.get()[0];
+ var selectSize = Math.min(img.width, img.height);
+ var offsetX = (img.width - selectSize) / 2;
+ var offsetY = (img.height - selectSize) / 2;
+ $cropperImage.Jcrop({
+ onChange: saveCoords,
+ onSelect: saveCoords,
+ aspectRatio: 1,
+ boxHeight: Math.min(500, $('#app-content').height() -100),
+ boxWidth: Math.min(500, $('#app-content').width()),
+ setSelect: [offsetX, offsetY, selectSize, selectSize]
+ }, function() {
+ $cropper.show();
+ });
+ });
+}
+
+function sendCropData () {
+ cleanCropper();
+
+ var cropperData = $('#cropper').data();
+ var data = {
+ x: cropperData.x,
+ y: cropperData.y,
+ w: cropperData.w,
+ h: cropperData.h
+ };
+ $.post(OC.generateUrl('/avatar/cropped'), {crop: data}, avatarResponseHandler);
+}
+
+function saveCoords (c) {
+ $('#cropper').data(c);
+}
+
+function cleanCropper () {
+ var $cropper = $('#cropper');
+ $('#displayavatar').show();
+ $cropper.hide();
+ $('.jcrop-holder').remove();
+ $('#cropper img').removeData('Jcrop').removeAttr('style').removeAttr('src');
+ $('#cropper img').remove();
+}
+
+function avatarResponseHandler (data) {
+ if (typeof data === 'string') {
+ data = JSON.parse(data);
+ }
+ var $warning = $('#avatarform .warning');
+ $warning.hide();
+ if (data.status === "success") {
+ $('#displayavatar .avatardiv').removeClass('icon-loading');
+ oc_userconfig.avatar.generated = false;
+ updateAvatar();
+ } else if (data.data === "notsquare") {
+ showAvatarCropper();
+ } else {
+ $warning.show();
+ $warning.text(data.data.message);
+ }
+}
+
+$(document).ready(function () {
+ if($('#pass2').length) {
+ $('#pass2').showPassword().keyup();
+ }
+
+ var showVerifyDialog = function(dialog, howToVerify, verificationCode) {
+ var dialogContent = dialog.children('.verification-dialog-content');
+ dialogContent.children(".explainVerification").text(howToVerify);
+ dialogContent.children(".verificationCode").text(verificationCode);
+ dialog.css('display', 'block');
+ };
+
+ $(".verify").click(function (event) {
+
+ event.stopPropagation();
+
+ var verify = $(this);
+ var indicator = $(this).children('img');
+ var accountId = indicator.attr('id');
+ var status = indicator.data('status');
+
+ var onlyVerificationCode = false;
+ if (parseInt(status) === 1) {
+ onlyVerificationCode = true;
+ }
+
+ if (indicator.hasClass('verify-action')) {
+ $.ajax(
+ OC.generateUrl('/settings/users/{account}/verify', {account: accountId}),
+ {
+ method: 'GET',
+ data: {onlyVerificationCode: onlyVerificationCode}
+ }
+ ).done(function (data) {
+ var dialog = verify.children('.verification-dialog');
+ showVerifyDialog($(dialog), data.msg, data.code);
+ indicator.attr('data-origin-title', t('settings', 'Verifying …'));
+ indicator.attr('src', OC.imagePath('core', 'actions/verifying.svg'));
+ indicator.data('status', '1');
+ });
+ }
+
+ });
+
+ // When the user clicks anywhere outside of the verification dialog we close it
+ $(document).click(function(event){
+ var element = event.target;
+ var isDialog = $(element).hasClass('verificationCode')
+ || $(element).hasClass('explainVerification')
+ || $(element).hasClass('verification-dialog-content')
+ || $(element).hasClass('verification-dialog');
+ if (!isDialog) {
+ $(document).find('.verification-dialog').css('display', 'none');
+ }
+ });
+
+
+ var userSettings = new OC.Settings.UserSettings();
+ var federationSettingsView = new OC.Settings.FederationSettingsView({
+ el: '#personal-settings',
+ config: userSettings
+ });
+
+ userSettings.on("sync", function() {
+ updateAvatar(false);
+ });
+ federationSettingsView.render();
+
+ var updateLanguage = function () {
+ if (OC.PasswordConfirmation.requiresPasswordConfirmation()) {
+ OC.PasswordConfirmation.requirePasswordConfirmation(updateLanguage);
+ return;
+ }
+
+ var selectedLang = $("#languageinput").val(),
+ user = OC.getCurrentUser();
+
+ $.ajax({
+ url: OC.linkToOCS('cloud/users', 2) + user['uid'],
+ method: 'PUT',
+ data: {
+ key: 'language',
+ value: selectedLang
+ },
+ success: function() {
+ location.reload();
+ },
+ fail: function() {
+ OC.Notification.showTemporary(t('settings', 'An error occurred while changing your language. Please reload the page and try again.'));
+ }
+ });
+ };
+ $("#languageinput").change(updateLanguage);
+
+ var updateLocale = function () {
+ if (OC.PasswordConfirmation.requiresPasswordConfirmation()) {
+ OC.PasswordConfirmation.requirePasswordConfirmation(updateLocale);
+ return;
+ }
+
+ var selectedLocale = $("#localeinput").val(),
+ user = OC.getCurrentUser();
+
+ $.ajax({
+ url: OC.linkToOCS('cloud/users', 2) + user['uid'],
+ method: 'PUT',
+ data: {
+ key: 'locale',
+ value: selectedLocale
+ },
+ success: function() {
+ moment.locale(selectedLocale);
+ },
+ fail: function() {
+ OC.Notification.showTemporary(t('settings', 'An error occurred while changing your locale. Please reload the page and try again.'));
+ }
+ });
+ };
+ $("#localeinput").change(updateLocale);
+
+ var uploadparms = {
+ pasteZone: null,
+ done: function (e, data) {
+ var response = data;
+ if (typeof data.result === 'string') {
+ response = JSON.parse(data.result);
+ } else if (data.result && data.result.length) {
+ // fetch response from iframe
+ response = JSON.parse(data.result[0].body.innerText);
+ } else {
+ response = data.result;
+ }
+ avatarResponseHandler(response);
+ },
+ submit: function(e, data) {
+ $('#displayavatar img').hide();
+ $('#displayavatar .avatardiv').addClass('icon-loading');
+ $('#uploadavatar').prop('disabled', true)
+ data.formData = _.extend(data.formData || {}, {
+ requesttoken: OC.requestToken
+ });
+ },
+ fail: function (e, data) {
+ $('#displayavatar .avatardiv').removeClass('icon-loading');
+ $('#uploadavatar').prop('disabled', false)
+ var msg = data.jqXHR.statusText + ' (' + data.jqXHR.status + ')';
+ if (!_.isUndefined(data.jqXHR.responseJSON) &&
+ !_.isUndefined(data.jqXHR.responseJSON.data) &&
+ !_.isUndefined(data.jqXHR.responseJSON.data.message)
+ ) {
+ msg = data.jqXHR.responseJSON.data.message;
+ }
+ avatarResponseHandler({
+ data: {
+ message: msg
+ }
+ });
+ }
+ };
+
+ $('#uploadavatar').fileupload(uploadparms);
+
+ $('#selectavatar').click(function () {
+ OC.dialogs.filepicker(
+ t('settings', "Select a profile picture"),
+ function (path) {
+ $('#displayavatar img').hide();
+ $('#displayavatar .avatardiv').addClass('icon-loading');
+ $('#uploadavatar').prop('disabled', true);
+ $.ajax({
+ type: "POST",
+ url: OC.generateUrl('/avatar/'),
+ data: { path: path }
+ }).done(avatarResponseHandler)
+ .fail(function(jqXHR) {
+ var msg = jqXHR.statusText + ' (' + jqXHR.status + ')';
+ if (!_.isUndefined(jqXHR.responseJSON) &&
+ !_.isUndefined(jqXHR.responseJSON.data) &&
+ !_.isUndefined(jqXHR.responseJSON.data.message)
+ ) {
+ msg = jqXHR.responseJSON.data.message;
+ }
+ avatarResponseHandler({
+ data: {
+ message: msg
+ }
+ });
+ });
+ },
+ false,
+ ["image/png", "image/jpeg"]
+ );
+ });
+
+ $('#removeavatar').click(function () {
+ $.ajax({
+ type: 'DELETE',
+ url: OC.generateUrl('/avatar/'),
+ success: function () {
+ oc_userconfig.avatar.generated = true;
+ updateAvatar(true);
+ }
+ });
+ });
+
+ $('#abortcropperbutton').click(function () {
+ $('#displayavatar .avatardiv').removeClass('icon-loading');
+ $('#displayavatar img').show();
+ $('#uploadavatar').prop('disabled', false);
+ cleanCropper();
+ });
+
+ $('#sendcropperbutton').click(function () {
+ sendCropData();
+ });
+
+ // Load the big avatar
+ var user = OC.getCurrentUser();
+ $('#avatarform .avatardiv').avatar(user.uid, 145, true, null, function() {
+ if($('#displayavatar img').length === 0 || oc_userconfig.avatar.generated) {
+ $('#removeavatar').removeClass('inlineblock').addClass('hidden');
+ } else {
+ $('#removeavatar').removeClass('hidden').addClass('inlineblock');
+ }
+ }, user.displayName);
+});
+
+window.setInterval(function() {
+ $('#localeexample-time').text(moment().format('LTS'));
+ $('#localeexample-date').text(moment().format('L'));
+ $('#localeexample-fdow').text(t('settings', 'Week starts on {fdow}',
+ {fdow: moment().weekday(0).format('dddd')}));
+
+}, 1000);
+
+OC.Settings.updateAvatar = updateAvatar;
diff --git a/apps/settings/js/templates.js b/apps/settings/js/templates.js
new file mode 100644
index 00000000000..94e44eebf55
--- /dev/null
+++ b/apps/settings/js/templates.js
@@ -0,0 +1,36 @@
+(function() {
+ var template = Handlebars.template, templates = OC.Settings.Templates = OC.Settings.Templates || {};
+templates['federationscopemenu'] = template({"1":function(container,depth0,helpers,partials,data) {
+ var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression;
+
+ return "
\n \n \n"
+ + ((stack1 = helpers.each.call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.items : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
+ + "
\n";
+},"useData":true});
+})();
\ No newline at end of file
diff --git a/apps/settings/js/templates/federationscopemenu.handlebars b/apps/settings/js/templates/federationscopemenu.handlebars
new file mode 100644
index 00000000000..4bd945b094d
--- /dev/null
+++ b/apps/settings/js/templates/federationscopemenu.handlebars
@@ -0,0 +1,17 @@
+
+ {{#each items}}
+
diff --git a/apps/settings/js/usersettings.js b/apps/settings/js/usersettings.js
new file mode 100644
index 00000000000..fcfe556b1d9
--- /dev/null
+++ b/apps/settings/js/usersettings.js
@@ -0,0 +1,50 @@
+/* global OC */
+
+/**
+ * Copyright (c) 2016, Christoph Wurst
+
+ \n\t\t
{{ bundle.name }}
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t \n\t\t\t\t\t{{ t('settings', 'Results from other categories') }}
\n\t\t\t\t\t\t{{ t('settings', 'No apps found for your version')}}
\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t{{ app.name }}
\n\t\t\n\t\t
\n\t\t\t
\n\n\t\t\n\t\t\t\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t
\n":"'+(n?e:u(e,!0))+"
"},o.prototype.blockquote=function(e){return""+(n?e:u(e,!0))+"
\n"+e+"
\n"},o.prototype.html=function(e){return e},o.prototype.heading=function(e,t,n,r){return this.options.headerIds?"
\n":"
\n"},o.prototype.list=function(e,t,n){var r=t?"ol":"ul";return"<"+r+(t&&1!==n?' start="'+n+'"':"")+">\n"+e+""+r+">\n"},o.prototype.listitem=function(e){return"\n\n"+e+"\n"+t+"
\n"},o.prototype.tablerow=function(e){return"\n"+e+" \n"},o.prototype.tablecell=function(e,t){var n=t.header?"th":"td";return(t.align?"<"+n+' align="'+t.align+'">':"<"+n+">")+e+""+n+">\n"},o.prototype.strong=function(e){return""+e+""},o.prototype.em=function(e){return""+e+""},o.prototype.codespan=function(e){return""+e+"
"},o.prototype.br=function(){return this.options.xhtml?"
":"
"},o.prototype.del=function(e){return""+e+""},o.prototype.link=function(e,t,n){if(null===(e=d(this.options.sanitize,this.options.baseUrl,e)))return n;var r='"+n+""},o.prototype.image=function(e,t,n){if(null===(e=d(this.options.sanitize,this.options.baseUrl,e)))return n;var r='":">"},o.prototype.text=function(e){return e},a.prototype.strong=a.prototype.em=a.prototype.codespan=a.prototype.del=a.prototype.text=function(e){return e},a.prototype.link=a.prototype.image=function(e,t,n){return""+n},a.prototype.br=function(){return""},l.parse=function(e,t){return new l(t).parse(e)},l.prototype.parse=function(e){this.inline=new s(e.links,this.options),this.inlineText=new s(e.links,b({},this.options,{renderer:new a})),this.tokens=e.reverse();for(var t="";this.next();)t+=this.tok();return t},l.prototype.next=function(){return this.token=this.tokens.pop(),this.token},l.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},l.prototype.parseText=function(){for(var e=this.token.text;"text"===this.peek().type;)e+="\n"+this.next().text;return this.inline.output(e)},l.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,p(this.inlineText.output(this.token.text)),this.slugger);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,t,n,r,i="",s="";for(n="",e=0;e
"+u(e.message+"",!0)+"";throw e}}m.exec=m,_.options=_.setOptions=function(e){return b(_.defaults,e),_},_.getDefaults=function(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:new o,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,xhtml:!1}},_.defaults=_.getDefaults(),_.Parser=l,_.parser=l.parse,_.Renderer=o,_.TextRenderer=a,_.Lexer=r,_.lexer=r.lex,_.InlineLexer=s,_.inlineLexer=s.output,_.Slugger=c,_.parse=_,e.exports=_}(this||"undefined"!=typeof window&&window)}).call(this,n(3))},73:function(e,t,n){e.exports=function(){"use strict";var e=Object.freeze||function(e){return e},t=e(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),n=e(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","audio","canvas","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","video","view","vkern"]),r=e(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),i=e(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover"]),s=e(["#text"]),o=Object.freeze||function(e){return e},a=o(["accept","action","align","alt","autocomplete","background","bgcolor","border","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","coords","crossorigin","datetime","default","dir","disabled","download","enctype","face","for","headers","height","hidden","high","href","hreflang","id","integrity","ismap","label","lang","list","loop","low","max","maxlength","media","method","min","minlength","multiple","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","type","usemap","valign","value","width","xmlns"]),l=o(["accent-height","accumulate","additive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","tabindex","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),c=o(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),u=o(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),p=Object.hasOwnProperty,h=Object.setPrototypeOf,d=("undefined"!=typeof Reflect&&Reflect).apply;function f(e,t){h&&h(e,null);for(var n=t.length;n--;){var r=t[n];if("string"==typeof r){var i=r.toLowerCase();i!==r&&(Object.isFrozen(t)||(t[n]=i),r=i)}e[r]=!0}return e}function g(e){var t={},n=void 0;for(n in e)d(p,e,[n])&&(t[n]=e[n]);return t}d||(d=function(e,t,n){return e.apply(t,n)});var m=Object.seal||function(e){return e},b=m(/\{\{[\s\S]*|[\s\S]*\}\}/gm),y=m(/<%[\s\S]*|[\s\S]*%>/gm),k=m(/^data-[\-\w.\u00B7-\uFFFF]/),v=m(/^aria-[\-\w]+$/),x=m(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),_=m(/^(?:\w+script|data):/i),w=m(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g),A="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function S(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t
p(f.top)||"bottom"===r&&p(c.top)
p(n.right),v=p(c.top)